a2a-contract-test
a2a-contract-test validates an A2A-style agent card and a recorded task
lifecycle transcript without contacting the declared agent endpoint.
At a Glance
| Job | Gate a static agent card and recorded lifecycle against a practical contract profile. |
| Built for | Agent developers, integration engineers, and CI owners exchanging A2A-style tasks. |
| Differentiator | Offline, dependency-free checks with a redacted transcript in the report. |
| Produces | Markdown or JSON findings, pass state, and a replayable redacted transcript excerpt. |
Install
python -m pip install "a2a-contract-test==0.1.5"
Verified Quickstart
Run from a source checkout:
a2a-contract-test run \
--agent-card examples/passing_agent/agent-card.json \
--format json \
--out /tmp/a2a-contract-report.json
When --transcript is omitted, the CLI reads contract-transcript.json next to
the agent card. The bundled passing fixture returns passed: true with zero
findings. The failing fixture returns exit code 1.
Contract Profile
The v1 profile checks:
- required agent-card fields, semantic-version-like version text, and HTTP(S) endpoint shape;
- capabilities, input/output modes, streaming declarations, and JSON content type disclosure;
- submitted, progress, and terminal lifecycle states;
- stable task IDs, JSON request/result shape, cancellation evidence, structured errors, and unsupported-capability negotiation.
The report is considered passing when no high or critical findings exist. Medium findings remain visible and do not fail the profile.
GitHub Action
Pin the published Action to its immutable release commit:
- uses: auraoneai/a2a-contract-test@a8aeb3e6c2495a0e2b3b47e6c349c2b7628f620c # v0.1.5
with:
agent-card: contracts/agent-card.json
transcript: contracts/contract-transcript.json
output: a2a-contract-report.md
See docs/github-action.md for a complete workflow and
input behavior.
Runtime, Data, and Network Boundary
- The CLI reads local JSON files only. It does not send requests to the endpoint declared in the card.
- Transcript redaction masks secret-like keys and strings containing
sk-...orpypi-...; it is not a comprehensive PII scrubber. - Reports can preserve task payloads, results, IDs, and non-secret metadata, so sanitize recordings before use.
- Passing this profile does not establish interoperability with a live agent, protocol compliance, reliability, or security.
Limitations
- The profile checks one practical offline contract shape, not the full space of A2A implementations or future protocol revisions.
- A passing report cannot prove that a live agent honors the same behavior once network transport, authentication, and runtime state are involved.
Compatibility
The published auraone-agent-studio-open CLI declares
a2a-contract-test>=0.1.0 as a runtime dependency and exposes the profile
through agentstudio a2a.
This project is not an official A2A compliance suite and is not affiliated with the Linux Foundation or an A2A standards body.
Publication Status
Verified on 2026-07-13:
- PyPI:
a2a-contract-test==0.1.5 - GitHub Action release:
v0.1.5 - The Action and PyPI package share release
0.1.5; the Action installs the package source from its checked-out immutable commit. - Bundled cards and transcripts are synthetic fixtures.
Next Action
Capture one sanitized task lifecycle, store it beside the matching agent card, and add the pinned Action as a pull request gate.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file a2a_contract_test-0.1.5.tar.gz.
File metadata
- Download URL: a2a_contract_test-0.1.5.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35ab645f7375dee6e48ec5144dbba0696d5b211cd6841cc5e7795b8f7ba0cb6a
|
|
| MD5 |
3dfb8350c8e308a9a3d62ea25d11e493
|
|
| BLAKE2b-256 |
22f17eab4fbfdafb88a40ffb66e6ddcc24c1ca19279ec9ae9a88179c33ff4fb0
|
File details
Details for the file a2a_contract_test-0.1.5-py3-none-any.whl.
File metadata
- Download URL: a2a_contract_test-0.1.5-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afa4195b93aea67cd48ffd820a6a3bbcbe8f6cc03315889fce00cb947c46e658
|
|
| MD5 |
07b7719189743c682f4443169629f6c1
|
|
| BLAKE2b-256 |
4c35a5b394006c753ce9f84315e72067a0eb928cf11b9fc9ca658a3e37ab4d56
|