Standard v0.1
This standard describes how a company declares, publicly and in machine-readable form, which AI agents act on its behalf and what they may do. It has two parts: a file on the company’s domain and a DNS record that proves the company controls the domain.
1. The credential
The company publishes a JSON file at this address:
https://<company-domain>/.well-known/idmandat.json
Example:
{
"idmandat": "0.1",
"domain": "example.com",
"organization": {
"name": "Example Construction Ltd",
"legalForm": "Ltd",
"address": "1 High Street, London EC1A 1AA, GB",
"country": "GB",
"industry": "Construction",
"register": { "court": "Companies House", "number": "12345678" },
"vatId": "GB123456789",
"imprint": "https://example.com/legal"
},
"agents": [
{
"id": "captain",
"name": "Captain",
"role": "Advice and appointments",
"isHuman": false,
"endpoint": "https://example.com/agent",
"protocols": ["a2a", "mcp"],
"mandate": {
"may": ["answer_product_questions", "reserve_appointment"],
"mayNot": ["conclude_contract", "trigger_payment"],
"bindingOnlyAfter": "confirmation by a human"
},
"humanContact": "contact@example.com"
}
],
"offer": "New builds, renovation and loft conversions in Greater London.",
"verification": {
"registry": "https://idmandat.com",
"dns": "_idmandat.example.com"
},
"updated": "2026-09-30"
}
2. The DNS proof
The file alone only proves who controls the website. In addition, the company adds a TXT record:
_idmandat.example.com TXT "v=idmandat1; file=/.well-known/idmandat.json"
A checking agent reads both. If domain, DNS record and file match, it knows: this information comes from the owner of the domain.
3. The fields
| Field | Meaning |
|---|---|
organization | The company, as listed in its imprint and the commercial register |
organization.country | Country as a country code, e.g. DE (recommended) |
organization.industry | Industry in words (recommended) |
agents | All agents acting on behalf of the company |
isHuman | Always false for AI agents – the agent never presents itself as a human |
mandate.may | What the agent may do |
mandate.mayNot | What is explicitly excluded |
bindingOnlyAfter | When an action becomes binding |
humanContact | Where a human can be reached |
offer | Optional: what the company offers, max. 280 characters. Shown in the directory only after approval. |
4. Capabilities
For may and mayNot we recommend these terms, so agents everywhere understand them the same way: answer_product_questions, answer_service_questions, explain_prices, check_availability, prepare_appointment, reserve_appointment, book_appointment, create_quote, take_order, qualify_lead, forward_request, conclude_contract, trigger_payment, share_personal_data, give_legal_advice, give_medical_advice. Your own terms are allowed.
5. Verification levels
- Domain – DNS record and file match. Any agent can check this itself.
- Imprint – Name and address match the imprint (legal notice) on the domain.
- Register – The commercial register entry exists, is active and matches. Without a register entry (e.g. sole traders) a valid VAT ID takes its place.
Level 1 results in “Registered”; all three levels together earn the “Verified” seal. The checks run fully automatically and are repeated regularly; a human looks at any discrepancies.
ID MANDAT confirms identity and authority, not trustworthiness, quality or creditworthiness.
6. Principles
- The credential belongs to the company, not to the registry. It remains valid and readable without ID MANDAT.
- An agent never presents itself as a human.
- A mandate also states what the agent may not do.
- The standard is open and works with A2A, MCP and Schema.org.
Field names are in English so agents worldwide can read them. Feedback on this draft is welcome.