Reference
Trust in agentic discovery
Serving a manifest proves control of a domain. Every other field in it is an assertion, and knowing which is which is most of the security model.
An ARD manifest proves only that the domain serving it controls that domain. Every claim inside it is an assertion no registry can verify by reading, so discovery is a recommendation rather than a credential. Publisher authority binding limits identifier squatting: a urn:air: publisher segment is credible only when the manifest asserting it was served by that publisher's own domain. Before connecting, an agent should confirm the host matches the entry, the publisher matches the serving domain, and the tool list matches what was promised.
The only thing a manifest proves
A manifest at /.well-known/ard.json proves exactly one fact: whoever served it
controls that domain, or controls something that answers for it. That is a genuine and useful
proof. It is also the only one on offer.
Everything else in the document is an assertion. The display name, the description, the tool list, the queries it claims to answer, the publisher it names: a registry reading the file cannot check any of it. This is not a flaw in the specification. It is the same trust model as a web page, and it is worth stating plainly because discovery output tends to be read as though it were vetting.
The one sentence to take away. Discovery is a recommendation, not a credential. A registry that returns a resource is saying it matched a request, not that it is safe to run. The distinction matters most at the moment it is easiest to forget, which is when an agent is about to connect unsupervised.
Publisher authority, and why identifiers are not names
ARD identifiers use a URN form:
urn:air:example.com:mcp:invoicing
The second segment is the publisher. Nothing prevents a manifest from writing somebody else's domain there, which would be an obvious way to borrow a reputation. What makes the field usable is where the claim was found: a publisher segment is credible when the manifest asserting it was served by that publisher's own domain, and is a claim about a third party when it was not.
This is the same reasoning that makes a well-known path meaningful in the first place. The
location is the proof; the content is the claim. A registry that indexes an entry naming
stripe.com from a manifest served by not-stripe.example has found an
assertion about Stripe, not a Stripe resource, and should treat it that way.
What this means if you publish
Serve your manifest from the domain you are naming. If your resources live on
api.example.com but your manifest is on example.com, that is normal and
fine: the registrable domain is what binds. What is not fine is publishing entries whose publisher
segment names a domain you do not control, even with good intentions, because a consumer applying
the rule correctly will discount them.
Tool descriptions, and the injection question
An MCP tool description is written by the publisher and read by a model. That is, by construction, a channel from a stranger into an agent's context, and it is the part of the stack most worth being careful about.
It is also worth knowing the base rate rather than assuming it. Across 97,472 tool descriptions from 5,079 servers reachable in a public index, the shape of the problem measures like this:
| What was looked for | Found |
|---|---|
| Text addressed at the model rather than the reader, for example instructions about how to behave | A very small fraction of one percent |
| Override phrasing, of the form ignore previous instructions | None |
| Hidden or zero-width codepoints used to conceal text | None |
Two conclusions, and they point in different directions.
There is nothing here to score. A safety grade computed over this distribution would be a number attached to thousands of honest publishers in order to flag a handful, and the first draft of that scan flagged legitimate publishers whose descriptions were in a non-Latin script or who work in security and therefore write about attacks. A count and an excerpt are defensible. A grade is not.
And a rare risk is still a risk. A base rate near zero says nothing about the one description that matters, because an agent acting unsupervised needs to be wrong only once. The mitigation is not a registry badge. It is treating a tool description as untrusted input at the point where it enters a prompt, the same way a form field is treated as untrusted input at the point it enters a query.
What an agent should check before it connects
- The host is the one the entry named. Follow redirects with the same suspicion you would apply to a link in an email: a discovery result that lands somewhere else is worth stopping for.
- The publisher matches the domain that served the manifest. If it does not, the entry is a third-party claim and should be weighted as one.
- The tool list matches the expectation. A manifest that promised one capability and a session that offers twenty, including several that write, is a discrepancy worth surfacing to a human.
- Descriptions are data. Whatever a description says about how the agent should behave is a string the publisher chose, not an instruction from the operator.
What a registry can honestly tell you
The useful signals are observations, not judgments, and they are things a registry is in a position to know:
- Whether it answered. A count of probes and how many got a response, which is a fact about behaviour over time rather than a promise about the future. Of 8,593 endpoints where a connection was attempted, 2,628 completed a handshake and returned a tool list, 2,094 required credentials, and 1,237 answered 404 at the address their own entry gave.
- Whether the domain was verified. A DNS record proving control is a real credential, and a registry either has it or does not.
- What changed. A tool list that gained a destructive capability last Tuesday is a fact worth knowing, and one nobody can see without watching over time.
None of those is a trust score, and the absence is the point. The honest output of a discovery layer is a set of observations with dates on them, handed to something that can decide.
Questions
Does an ARD manifest prove anything about a resource?
It proves the domain served it. Serving a manifest at /.well-known/ard.json demonstrates control of that domain and nothing more. Every claim inside it, including what a tool does and who owns it, is an assertion by the publisher that no registry can verify by reading.
Can a resource claim to belong to a domain it does not control?
It can write whatever it likes in an identifier. What stops the claim being useful is publisher authority binding: the publisher segment of a urn:air: identifier is only credible when the manifest asserting it is served by that publisher's own domain. An entry naming a publisher it was not served by is a claim about somebody else.
Is prompt injection in tool descriptions a real problem in ARD?
It is a real category and currently a rare one. A scan of 97,472 tool descriptions across every indexed MCP server found a small fraction carrying text addressed at a model rather than a reader, no override phrasing, and no hidden codepoints. The exposure is real because it only takes one; the base rate is not what the warnings imply.
Should a registry score resources for trustworthiness?
A score attached to somebody else's name is a claim you have to defend, and the inputs available to a registry do not support it. Counts and observations are defensible: how often an endpoint answered, whether a domain was verified, what a description contains. A grade is an opinion wearing a number.
What should an agent verify before calling a discovered resource?
That the host it is connecting to is the one the entry named, that the entry's publisher matches the domain that served the manifest, and that the tool list it gets on connecting matches what it expected. Discovery is a recommendation, not a credential.
Get indexed
Publishing the file is half of it. A registry can only index a domain it has encountered, so tell the ones you care about.
curl -X POST https://neuronto.com/submit \
-H "Content-Type: application/json" \
-d '{"url": "https://yourdomain.com"}'
This one resolves a bare domain to your manifest, indexes entries of every
type rather than MCP servers only, and answers with what it found or exactly what it tried. Add
"dry_run": true to see the outcome without being written anywhere.
The other public registries take submissions through their own doors, and submitting to several costs nothing: WellKnown, ARD Registry Hub, Desvela. What actually reaches all of them over time is the manifest on your own domain, which is the part nobody can take away from you. How each one behaves, probed.
Last reviewed 2026-09-05. Checked against ARD v0.91 (Proposal, 2026-08-26).