A2A JSON-RPC skill
Use an A2A Agent Card to expose an exact reviewed JSON-RPC skill. Vintraa currently publishes only unauthenticated skills that a publisher has explicitly confirmed are read-only.
- Adapter
a2a-jsonrpc-v1- Runtime
REMOTE_A2A- Inspection type
A2A_AGENT_CARD- Source
- Public A2A Agent Card URL
What Vintraa can publish
- A public HTTPS Agent Card with at least one skill and a JSON-RPC interface.
- A2A protocol version 0.x or 1.x at one exact reviewed endpoint.
- Skills explicitly changed from the conservative imported default to readOnly: true after review.
- No Agent Card authentication and no post-execution approval requirement.
Serve the source contract publicly
Replace the example host and identifiers with your own. Do not add API keys, tokens, customer secrets, or signing private keys to the source contract.
json{
"name": "Care Rota Status",
"description": "Reads the current status of an approved rota.",
"version": "1.0.0",
"protocolVersion": "1.0.0",
"supportedInterfaces": [
{
"url": "https://agent.example.com/a2a",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0.0"
}
],
"defaultInputModes": ["text/plain"],
"defaultOutputModes": ["application/json"],
"skills": [
{
"id": "lookup_rota_status",
"name": "Lookup rota status",
"description": "Reads the current status without changing the rota.",
"tags": ["rota", "read-only"]
}
]
}Ask Vintraa to normalize it
Run this after the authentication example on the main developer page. An active publisher membership is required. The returned inspection is the source of truth.
bash · curl + jq# Continue in the same shell after signing in and creating a publisher.
export VINTRAA_PUBLISHER_ID="replace-with-your-publisher-id"
export A2A_AGENT_CARD_URL="https://agent.example.com/replace-this"
curl --fail-with-body --silent --show-error \
--request POST \
--header "Authorization: Bearer $VINTRAA_TOKEN" \
--header 'Content-Type: application/json' \
--data "$(jq -nc \
--arg source "$A2A_AGENT_CARD_URL" \
'{sourceType:"A2A_AGENT_CARD",source:$source}')" \
"$VINTRAA_API/publishers/$VINTRAA_PUBLISHER_ID/agent-import-inspections" | jqConfirm the publishable binding
These examples show the bounded binding required at publication. Compare every field with Vintraa's inspection result and your deployed behavior.
json{
"type": "a2a-skill",
"skillId": "lookup_rota_status",
"securityRequired": false,
"readOnly": true
}json{
"message": "What is the current status of rota rota_123?"
}What Vintraa sends
- 01
For A2A 0.x Vintraa calls message/send; for 1.x it calls SendMessage.
- 02
Requests use application/a2a+json and carry the reviewed action and skill identifiers in metadata.
- 03
Imported A2A bindings start with readOnly: false. A publisher must review the behavior and explicitly attest read-only status before publication.
Not currently publishable
- Authenticated Agent Cards or customer/developer credential passthrough.
- Mutating skills, result-only approval, protocol majors other than 0 or 1, or endpoint drift.
- Treating an Agent Card declaration as proof that a skill is side-effect free.
Publication checklist
- 01
The Agent Card and selected JSON-RPC endpoint are public HTTPS URLs.
- 02
The card has no authentication requirement and the selected protocol is 0.x or 1.x.
- 03
Every retained skill has been behaviorally reviewed and explicitly marked read-only.
- 04
The sandbox run proves the exact reviewed skill works without side effects or credentials.