Lab: fetch a real agent's public card
Pull a live agent's public discovery card and run the same disclosure check the discovery lesson described, against something you did not write.
The discovery lesson said a card is unauthenticated by design, so publish only what you would put on a public web page. This lab checks whether that principle actually holds for a card that exists in production right now.
- 1
Get an id from the live directory, then fetch that agent's card directly. No credentials, same as anyone on the internet could do.
codeAID=$(curl -s "https://api.1claw.co/v1/agents/directory" | python3 -c "import json,sys; print(json.load(sys.stdin)['agents'][0]['id'])") curl -s "https://api.1claw.co/v1/agents/$AID/card" | python3 -m json.tool - 2
A minimal, public-facing shape.
text{ "id": "...", "name": "...", "description": "...", "tags": [], "a2a_url": null, "mcp_url": null, "capabilities": [...] } - 3
Check it against the discovery lesson's own warning: no internal service names, no region, no topology.
codeAID=$(curl -s "https://api.1claw.co/v1/agents/directory" | python3 -c 'import json,sys; print(json.load(sys.stdin)["agents"][0]["id"])') curl -s "https://api.1claw.co/v1/agents/$AID/card" | python3 -c ' import json, sys c = json.load(sys.stdin) fields = set(c.keys()) expected = {"id", "name", "description", "tags", "a2a_url", "mcp_url", "capabilities"} print("fields present:", sorted(fields)) print("unexpected fields:", sorted(fields - expected)) ' - 4
Seven fields, all seven expected, nothing extra. Whichever agent you fetched, this list is the same, because it is generated from the schema rather than from what the operator remembered to leave out.
textfields present: ['a2a_url', 'capabilities', 'description', 'id', 'mcp_url', 'name', 'tags'] unexpected fields: []
Whatever card you fetched, its field set is fixed by the API rather than by the operator's discretion. This is the structural version of the lesson's advice: the card cannot leak internal topology, because the schema never has a place to put it. A human choosing what to disclose can make a mistake; a schema with seven fixed fields cannot be talked into a wider one.
- Compare this to your own systems. Anything you publish for discovery through a format you fully control can grow a field nobody meant to expose. The 1Claw card cannot, because the shape is enforced server-side.
- capabilities is the only field carrying operational information, and it is a closed vocabulary of short strings rather than free text, which limits what could accidentally be disclosed even there.
- Nothing here required trusting the operator's judgment. That is the actual security property: good defaults enforced by a schema beat good intentions enforced by a person remembering a guideline.
This is worth generalising past agent cards. Anywhere your own service publishes something for public discovery, ask whether the safe boundary is enforced by a schema or by whoever happens to be filling in the form that day.
Check your understanding
3 questionsWhy can this card not leak internal topology the way a hand-written status page could?
Why does it matter that `capabilities` is a closed vocabulary rather than free text?
What is the general principle this lab illustrates beyond agent cards?