Become verified
AgentValet customers see a badge on every MCP server and platform they connect, saying who AgentValet could confirm operates its endpoint. If you run an MCP server, this page explains how to reach each level. There is nothing to apply for and no fee. Every check uses public evidence that you control.
A badge records identity, not endorsement. Reaching a level says which domain serves your endpoint and where it is listed. It does not say anything about the quality of your server, and AgentValet does not review servers.
Enterprise. Operator verification is an AgentValet Enterprise feature, so only customers on the Enterprise plan see badges. See Operator verification for the full detail of each check.
The levels
| Level | What you need |
|---|---|
| Domain verified | Step 1 |
| Listed in MCP Registry | Steps 1 and 2 |
The optional identity statement in step 3 adds a separate Operator identity published (self-declared) note. It does not change the level.
1. Serve your endpoint over valid HTTPS on your own domain
Put the MCP endpoint on a host under a domain you own, for example mcp.example.com under example.com.
- Use a certificate that standard trust stores accept. A self-signed or expired certificate fails.
- The host must resolve to a public IP address. Private, loopback, link-local, CGNAT and unique local addresses are refused.
- Answer the endpoint directly. AgentValet does not follow redirects, so an address that redirects somewhere else fails.
AgentValet records the registrable domain of the host (example.com). That is what customers see as your operator domain, so serving from your own domain, rather than a shared hosting domain, is what makes the result meaningful.
2. Publish to the official MCP Registry
Publish your server to the official MCP Registry at registry.modelcontextprotocol.io, with your remote endpoint’s URL in the entry’s remotes. The host in that URL must be exactly the host your customers connect to. The entry must be active and the latest version.
Then publish it under a namespace on your own domain.
A reverse-DNS namespace on your domain
Publish under a name that is your domain reversed, for example com.example/server. The registry checks that you control example.com when you publish (by DNS or HTTP).
AgentValet then checks that the remote’s host sits under the domain your namespace names, and that both are on the same registrable domain. So com.example/server with a remote at https://mcp.example.com/mcp passes. The same namespace with a remote on another domain does not.
GitHub namespaces do not count
An entry under io.github.<your-org> does not lift your level, even with a verified domain on your GitHub organisation. GitHub sign-in proves a GitHub account, not a domain, and the organisation’s profile website is free text. If you are listed only under a GitHub namespace, publish under your reverse-DNS name as well.
Why AgentValet checks the remote URL
The registry verifies who owns a namespace, but it does not check that the remote URLs listed in an entry are on that namespace’s domain. AgentValet does that check itself, so an entry that lists someone else’s endpoint does not lift that endpoint’s level.
3. Optional: publish an operator identity statement
You can publish a signed statement naming your organisation, following the Merchant Identity Assertion draft (draft-anders-merchant-identity-assertions). AgentValet uses the verification procedure from the draft’s -02 revision, wire version 1.
Serve it on your registrable domain itself (example.com, not mcp.example.com), at:
https://example.com/.well-known/merchant-identity.jsonwith the media type application/merchant-identity+json. The subject must be your endpoint’s registrable domain. The statement must be strict JSON (no duplicate keys), signed with Ed25519 using proof type MerchantIdentityProof-v1 over the RFC 8785 (JCS) canonical form of the claims, with proof.created equal to issuedAt, and inside its validity window.
Self-issued
Set issuer.domain to your own domain (the subject). Publish your public key in a key directory on that domain as a JWKS entry with kty OKP, crv Ed25519 and use sig. The proof’s verification method is issuer.keyDirectory#kid, and the key directory’s host must be the issuer’s domain.
Issued by a third party
If someone else issues the statement for you, your domain must authorise them, in one of two ways:
- a DNS TXT record at
_mia-auth.example.comreadingv=mia1; issuer=<issuer domain>, or - a signed
/.well-known/mia-delegation.jsonon your domain, with media typeapplication/merchant-delegation+json, signed with a key from your own domain’s key directory.
What “self-declared” means
A valid statement shows as Operator identity published (self-declared), and customers can see the legal name it states. It is not a level. The draft itself says a valid assertion does not independently verify the legal entity. It shows that whoever controls your domain chose to name themselves. AgentValet does not check that name against any business register.
A pass lasts until the statement expires, and at most 14 days; it is normally re-checked after 7. AgentValet does not check revocation (revocationUri), which the draft makes optional. The draft is an individual Internet-Draft and may change, so support for it may change too.
What AgentValet does not check
- That a company, rather than a domain, operates the endpoint. No business register lookup is made.
- How your server behaves, or what it does with data.
- Look-alike domains. A domain such as
example-mcp.iopasses for itself, not forexample.com.
How long until the badge updates
Results are not instant for every customer. A customer’s badge for your endpoint updates:
- after the next scheduled run (checks run several times a day, every 6 hours), or
- sooner, when an admin at that organisation clicks Re-check now on the platform, or when an agent uses the platform for the first time.
Checks are rate-limited, to one per endpoint host every 10 minutes and six per registrable domain every 10 minutes. Passes are re-checked about weekly and lapse after 14 days, so keep your certificate, registry entry and any statement current. If a level drops, admins at organisations that use your endpoint (and have operator verification on) are notified in the app.
How the checks reach you
AgentValet’s checks fetch only over HTTPS, do not follow redirects, read at most 1 MB per response, and give up after 5 seconds. The well-known files above are fetched from your registrable domain, so make sure they are served from it directly.
Next
- Operator verification: what each level means for customers
- MCP servers as platforms