Skip to main content
Glama
midPoint MCP Server

midPoint MCP Server

Request role

request_role

Request a role for yourself or a direct report by submitting an assignment request; midPoint policy decides whether to open an approval case or execute immediately.

Instructions

Request a role for yourself or a report. Submits an assignment-add delta; midPoint policy decides whether that opens an approval case or executes immediately — so by default this refuses roles that midPoint's catalog does not flag requestable (see list_requestable_roles), because for those it would grant rather than request. Use assign_role for a deliberate grant. The requester is always the authenticated user. userName and roleName are the midPoint names (the unique name attribute, such as a login, not display names) of the objects the OIDs point to, as list and get results give them; the call is refused when they don't match, so the person confirming it reads the right names. Respects the write gate. When you write to a person, name people, roles and requests by their display names rather than OIDs.

Input Schema

NameRequiredDescriptionDefault
fieldsNothe request's fields: values keyed by the names in list_requestable_roles form.items (its Request form fields); a list for a multiple field, an option value for a choice. midPoint decides on submit who must fill what
roleOidYesOID of the role to request
userOidNoOID of the user the role is for; defaults to the authenticated user (self-service)
validToNoend in RFC 3339 with offset; after the start and in the future
relationNothe relation to request: default (member, when left out), or one list_requestable_roles offers for this role, such as approver or owner
roleNameYesthe role's midPoint name (its unique name attribute, not the display name); must match roleOid
userNameNothe user's midPoint name (their login, not the full name); required with userOid and must match it
validFromNoinclusive start in RFC 3339 with offset; no earlier than today

Output Schema

NameRequiredDescriptionDefault
bodyNothe JSON body of the midPoint REST request, when it has one
toolYesthe tool that produced this result
actingYeswho midPoint executed this call as
dryRunYes
methodYes
resultNo
serverYeswrite gate, features and versions of this server
appliedYes
requestYes
summaryYes
endpointYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full burden and does so: it discloses that the outcome is policy-dependent (approval case vs immediate execution), that non-requestable roles are refused to avoid accidental grants, that the requester is always the authenticated user, that name/OID mismatches cause refusal, and that a write gate applies. That is exactly the behavioral context an agent needs for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the policy caveat before any caveats about naming. The middle clause ("so by default this refuses roles ... because for those it would grant rather than request") is dense and takes a second read, and the trailing display-name sentence reads as a general convention rather than tool-specific instruction, costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with a nested fields object and no annotations, the description covers the decisive unknowns: policy-driven async approval versus immediate execution, the requestable-role restriction, identity of the requester, and the name-matching contract. An output schema exists, so return values need not be described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains that roleName/userName are midPoint unique names rather than display names, must match their OIDs, and that the call is refused on mismatch so the confirming human reads the right names. The display-name-over-OID convention for writes is also extra guidance not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Request a role for yourself or a report") and immediately explains the underlying mechanics ("Submits an assignment-add delta; midPoint policy decides whether that opens an approval case or executes immediately"). It explicitly contrasts itself with the sibling assign_role, so an agent can separate the two without reading either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not: by default it refuses roles the catalog does not flag requestable, with a named alternative for the deliberate-grant path (assign_role) and a pointer to list_requestable_roles for discovering valid targets. It also names the preconditions (write gate, authenticated user as requester) an agent must satisfy before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.