ID MANDAT

For shops

Who is behind the signed agent? · free to query, no account · beta

More and more shops ask AI agents to identify themselves. A method for this is taking shape: the agent signs its requests and names, in the Signature-Agent header, where its public key can be found (“HTTP Message Signatures for automated traffic”, an Internet-Draft of the IETF Web Bot Auth working group, 1 September 2026, authors from Cloudflare and Google).

That tells you which key signed. The draft itself says it does not express authorization or delegation and says nothing about who operates the agent. This is the gap ID MANDAT fills.

In three steps

  1. Verify the signature. A library or your provider (a content delivery network, for example) does this. ID MANDAT does not verify the signature.
  2. Ask ID MANDAT. Take the address from the Signature-Agent header and ask who has declared it.
  3. Decide by your own house rules. For example: registered agents may compare prices, ordering needs a human's confirmation, entries that are no longer valid are rejected.

The lookup

Signature-Agent: sig="https://bot.example-company.com"

curl "https://idmandat.com/api/v1/verify?signature_agent=https://bot.example-company.com"

You can also pass the whole header value. Like the lookup by domain, the answer is digitally signed (Ed25519, beta, how to verify the signature) and valid for 15 minutes. AI agents can ask directly too: our MCP server offers the tool verify_signature_agent.

Python

import requests

def who_is_behind(signature_agent_header):
    r = requests.get("https://idmandat.com/api/v1/verify",
                     params={"signature_agent": signature_agent_header}, timeout=5)
    a = r.json()
    if a.get("entry_state") in ("revoked", "suspended", "expired"):
        return "deny: entry no longer valid"
    if not a.get("registered") or a.get("ambiguous"):
        return "unknown: decide by your own house rules"
    agent = a["agents"][0] if a.get("agents") else {}
    return a["organization"], a["level"], agent.get("may"), agent.get("mayNot")

JavaScript

async function whoIsBehind(signatureAgent) {
  const url = "https://idmandat.com/api/v1/verify?signature_agent=" + encodeURIComponent(signatureAgent);
  const a = await (await fetch(url)).json();
  if (["revoked", "suspended", "expired"].includes(a.entry_state)) return { allow: false, why: a.entry_state };
  if (!a.registered || a.ambiguous) return { allow: null, why: "unknown" };
  return { allow: true, company: a.organization, level: a.level, agent: a.agents[0] };
}
Try it

What the answer means

FieldMeaning
registeredtrue: a registered company declares this key directory for one of its agents.
levelverified, registered or listed_unverified. How far ID MANDAT has checked the company.
agents[].may / mayNotWhat the company says the agent may and may not do. This is the company's declaration, not a check by ID MANDAT.
key_directory_linksame_domain: the key directory is hosted on the company's domain (or a subdomain). A hint, not a proof. declared_only: the company only declares it, it is hosted elsewhere.
entry_staterevoked, suspended, expired: the entry is no longer valid. Do not rely on earlier answers.
ambiguousMore than one company declares the same key directory. ID MANDAT cannot say who is responsible.

What ID MANDAT does not do here

House rules for AI agents

A shop can put what agents may do on its site into a small file, served at /.well-known/agent-house-rules.json on your domain. Agent operators can then read whether they must identify themselves, whether an entry in a register is expected, and which actions are allowed, need a human's confirmation, or are off limits.

This is ID MANDAT's own proposal, not a standard. No agent reads this file automatically today. It helps because it states your rules clearly and operators can look them up. If the format is missing something or looks wrong to you, tell us.

Actionallowedask firstdenied

“Ask first” means: only with a human's confirmation or after contacting you.



Put the file at https://your-shop.com/.well-known/agent-house-rules.json. Nothing is sent to us; the file is built in your browser.

Register your company and your agents

Do you run agents yourself? In your credential, enter the address that also appears in your Signature-Agent header in the field “Key directory”. Then shops can find you by key. Structure: standard. Register: €10 per year.

Background: Amazon, AI agents, and the question of who stands behind them.