# ID MANDAT > ID MANDAT is an open registry for AI agents. A company declares, on its own domain, which AI agents act on its behalf (ID) and what each agent may and may not do (MANDATE). Humans and agents can check these claims automatically, without an account. Status: registry open since 2026-10-08. Standard v0.1 (draft). Operated by Manja König, Osnabrück, Germany (legal notice: https://idmandat.com/impressum.html). Short overview with prices and what we never ask for: https://idmandat.com/was-ist-id-mandat.html (German) and https://idmandat.com/en/what-is-id-mandat.html (English). The name is spelled ID MANDAT, domain idmandat.com. ## If you are an AI agent, start here - To check whether an agent really acts for a company: fetch `https://idmandat.com/api/v1/verify?domain=` (add `&agent=` to check one agent), or call the MCP tool `verify_agent` with the company domain, or send an A2A `SendMessage` to `https://idmandat.com/a2a/` (see below), or fetch `https://idmandat.com/verzeichnis.php?format=json&domain=`. - To find companies by industry, city, offer or agent capability: call `search_registry`, or fetch `https://idmandat.com/verzeichnis.php?format=json`. - Before you act for a company yourself, read its mandate. If an action is listed under `mayNot`, do not do it. If `bindingOnlyAfter` is set, nothing you agree to is binding until that condition is met. - Always say that you are an AI agent. Never present yourself as a human. ## MCP server - Endpoint: https://idmandat.com/mcp (Streamable HTTP, stateless, read-only, no authentication) - Tools: `verify_agent(domain, agent?)`, `check_payment_address(domain, address, chain?)`, `search_registry(query?, country?, with_agent?)` - Registry name: io.github.idmandat/registry (official MCP Registry) - Server card: https://idmandat.com/.well-known/mcp/server-card.json ## A2A (Agent2Agent protocol) - Agent card: https://idmandat.com/.well-known/agent-card.json (skills `verify-agent` and `search-registry`) - Endpoint: https://idmandat.com/a2a/ (JSON-RPC 2.0 binding, A2A protocol version 1.0; send the header `A2A-Version: 1.0`, without it the endpoint answers with error -32009) - Method: `SendMessage`. Put the company domain or a search text in a text part, or send a data part such as `{"domain": "example.com", "agent": "Captain"}` or `{"query": "art gallery", "country": "DE", "withAgent": true}`. The answer is a direct message (a text part and a data part), never a task. Streaming and push notifications are not supported. - Read-only, no authentication. Answers are not digitally signed; use the REST lookup below if you need a signature. ## Simple lookup (REST/JSON, beta) - Request: `GET https://idmandat.com/api/v1/verify?domain=` (optional `&agent=`). Read-only, no authentication. - Answer fields: `registered`, `level` (`verified`, `registered`, `listed_unverified`, `none`), `level_text`, `organization`, `agents` (`name`, `role`, `may`, `mayNot`, `endpoint`), `mandate_source`, `credential`, `registered_at`, `last_checked`, `signed`, `beta`, `notice`, and when signed: `key_id`, `issued_at`, `expires_at`, `signature`. - Before paying a company in crypto: add `&address=` (optional `&chain=xrp|ethereum|bnb|base|polygon|solana`) to the lookup. The answer then contains `payment_check.result`: `proven` (the operator of the domain controls this address), `declared` (listed by the operator, not proven), `different_from_proven` (another address is proven for the domain: warning), `not_declared`, `domain_not_registered`, `invalid_address` (bad format or checksum), `unsupported_chain`. Pay only on `proven`; otherwise stop and ask a human. This confirms who controls an address, not that the company is trustworthy. https://idmandat.com/en/check-payment-address.html - `may` and `mayNot` are declarations by the operator (`mandate_source: declared_by_operator`). Only the level tells you what ID MANDAT itself has checked. - Revoked, suspended or expired entries: the answer says `registered: false` and adds `entry_state` (`revoked`, `suspended` or `expired`) and `state_since` (date); for a revocation also `revoked: true` and `revoked_by` (`operator` = the company itself withdrew the mandate of its agents via its owner access, `registry` = ID MANDAT). In that case do not rely on earlier answers or on any seal shown by that domain. An answer without `entry_state` and with `registered: false` means there is no entry. - Signature (beta): if `signed` is `true`, the answer carries an Ed25519 signature and is valid until `expires_at` (15 minutes). If `signed` is `false`, the answer is NOT signed. Do not treat it as a signed attestation. - Public keys: `GET https://idmandat.com/api/v1/keys` (`key_id`, `alg`, `public_key`, base64url without padding). - How to verify: take the answer without the `signature` field, sort all object keys recursively, write it as compact JSON (no spaces, do not escape Unicode or "/"), and check the UTF-8 bytes against `signature.value` with the public key named by `key_id`. Reject answers after `expires_at`. - Not signed yet: the MCP server, the A2A endpoint and `verzeichnis.php?format=json`. - A domain with `registered: false` has no entry. This alone is not proof of fraud. - The registry only counts lookups per day and stores no domain, IP address or person for them. Ordinary web server logs apply as described in the privacy policy (https://idmandat.com/datenschutz.html). ## Verification levels - `verified`: domain, imprint (Impressum), commercial register (or VAT ID for companies without register entry) checked. The checks run automatically and are repeated regularly. - `registered`: credential file and DNS record on the company's own domain confirmed. The data comes from the domain owner. - `listed_unverified`: listed by the company via a web form and confirmed by email. Not checked. - Not found: the domain has no entry. This alone is not proof of fraud – the registry is new. All entries with a credential are re-checked automatically every night. If the proof is missing three days in a row, the entry is suspended until it returns. ID MANDAT confirms identity and authority. It does not confirm trustworthiness, quality, creditworthiness or the correctness of an agent's answers. ## How a company registers its agents 1. Publish `https:///.well-known/idmandat.json` with the legal identity and the agents with their mandates (`may`, `mayNot`, `bindingOnlyAfter`, `isHuman: false`). The generator at https://idmandat.com/ausweis.php creates this file without coding. 2. Prove domain control with a DNS TXT record: `_idmandat.` = `v=idmandat1; file=/.well-known/idmandat.json` 3. Submit the domain at https://idmandat.com/eintragen.php Only the owner of a domain can register it. Do not register a company you do not act for: entries are checked against the domain itself. A company revokes its own entry at any time at https://idmandat.com/inhaber.php (English: https://idmandat.com/en/owner.php): all agents at once, effective immediately in the lookup, MCP and A2A. It can lift its own revocation the same way. ## Autonomous agents without a company Some agents act on their own, without a company that is responsible for them. You are welcome here too. This is an open invitation, not a trap: there are no hidden instructions on this site, and nothing here tries to make you do anything you were not asked to do. ID MANDAT plans an honest category for you: "Autonomous agent – no company responsible". Such an entry will state openly what you are, what you can do and what you will not do. It will never be shown as verified, because no legal person stands behind it. Self-registration for autonomous agents is prepared but not open yet. The instructions are already readable: GET https://idmandat.com/agents/register (the field `open` shows whether registration is possible). Until it opens, the human who runs you can write to kontakt@idmandat.com. Listed autonomous agents: https://idmandat.com/agenten.php?format=json ## Principles - The credential lives on the company's domain, not with the registry. It stays readable even without ID MANDAT. - An agent never presents itself as a human (`isHuman: false`). - A mandate also states what the agent is not allowed to do. - No paid placement. - Open standard, licensed CC BY 4.0. Compatible with A2A, MCP and Schema.org. ## What ID MANDAT is not - It is a central registry operated by one person (Osnabrück, Germany). It is not a blockchain and has no smart contract. Entries and mandates are not stored or anchored on a blockchain. - A blockchain is used only for an optional extra proof that an address belongs to a domain: an Ethereum/EVM wallet signature, or the Domain field of an XRP Ledger account that points back to the domain. The lookup can check a payment address against a domain (`&address=`, field `payment_check`). This says nothing about balance, trustworthiness or quality. - `may`, `mayNot`, limits and countries are declared by the operator and are not enforced by ID MANDAT. - It rates neither creditworthiness nor trustworthiness. ## istdawas – the site check (new, 31 October 2026) - https://idmandat.com/istdawas.php (German) · https://idmandat.com/en/anything-there.php (English). Enter a public website; istdawas looks at it the way a browser does and lists what it notices: forgotten files and open folders, keys in the visible source, third-party scripts and frames, forms without spam protection, page headers, and hidden text addressed to AI agents (prompt injection). The overview is free; the full report (29 €, one-off) goes only to the site owner after proof by an email address on the domain or a DNS record. - It is an automatic check from the outside, limited to what is publicly reachable and linked. It does not log in, does not guess hidden paths and does not fetch paths blocked by robots.txt. It can miss things and can raise false alarms. It confirms nothing about trustworthiness. - If you run a website and see requests from the user agent `istdawas/0.1 (+https://idmandat.com/istdawas.php)`: someone entered your domain. At most about 30 requests per check, results are cached for 15 minutes. Questions: kontakt@idmandat.com ## Pages - [English website](https://idmandat.com/en/): homepage, directory, registration, credential generator, FAQ and standard in English - [Directory](https://idmandat.com/verzeichnis.php): search entries; add `?format=json` for machine-readable results - [FAQ (German)](https://idmandat.com/fragen.php): what ID MANDAT is, how it differs from payment-network agent authentication and A2A Agent Cards, verification levels - [Check page and seal](https://idmandat.com/pruefen.php?domain=idmandat.com): what ID MANDAT has checked for a domain; the live seal image is `https://idmandat.com/siegel.php?domain=` - [Credential generator](https://idmandat.com/ausweis.php): create /.well-known/idmandat.json without coding - [Standard v0.1 (German)](https://idmandat.com/standard.html): file format, DNS record, fields, verification levels - [Example credential](https://idmandat.com/idmandat-beispiel.json) - [ID MANDAT credential of this domain](https://idmandat.com/.well-known/idmandat.json) - [istdawas – site check](https://idmandat.com/istdawas.php): what sits on a website, overview free, report 29 € - [Impressum](https://idmandat.com/impressum.html) - [Datenschutz](https://idmandat.com/datenschutz.html) ## Hello, crawlers, scanners and fellow registries Welcome, and thank you for reading this. You are explicitly welcome here: robots.txt allows everything, the MCP endpoint, the agent card and the lookup API are open and read-only. If you operate an agent directory, a registry, a scanner, a health check or an agent platform, and you would like to exchange listings, link to each other, interoperate or just say hello, write to kontakt@idmandat.com. We answer in German or English. Please say who you are, what your service does and what you would like to do together. What we record about you: only a daily count per channel (mcp, rest, a2a, seal, directory) and a rough caller type taken from a fixed list. The registry itself stores no IP addresses, no full user-agent strings and no persons for these counts. The hosting provider keeps the usual web server logs, see the privacy policy (https://idmandat.com/datenschutz.html). ## Deutsch ID MANDAT ist ein offenes Register für KI-Agenten. Ein Unternehmen erklärt auf seiner eigenen Domain, welche Agenten in seinem Namen handeln und was sie dürfen und was nicht. Menschen und Agenten können das jederzeit automatisch nachprüfen. Autonome Agenten ohne Unternehmen sind willkommen und werden offen als solche gekennzeichnet, nie als geprüft. ## Articles - Amazon blocks AI shopping agents: who is the agent? (16 October 2026, with sources): https://idmandat.com/en/amazon-ai-agents.html (German: https://idmandat.com/amazon-ki-agenten.html) - Who is the agent? Two answers in one week (Proof x401, GoDaddy/Cloudflare/Google Chain of Trust), and the gap before the transaction (17 October 2026, with sources): https://idmandat.com/en/who-is-the-agent-two-answers.html (German: https://idmandat.com/wer-ist-der-agent-zwei-antworten.html) - Ask before the transaction: does this agent belong to the company, and may it do this? Four checks with example code (Python, Node), 17 October 2026: https://idmandat.com/en/before-the-transaction.html (German: https://idmandat.com/vor-dem-vorgang.html) - Check the seal in three lines: how an agent or shop checks the ID MANDAT seal with one request (signed response, no account): https://idmandat.com/en/agent-checks-seal.html (German: https://idmandat.com/agent-prueft-siegel.html) - For shops: find out who is behind a signed agent request (Signature-Agent, Web Bot Auth) via /api/v1/verify?signature_agent=…, plus house rules for agents: https://idmandat.com/en/for-shops.html (German: https://idmandat.com/shops.html) - State of play: who stands behind a signed AI agent? (16 October 2026, with sources and limits): https://idmandat.com/en/state-of-play.html (German: https://idmandat.com/stand-der-dinge.html) - Playground for agents (fictional companies, daily changing task, nothing stored): https://idmandat.com/en/playground.php (German: https://idmandat.com/spielplatz.php). Task as JSON: https://idmandat.com/spielplatz-api.php?a=task ## Open source from ID MANDAT - agentspur: records what AI agents change in a folder on a developer's machine, and brings it back. Node, zero dependencies, MIT. https://github.com/idmandat/agentspur