Skip to main content
HR Easy exposes a remote MCP server (Streamable HTTP, stateless JSON) and acts as its own OAuth 2.1 authorization server. Any MCP client that implements the standard authorization flow — Claude, ChatGPT connectors, Cursor, n8n — can connect a person’s account. The connector is enabled per installation with FEATURE_MCP_CONNECTOR=true and the public origin in MCP_ISSUER_URL.

Endpoints

Rules a client must follow:
  • PKCE with S256 on every authorization request; plain is refused.
  • The resource parameter (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/mcp answers 401 with a WWW-Authenticate: Bearer challenge carrying the resource_metadata URL.

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.