
Local-first credential broker: agents use gated APIs through scoped, audited requests, never keys.
Public tool metadata for what this MCP can expose to an agent.
broker_whoamiShow the authenticated agent and its per-credential operation grants.Show the authenticated agent and its per-credential operation grants.
No parameter schema in public metadata yet.
broker_list_credentialsGranted credentials: id, kind, base URL, provisioned or not. Never values.Granted credentials: id, kind, base URL, provisioned or not. Never values.
No parameter schema in public metadata yet.
broker_explain_requestDry run: would this request be permitted, which rule decides it, and is an approval required or satisfied? No upstream call, no secret touched.Dry run: would this request be permitted, which rule decides it, and is an approval required or satisfied? No upstream call, no secret touched.
No parameter schema in public metadata yet.
broker_readGET or HEAD through a granted credential. Honestly annotated read-only.GET or HEAD through a granted credential. Honestly annotated read-only.
No parameter schema in public metadata yet.
broker_mutatePOST, PUT, PATCH, or DELETE. Annotated destructive and non-idempotent, because its strongest capability is. May require an approval and an idempotency key.POST, PUT, PATCH, or DELETE. Annotated destructive and non-idempotent, because its strongest capability is. May require an approval and an idempotency key.
No parameter schema in public metadata yet.
broker_request_credentialOpt-in (`BROKER_ALLOW_KEY_REQUESTS=1`). Asks the operator for a key by opening the key manager pre-filled. The agent never sees the page, the token or the key.Opt-in (`BROKER_ALLOW_KEY_REQUESTS=1`). Asks the operator for a key by opening the key manager pre-filled. The agent never sees the page, the token or the key.
No parameter schema in public metadata yet.
Sponsors
BROKER_AGENT_ID*Which agent identity this process is. Must be provisioned in the policy file.
BROKER_POLICY_FILEPath to the policy YAML (version 2). Defaults to config/broker.yaml.
BROKER_AUDIT_FILEPath to the content-free audit log. Defaults to data/audit.jsonl.
BROKER_APPROVALS_FILEPath to the approvals file. Defaults to config/approvals.json.
BROKER_HOT_RELOADSet to 1 to pick up key manager changes without a restart. Off by default.
BROKER_ALLOW_KEY_REQUESTSSet to 1 to let this agent ask the operator for a key through the key manager. Off by default.
A local-first MCP server that lets AI agents use gated APIs without ever holding the keys.
The agent asks the broker to make a request. The broker canonicalises the URL, checks a declarative per-operation policy, verifies any required approval at execution time, injects the secret at the last moment, calls the upstream, redacts and filters the response, and writes a content-free audit record. The secret lives with the broker process and is never relayed to the agent in any representation the broker creates: raw, hex, Base64, base64url, percent-encoded, form-encoded, or Unicode-normalised. An upstream that transforms a secret with a one-way function of its own defeats string matching; scoped operations and metadata-only responses are the defence there, and SECURITY.md states this boundary honestly.
@sarutobi-sasuke/credential-broker-mcp