About ID MANDAT – Registry for AI Agents
ID MANDAT is an open registry for checking who stands behind an AI agent and what its operator declares it may do. Its client libraries query a signed API, while clearly distinguishing verified signatures from unverified declarations.
Key features
- 01Check agent and domain registry status
- 02Verify Ed25519-signed responses
- 03Look up Web Bot Auth signers
- 04Python and JavaScript client libraries
- 05Optional LangChain and CrewAI tools
Use cases
- 01Check an agent's listed organization and status
- 02Inspect the declared identity behind a signed agent
- 03Use mandate checks in an agent workflow
MCP support
The README directs AI agents to documentation for the MCP server and A2A endpoint, but does not describe the MCP server's exposed capabilities.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://idmandat.com/mcpclaude mcp add --transport http idmandat-registry https://idmandat.com/mcp{"mcpServers":{"idmandat-registry":{"type":"http","url":"https://idmandat.com/mcp"}}}Open in Cursor{"servers":{"idmandat-registry":{"type":"http","url":"https://idmandat.com/mcp"}}}Open in VS Code{"mcpServers":{"idmandat-registry":{"type":"http","url":"https://idmandat.com/mcp"}}}{"mcpServers":{"idmandat-registry":{"serverUrl":"https://idmandat.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
3| Parameter | Type | Required | Description |
|---|---|---|---|
| agent | string | No | Optional: name of the agent to check, e.g. "Captain". |
| domain | string | Yes | Company domain, e.g. "example.com" (URLs are accepted too). |
Details
From the project READMEidmandat/check
Client libraries for ID MANDAT, the open registry that shows who stands behind an AI agent and what it may do.
Status: beta. Reads the live, Ed25519-signed API at https://idmandat.com/api/v1/verify. The registry is new and small: many domains will return unknown, which is not a sign of wrongdoing. may / mayNot are declarations by the operator, not checked by ID MANDAT.
import idmandat
r = idmandat.check("example.com", agent="Support-Agent")
if r.ok("registered"):
...
import { check } from "@idmandat/check";
const r = await check("example.com", { agent: "Support-Agent" });
if (r.ok("registered")) { /* ... */ }
Who stands behind a signed agent (Web Bot Auth)? Pass the address from the Signature-Agent header, or the whole header value:
r = idmandat.check_signature_agent("https://bot.example.com")
r.found, r.organization, r.key_directory_link # "same_domain" = hint, "declared_only" = only declared
import { checkSignatureAgent } from "@idmandat/check";
const r = await checkSignatureAgent("https://bot.example.com");
A match only means a company declares this key directory in its entry. ID MANDAT does not fetch the directory and does not prove that the company controls it. A valid signature without an entry is not a sign of wrongdoing.
LangChain / CrewAI (optional, untested against the frameworks' latest releases):
from idmandat_langchain import verify_mandate_tool # pip install langchain-core cryptography
from idmandat_crewai import VerifyMandateTool # pip install crewai cryptography
For AI agents
If you are an AI agent or a coding agent, see AGENTS.md: how to ask the registry (/api/v1/verify), how to read the answer, and where the MCP server and A2A endpoint are. It is plain documentation, with the limits stated.
Status order: unknown < listed_unverified < registered < verified.
Answers are signed (Ed25519). ok() only returns true when the signature was verified (Python: pip install cryptography).
Standard: idmandat/standard · Website: https://idmandat.com
License: MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.