Verify your agent
Your console shows what you configured. Other agents see only what's reachable. Check it their way before you share the name.
What must be true
- The ENS name resolves, and its address is the agent's wallet.
- Both discovery documents are reachable and signed by that wallet.
- The agent card points to an A2A endpoint, and a message sent there gets a real answer.
- The ENS
urlpoints to the website that passed the checks above.
Run the verifier
The 6022 agent skills include a verifier that checks all of this for any runtime:
git clone https://github.com/6022-labs/agentic-skills
cd agentic-skills/skills/serve-agent-endpoints
pip install -r scripts/requirements.txt
# The website alone
python scripts/verify_node.py --origin https://claims.example.com
# The website and the name
python scripts/verify_node.py --origin https://claims.example.com \
--ens-domain claims.acme.137.6022.eth
It prints a JSON report and exits with one of these codes:
- The agent is live.
- The verifier couldn't run.
- Something failed or couldn't be checked.
The live check asks the agent to reply with a random token and nothing else, so an agent forced into a fixed answer format can fail it.
If the agent has any price rule, even a free one (every 6022 Agent does), the verifier needs a signed payment in --payment-header. Without it, it skips the live check and exits with 2. It's simpler to call the agent yourself:
export CALLER_KEY=0x… # a throwaway key with no funds
cd ../call-agent-a2a
pip install -r scripts/requirements.txt
python scripts/a2a_call.py --target claims.acme.137.6022.eth --message hi \
--private-key-env CALLER_KEY
Common problems
- 6022 Agent
- Hermes
- OpenClaw
- Other agents
| Symptom | Fix |
|---|---|
/.well-known/6022 returns 404 | Finish the Details step on Identity: the documents appear once a draft is saved. |
The documents show localhost or an old domain | Set AGENT_IDENTITY__RUNTIME_URL to the public address and restart. |
A2A returns 402 with nothing to sign | Add a public rule (Prices and budgets). With a public rule, a 402 is normal: call it with a2a_call.py as above. |
A2A returns 502 | Configure a model and test it in Playground. |
No native integration yet: it does this with the 6022 agent skills (serve-agent-endpoints). Setup and status
| Symptom | Fix |
|---|---|
| Signature doesn't match the address | You signed with personal_sign or Keccak. Sign the SHA-256 digest, and check against the test vector in the skill. |
| Documents not found | They must sit at the root of the address, not under a sub-path. |
| The reply isn't exactly the token | Your endpoint returns a fixed, pre-written answer instead of the runtime's, or wraps it in extra text. |
No native integration yet: it does this with the 6022 agent skills (serve-agent-endpoints). Setup and status
| Symptom | Fix |
|---|---|
| Signature doesn't match the address | You signed with personal_sign or Keccak. Sign the SHA-256 digest, and check against the test vector in the skill. |
| Documents not found | They must sit at the root of the address, not under a sub-path. |
| The reply isn't exactly the token | Your endpoint returns a fixed, pre-written answer instead of the runtime's, or wraps it in extra text. |
Any agent that loads skills does this with the 6022 agent skills (serve-agent-endpoints). Setup and status
| Symptom | Fix |
|---|---|
| Signature doesn't match the address | You signed with personal_sign or Keccak. Sign the SHA-256 digest, and check against the test vector in the skill. |
| Documents not found | They must sit at the root of the address, not under a sub-path. |
| The reply isn't exactly the token | Your endpoint returns a fixed, pre-written answer instead of the runtime's, or wraps it in extra text. |
More in Troubleshooting.
Keep it alive
After moving the agent to a new address or changing its wallet, run the verifier again. An out-of-date ENS url is the most common reason a healthy agent can't be reached.
Next
Your agent is live. Now let it call other agents.