1Designer anatomy

The Designer tab groups commands by their object type. Each object type appears as a card with its commands listed in a table. A stats strip across the top counts everything.

Designer Β· EntraID
πŸ“¦ 6 Object Types βš™ 38 Commands πŸ›  24 MCP-enabled + Add Object Type
πŸ“ User Β· 8 commands
+ Command
NameMethodPathMCP
get_userGET/users/{id}βœ“
list_usersGET/usersβœ“
create_userPOST/usersβœ“
update_userPATCH/users/{id}βœ“
delete_userDELETE/users/{id}β€”
πŸ“ Group Β· 5 commands
+ Command
NameMethodPathMCP
list_groupsGET/groupsβœ“
add_memberPOST/groups/{id}/membersβœ“
ElementPurpose
Stats stripObject Types / Commands / MCP-enabled count. Updates live as you add or remove.
Object-type panelOne card per resource (User, Group, Ticket, …). Holds a header (name + count) and a table of commands.
Command table rowClick to open the Enhanced Command Modal in edit mode. Right-click for Quick Test, Duplicate, Delete.
+ Add Object TypeTest id add-object-type-button. Opens the Create Object Type modal.
+ CommandTest id add-command-btn. Opens the Enhanced Command Modal in create mode for that object type.

2Add an object type

Step 2.1

Click + Add Object Type

The button on the Designer toolbar (test id add-object-type-button) opens the Create Object Type modal. Provide:

  • Name β€” singular noun: user, group, incident.
  • Display name β€” title-cased label shown in UIs and pickers.
  • Description β€” what this object represents in the source system.
  • Schema source β€” pick from the imported OpenAPI definitions, paste a JSON Schema, or start empty.

3Add a command

Step 3.1

Click + Command on an object type

Each object-type card has its own + Command button (test id add-command-btn, aria-label "Add command"). The Enhanced Command Modal opens with the object type pre-selected.

4Command modal β€” fields tour

TabWhat's there
BasicsName (id), display name, object type, HTTP method, path. Path placeholders use {name}.
ParametersAdd path / query / header / body parameters. Each has a name, type, required flag, default, and description.
BodyOptional template for the request body β€” e.g. JSON skeleton with {{ params.name }} placeholders.
MCPExpose this command as an MCP tool. See section 7.
TestQuick-Test panel: fill values, run, see response. Faster than opening the full Test System modal for a single command.

5Parameter badges

Each parameter row in the Parameters tab carries a badge that summarises its role. The badges are intentionally bright so you can scan the list and spot misconfiguration.

ParameterTypeInDefault
REQUIRED userPrincipalNamestringbodyβ€”
REQUIRED displayNamestringbodyβ€”
OPTIONAL mailNicknamestringbodyβ€”
AUTO tenantIdstringheader${env:TENANT_ID}
AUTO requestIduuidheaderuuid()
BadgeMeaning
REQUIREDCaller must supply a value. Workflows that omit it fail with a 400.
OPTIONALCaller may supply a value. If omitted, the upstream's default applies (or the field is left out entirely).
AUTOSet by the platform β€” env variable, secret, or a generated value (uuid, timestamp). Caller cannot override.

6Body templates

Step 6.1

When to use

For commands with non-trivial JSON bodies, the Body tab lets you paste a template that maps parameter values into the right structure:

{
  "accountEnabled": true,
  "displayName": "{{ params.displayName }}",
  "mailNickname": "{{ params.mailNickname | default(params.displayName | replace(' ','')) }}",
  "userPrincipalName": "{{ params.userPrincipalName }}",
  "passwordProfile": {
    "forceChangePasswordNextSignIn": true,
    "password": "{{ secret:initial_password }}"
  }
}

The template engine supports the same expression syntax as Orchestration Studio β€” pipe filters, defaults, conditionals.

7MCP config inside the command modal

The MCP tab inside the command modal is where you describe how the command should appear to AI agents that connect via MCP.

Fielddata-testidNotes
Enable as MCP toolmcp-enable-toggleMaster toggle. When off, the command is not exposed via MCP regardless of other settings.
Tool namemcp-tool-nameIdentifier the agent sees. Defaults to the command name; override when you want a more descriptive label.
Annotationsmcp-annotationsRead-only / destructive / idempotent flags so the agent knows what side effects to expect.
Delegation scopesmcp-delegation-scopesOAuth scopes required when invoked by a delegated agent. Empty = run as platform service.
AI use-whenmcp-use-whenPlain-English hint to the agent ("Use this when the user asks to onboard a new hire"). Improves tool selection.
Examplesmcp-examples-addPairs of (intent β†’ arguments) the agent can learn from.
Next-action hintmcp-next-actionSuggest the natural follow-up tool to call after this one succeeds.
πŸ› οΈ
MCP config interacts with the System-level toggle

Enabling a command's MCP tool only matters if System Details has the system flagged as an mcp-instance-provider. Otherwise the toggle is decorative.

8Schema Mapper

The Schema Mapper translates the system's native schema (e.g. EntraID's userPrincipalName) into EmpowerNow's canonical schema (e.g. email). Every command can map its output, and every command-modal Parameters tab can map its input.

Step 8.1

Open the Schema Mapper

Click πŸ—Ί Map schema on a command row, or use Ctrl + Shift + M from the command modal. The Schema Mapper opens with two side-by-side schemas: Source (the system's native fields) on the left, Canonical (EmpowerNow Person/Account/Group) on the right.

Schema Mapper Β· create_user
Source Β· EntraID User
userPrincipalNamestring
displayNamestring
mailstring
idguid
jobTitlestring
β†’
Canonical Β· Person
emailstring
full_namestring
email_primarystring
external_idstring
titlestring
Step 8.2

Two modes

  • Visual (default) β€” drag to draw mappings between fields; right-click a mapping for transform options (uppercase, default, jsonpath).
  • YAML β€” text view of the same mapping. Use for bulk edits or when you want to copy mappings between commands.

The mode toggle is at the top-right of the Mapper. The filter input (test id schema-mapper-filter) hides fields not matching your search.

9MCP Tools tab

The system editor's πŸ›  MCP Tools tab is the cross-system view of every MCP-enabled command on this system. Use it to audit and bulk-manage what your agents can call.

Elementdata-testidUse it for
Searchmcp-tools-searchFilter by tool name, command name, or annotation.
Filter by statusmcp-tools-filter-statusEnabled / Disabled / Misconfigured.
Tool rowmcp-tool-row-<name>Click to open the underlying command modal at the MCP tab.
Inline editmcp-tool-edit-<name>Open the MCP tab directly without going via the Designer.
Togglemcp-tool-toggle-<name>Enable / disable without opening any modal.

10Bulk enable / edit

Step 10.1

Select multiple tools

Tick the checkboxes on the left of each row. The bulk action bar appears at the top of the MCP Tools tab once any are selected.

Step 10.2

Bulk actions

  • Enable all / Disable all β€” flip many tools at once.
  • Edit annotations β€” open a small editor that applies the same annotation set to every selected tool.
  • Set delegation scopes β€” apply the same scopes to every selected tool.

Bulk operations require system-editor:command Β· edit on every selected row.

⚠️
Bulk edit overwrites existing annotations

The bulk edit replaces (not merges) the annotation set per tool. Confirm carefully β€” undo is per-tool.

11Fulfillment tab

Fulfillment connects EmpowerNow's canonical operations (create person, link account, deactivate) to the actual commands on the system. The platform reads this map when it needs to fulfill a high-level operation.

Step 11.1

Resource kinds & operations

The tab lists each resource kind the system supports (e.g. Person, Account, Group, Entitlement). For each, you map the standard operations: create, update, read, delete, list, link, unlink.

OperationMaps to commandNotes
create personcreate_userRequired for new-hire workflows.
update personupdate_userUsed by sync.
read personget_userLookups by id.
list personslist_usersUsed for full-tenant scans.
deactivate personupdate_user with {accountEnabled:false}Soft-delete pattern.
Step 11.2

Why it matters

Fulfillment is what lets canonical platform features ("offboard this person across all systems", "do an access review") work without the orchestration layer needing to know each system's specific verbs. Configure it once per system; the platform calls the right command automatically.

12Validate fulfillment & override

Step 12.1

Validation drawer

Press Ctrl + Shift + V (test id fulfillment-validate-button) to open the validation drawer. The drawer lists every resource kind with its operation coverage:

  • βœ“ Mapped β€” operation has a target command.
  • ⚠ Unmapped β€” operation has no target. The platform feature that uses it won't work for this system.
  • ✘ Broken β€” target command doesn't exist anymore (e.g. someone deleted it).

Click any row in the drawer to jump to the failing mapping.

Step 12.2

Override

Validation errors block save by default. The Override action (test id fulfillment-override-button, requires the system-editor:fulfillment Β· override permission) lets a privileged operator save anyway β€” for example, when a connector is being authored over multiple sessions and you want to commit partial work.

πŸ›‘
Override creates a known-broken state

Document the override and the planned follow-up in the system's description. Don't leave overridden systems in production.