FEATURE_MCP_CONNECTOR=true and the public origin in
MCP_ISSUER_URL.
Endpoints
Rules a client must follow:
- PKCE with
S256on every authorization request;plainis refused. - The
resourceparameter (RFC 8707) must equal the canonical MCP URL,<issuer>/api/mcp, on both the authorization and the token request. - Refresh tokens rotate on every use; reusing a rotated token revokes the whole token family.
- Dynamic registrations are public clients (
token_endpoint_auth_method: "none"); an installation may instead create a confidential client by hand and hand its id and secret to the assistant’s advanced settings. - Every unauthenticated call to
/api/mcpanswers401with aWWW-Authenticate: Bearerchallenge carrying theresource_metadataURL.
Scopes
A grant never widens: a refresh or a later consent carries at most the scopes
first approved. A person’s role is re-read from the database on every call, so
a role change or deactivation takes effect on the next request.
Limits and records
- 60 calls per minute per connection; the HR overview additionally 6 per hour.
- A daily allowance of distinct person records per connection (installation setting, default 1 000). Reads beyond it are refused until the next UTC day.
- Every list returns at most 50 rows; search at most 25.
- Every call writes an audit row: assistant, connection, tool, argument names (free text as length and hash only), the records touched, result count and outcome. A connection that touches 50 or more different people in a day is additionally recorded as an export.
Tool catalog
The catalog below is generated from the server’s tool registry (npm run gen:mcp-catalog); a drift check in CI keeps it identical to what
tools/list returns. Each tool declares its scope, the permission the role
must hold, MCP annotations (all Phase 2 tools are read-only, idempotent and
closed-world), and JSON Schemas for its arguments and its result.
mcp-tools.json
The machine-readable catalog: 18 tools with input and output schemas.
Every HR-scope tool description ends with the same sentence: never use this to
rank, score or compare people against each other. HR Easy does not support
rankings; see the product’s design principles.