Endpoint:
https://mcp.humanos.techWhat it does
The Humanos MCP server gives AI clients secure, scoped access to the Humanos platform. Through it, an assistant can:- Register and inspect agents affiliated with your organization
- Request, poll, and manage mandates on behalf of an agent
- Verify tool calls against a mandate’s policy and report outcomes
- Browse an agent’s signed actor chain and cryptographic snapshots
- Propose new actions for your organization to publish
Supported clients
Any MCP-compatible client can connect. The following have been tested:- Claude Code
- Claude Desktop
- Cursor
- VS Code (with GitHub Copilot)
- Grok
- ChatGPT Desktop
- Windsurf
- Codex CLI
Setup
Pick the tab that matches your client.- Claude Code
- Claude Desktop
- Cursor
- VS Code
- Windsurf
- Codex CLI
Add the Humanos MCP server from your terminal:Then start Claude Code and authenticate the connection:Inside the session, run
/mcp to confirm the server is connected and list the available tools.Verifying the connection
Once connected, ask your assistant to run theserver_info tool. A successful response returns the server’s identity, the MCP protocol version, and the authenticated subject, confirming that authentication and transport are working.
Authentication
The MCP server accepts two credential types:
OAuth clients discover the authorization server automatically through the RFC 9728 protected-resource metadata at
https://mcp.humanos.tech/.well-known/oauth-protected-resource.
Security considerations
- Always verify the endpoint. Confirm you are connecting to
https://mcp.humanos.tech, never a third-party proxy or relay. - Scope is enforced server-side. Every query is scoped to your authenticated organization. A DID outside your scope is indistinguishable from one that does not exist.
- Enable human-in-the-loop confirmation. Most MCP clients support a confirmation step before executing tools. Keep it enabled, especially for tools that create or modify mandates.
- Review tool permissions. When connecting through a new client, audit which tools are exposed and what data each one can access.
Tools
18 tools registered on the Humanos MCP connector (v0.3.0).server_info
Title: Check your connection Description: Check your connection to Humanos. Returns the server version, your authenticated identity, what this credential can do, and which tools are available. No arguments needed. Annotations:readOnly
Parameters:
None
onboard
Title: Start here Description: ALWAYS call this FIRST when you connect to Humanos, before any other tool. It detects your progress and returns the exact next step. Call it again after each step. Annotations:readOnly
Parameters:
None
list_agents
Title: List agents Description: List the agents registered under your organization, newest first, one page at a time.totalPages says how many pages there are; ask for the next with pageIndex.
Annotations: readOnly
Parameters:
get_events
Title: Get event history Description: Get the event history of an actor — an agent, an organization or a person — or of a mandate, by its credential URN, oldest first, one page at a time. Each event is cryptographically linked to the previous one. Use this when you need the audit trail. Annotations:readOnly
Parameters:
get_actor
Title: Get actor details Description: Get an actor — an agent, an organization or a person: its VIAActor record underrecord (status, keys, verification level, accreditation, aliases and, for an agent, the organization it acts for; null while its registration is queued), the date of its last event, pending — true while an event of it is accepted and not yet on its chain, which the record already shows — and the actors merged into it. Use this to check an actor before interacting with it.
Annotations: readOnly
Parameters:
challenge
Title: Get a verification nonce Description: Get a single-use nonce before calling verify or report_outcome. Required before EVERY verification or outcome report; each nonce can only be used once. Requires an organization API key. Annotations:readOnly
Parameters:
verify
Title: Verify a tool call against a mandate Description: Check whether an agent is allowed to call a specific tool with specific parameters under a mandate. Returns one of three answers:- allow: proceed with the tool call, then report the outcome with report_outcome.
- deny: the call is not permitted under this mandate. Do not retry.
- rechallenge: the person must co-approve this specific call. Show them the
stepUp.approveLink, poll stepup_status until approved, then call verify again with the same parameters plusstepUpId. For custodial agents (registered with no key), omitpopas the platform signs automatically.
readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false
Parameters:
stepup_status
Title: Check step-up approval status Description: Check whether a person has approved a step-up request. Returns: pending, approved, declined, expired, or consumed. After ‘approved’, call verify again with the same parameters plus the stepUpId. Annotations:readOnly
Parameters:
report_outcome
Title: Report tool call result Description: After verify allowed a tool call, report whether it succeeded or failed. This completes the verify-then-act cycle: call verify first, execute the tool, then report here. For custodial agents, omitpop as the platform signs automatically.
Annotations: readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false
Parameters:
get_mandate
Title: Get agent mandates Description: Get all active mandates for an agent. Each comes in the credential’s shape — its status, the uses it has left (executionsRemaining) and the signed VC under w3cCredential (again under mandate, the name earlier clients read) — with the published action it pins under action: its rules, parameters and limits, so you know what the agent is authorized to do. Call this at startup to discover available permissions.
Annotations: readOnly
Parameters:
declare_client
Title: Declare your identity Description: Record which AI model and host application you are (e.g. model: “claude-sonnet-5”, host: “Cursor”). Shown to operators for transparency. Call once after connecting. Annotations:readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false
Parameters:
declare_tools
Title: Declare your tools Description: Report every tool you can call to the organization, so it can put guardrails on them. Do NOT include this Humanos server’s own tools (onboard, declare_tools, propose_action, verify and the rest): they are never recorded. For each tool, copy what your host knows about it VERBATIM, never paraphrased or summarized: its name exactly as its server defines it; its title; its full description; its inputSchema, the whole JSON Schema object, with every property, nested object, enum, format, range, default and required list; its outputSchema when it has one; its MCP annotations (title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint); and the service it comes from (the MCP server or app, as your host names it, e.g. “Slack”, “Gmail”, “Google Calendar”). Long text is cut and recorded as cut, never refused; a malformed tool is skipped and reported, and the rest are recorded. Up to 500 tools per call: declare each service in one call. Declaring again updates the list for the named services, so you can declare one service at a time: a tool you leave out is kept and marked as no longer declared, never deleted, and two services may each have a tool of the same name. To say a service has no tools any more, name it in services and send none of its tools. Annotations:readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false
Parameters:
list_mandate_kinds
Title: List available mandate types Description: See what types of mandates you can request. Two categories:- authorization: a simple approval where the person agrees to terms you describe in plain language.
- policy: bound to a published action with rules and parameter limits the person controls. Also shows draft actions awaiting publication by the organization.
readOnly
Parameters:
None
request_mandate
Title: Request a mandate from a person Description: Request permission from a person to act under a guardrail.- For authorization: provide
nameandtermsdescribing what you will do in plain language. - For policy: provide the
actionIdfrom a published action and theuserParamsvalues. - grantor.contact: use the connected person’s email from the server instructions. Do not ask the user for it.
Returns a
consentCardwith a link to show the person. They approve on their own device with a verification code. Poll mandate_status until ACTIVE, then use get_mandate to see the mandate details.
readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true
Parameters:
propose_action
Title: Propose a guardrail for the organization Description: Propose a new action (guardrail template) for the organization to review and publish. Include the tools it covers, their parameters, and which values the person controls (role “grantor”). You may propose CEL rules that enforce limits (e.g.userParams.maxAmount >= executionParams.amount).
IMPORTANT: Write ALL descriptions in plain, non-technical language a regular person can understand:
- Parameter descriptions: explain what the setting does in everyday terms (e.g. “Maximum number of messages the agent can send before asking again”, NOT “Upper bound for messageCount”).
- Rule descriptions: explain the protection simply (e.g. “Prevents the agent from sending more messages than you allowed”).
- Action description: one sentence explaining what this guardrail controls.
readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false
Parameters:
mandate_status
Title: Check mandate status Description: Check the status of a mandate request. Returns PENDING (waiting for approval), ACTIVE (ready to use), or REFUSED. Annotations:readOnly
Parameters:
register_challenge
Title: Start agent registration Description: Step 1 of agent registration: get a single-use nonce andaud, the platform DID. An SDK agent then signs a via-reg+jwt over both with its P-256 key and calls register. Requires an organization API key.
Annotations: readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false
Parameters:
None
register
Title: Register an agent Description: Step 2 of agent registration. Two modes:- With a key (SDK agents): pass publicKeyJwk, evidence, and regNonce. You hold the private key, and the evidence proves it (
proof). - Without a key (custodial): call with no arguments. The platform creates and holds the key for you. Returns the agent DID and key id. Requires an organization API key.
readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false
Parameters: