Endpoint
Authentication
The server implements the MCP authorization specification, layered on OAuth 2.1 with Dynamic Client Registration (RFC 7591). A client that supports the spec can discover, register, and authorize itself with no manual credential exchange — you do not need to request a client ID from us, and we do not need to pre-register your harness.Discovery
The server exposes the two discovery documents the spec requires:
An unauthenticated request to the MCP endpoint returns
401 with a WWW-Authenticate header carrying the resource_metadata URL, so a compliant client can bootstrap the whole flow from the endpoint alone.
Authorization flow
A first-time connection follows the standard sequence:1
Discover
The client fetches the protected-resource metadata, follows it to the authorization server, and reads its metadata.
2
Register
The client registers itself dynamically and receives a client ID.
3
Authorize
The user is redirected to the Human Intelligence sign-in page and signs in as they normally would, then grants the client access.
4
Exchange
The client exchanges the authorization code for an access token and uses it as a bearer token on subsequent requests.
Tokens
Access tokens are JWTs. The server verifies each one against the authorization server’s published JWKS and checks that it is audience-bound to this resource — a token minted for a different resource, or for a different environment, is rejected rather than honored. Tokens are presented in theAuthorization header; the server does not accept credentials in query parameters.
Rejections that indicate a token problem — expired, malformed, wrong signing key, wrong audience — return 401, signalling the client to re-authenticate. Server-side faults return 5xx so clients don’t discard a valid token in response to an outage.
Sign-in uses whatever authentication your organization has configured in
Human Intelligence. Connecting an MCP client does not create a second set of
credentials or a separate identity to manage. See Security.
Transport and scaling
The server speaks Streamable HTTP, with MCP JSON-RPC requests sent overPOST.
It is stateless. No session identifier is issued and no server-side session state is retained between requests, so no sticky-session or session-affinity configuration is required on your side. Each request is independently authenticated and independently routable, which is what allows the server to scale horizontally behind a single endpoint.
Versioning
The tool contract is versioned, and you can pin to a specific version:0.5.0. Requesting the unversioned /mcp path routes to the current default version, which advances over time as new versions ship.
For interactive clients like Claude or Notion Agents, use the unversioned endpoint — you’ll pick up improvements automatically. For an internal agent harness where prompt behavior is tuned against a specific tool contract, pin the version so a server-side release doesn’t change tool descriptions or response shapes underneath your harness.
Identity and permissions
Every MCP session acts as a specific Human Intelligence user — the person who completed the authorization flow. There is no service account, no shared API key, and no ambient tenant-wide access. This has a consequence worth stating plainly to a security reviewer: connecting an AI tool does not widen anyone’s access. A user who cannot see compensation data in Human Intelligence cannot see it through an MCP client either, no matter what the client asks for. Enforcement happens server-side, not in the client or the model:- Row-level security restricts which rows a query can return, based on the access rules and organizational boundaries configured for that user’s roles.
- Category permissions restrict which metrics, dimensions, and segments are visible at all. Members the user isn’t permitted to see are not returned in schema responses, so a model cannot request what it cannot be shown.
- Governed definitions mean results reflect your organization’s own metric methodology rather than the model’s interpretation of a column name.
- Narrative policies, where your organization has configured them, are evaluated against the user’s intent before data tools run.
Results reflect the connected user’s access scope. When access rules have
limited what a query could see, the response says so, and the tool contract
instructs the client to describe the figures as scoped rather than as
org-wide.
Auditing
Tool calls are audited server-side, including the acting identity. Query activity surfaced through MCP is subject to the same audit trail as activity in the product — see Audit log.Available tools
The server exposes a small set of tools for discovering datasets, inspecting their schema and methodology, running governed analytical queries, and paging results. Some tools are registered conditionally, so the exact set a client sees depends on your organization’s configuration. See the tool reference for the full list and what each one does.Connecting a custom client
If you’re building your own harness, point any spec-compliant MCP client library at the endpoint and let it run the OAuth flow. Because registration is dynamic, there is no onboarding step on our side. To validate a connection before wiring it into your harness, the MCP Inspector is the fastest path: point it at the endpoint, complete the sign-in, and confirm thattools/list returns the expected tools and that whoami reports the identity you expect.