Agent Card and Discovery
The Agent Card is A2A's discovery entry point. Any agent that fetches it learns who Caoliao is, what it can do, where to call it and what comes back — no separate integration document required.
Three discovery URLs
| URL | Purpose |
|---|---|
https://a2a.objqr.com/.well-known/agent-card.json | Standard discovery path of the service |
https://qr61.cn/.well-known/agent-card.json | The same card, on a code domain |
https://qr71.cn/.well-known/agent-card.json | The same card, on a code domain |
All three return the same card.
Serving it from the code domains is deliberate. An agent that scans a Caoliao code receives a link like https://qr71.cn/..., and can discover the A2A service from that domain's .well-known path without knowing a2a.objqr.com beforehand.
Tip: clients still on A2A 0.2.x probe the older
/.well-known/agent.json. That path is kept and returns the same card.
What is on the card
{
"protocolVersion": "0.3.0",
"name": "草料二维码实体查询 Agent",
"description": "...",
"url": "https://a2a.objqr.com/a2a/jsonrpc",
"preferredTransport": "JSONRPC",
"version": "0.1.0",
"documentationUrl": "https://a2a.objqr.com/ext/caoliao-entity/v2",
"iconUrl": "https://static.clewm.net/cli/images/cli_logo_new.png",
"provider": {
"organization": "草料二维码 (cli.im)",
"url": "https://cli.im"
},
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false,
"extensions": [ "..." ]
},
"defaultInputModes": ["text/plain", "application/json"],
"defaultOutputModes": ["application/json", "text/plain"],
"skills": [ "..." ]
}| Field | Description |
|---|---|
protocolVersion | Target A2A protocol version, currently 0.3.0 |
description | Bilingual (Chinese + English) capability description, for calling agents to decide whether to use this service |
url | The single JSON-RPC endpoint clients post to |
preferredTransport | Transport, JSONRPC |
version | Version of this agent itself, unrelated to the protocol version |
documentationUrl | Points at the read-only contract extension spec |
capabilities | Which protocol capabilities are supported, and which extensions are declared |
defaultInputModes | Accepted input types: plain text or JSON |
defaultOutputModes | Returned output types: JSON or plain text |
skills | Three read-only skills, see Skills |
Note: the card's
nameandprovider.organizationare in Chinese (the name means "Caoliao QR Entity Query Agent"). Thedescriptionon the card — and on each skill — is bilingual, so an English-speaking agent can rely on the English half for capability selection.
The card carries no security or securitySchemes fields. That is intentional: the service requires no authentication, and per the A2A specification omitting these fields signals exactly that.
All three capabilities booleans are false, meaning: no streaming responses, no push notifications, no state-transition history.
Each skill uses the same input and output modes as the top-level defaults, so per-skill modes are omitted rather than repeated.
The read-only contract extension
The card declares an extension that spells out what comes back and which boundaries apply:
{
"uri": "https://a2a.objqr.com/ext/caoliao-entity/v2",
"required": false,
"params": {
"profile": "read-only",
"schemaUrl": "https://a2a.objqr.com/ext/caoliao-entity/v2/schema.json",
"appliesTo": ["get_entity", "get_records", "list_actions"],
"invocation": "explicit-datapart-only",
"rules": {
"readOnly": true,
"publicOnly": true,
"singleOrgView": true,
"actionsExecutable": false
}
}
}A2A currently has no per-skill output schema field, so Caoliao uses the official extension mechanism to fill that gap. The extension provides two things:
- Specification (human-readable):
https://a2a.objqr.com/ext/caoliao-entity/v2 - JSON Schema (machine-readable):
https://a2a.objqr.com/ext/caoliao-entity/v2/schema.json
The schema is generated from the backend's own type definitions, so it cannot drift from what the service actually returns.
required is false: clients that do not recognize the extension can ignore it and still call normally.
About GB/Z 185—2026
The card declares a second extension:
{
"uri": "urn:gb-z-185:aip",
"required": false,
"params": {
"standard": "GB/Z 185(所有部分)—2026",
"alignment": "field-level",
"descriptionUrl": "https://a2a.objqr.com/.well-known/aip-agent.json"
}
}Caoliao also publishes a description file conforming to GB/Z 185—2026 (Artificial Intelligence — Agent Interconnection, a Chinese national guiding technical document) at /.well-known/aip-agent.json.
This is a pointer, not a format conversion. The A2A card itself follows the A2A specification exactly — not one field was changed for the standard. Parties needing the national-standard description fetch it separately from descriptionUrl. It is likewise required: false, so clients that do not recognize it simply ignore it.
Next
- Skills — what each of the three skills does
- Task and Response — what you get back from a call