agentcard-disco
Score and optimise A2A Agent Cards for discoverability.
agentcard-disco analyses an Agent Card JSON file and gives it a discoverability score across four heuristic dimensions (plus optional AI-assisted analysis), surfacing exactly what to fix before publishing to an A2A registry.
┌─────────────────────────────────────────────────────────────┐
│ agentcard-disco discoverability score │
│ │
│ 🏆 DataPulse Analytics Agent │
│ Source: tests/fixtures/good_card.json │
│ │
│ Score: 88.0 / 100 (88%) Grade: A │
└─────────────────────────────────────────────────────────────┘
Installation
pip install agentcard-disco
For AI-assisted scoring (--deep):
pip install "agentcard-disco[deep]"
Quick start
# Score a local card
agentcard-disco score ./agent-card.json
agentcard-disco score ./tests/fixtures/good_card.json --deep
# Score from a URL
agentcard-disco score https://api.example.com/.well-known/agent-card.json
# + AI quality analysis (requires GROQ_API_KEY in .env)
agentcard-disco score ./agent-card.json --deep
# Export report as JSON or Markdown
agentcard-disco score ./agent-card.json --format json --output report.json
agentcard-disco score ./agent-card.json --format markdown --output report.md
# CI gate — exit 1 if score is below 70%
agentcard-disco score ./agent-card.json --fail-under 70
# Get improvement suggestions only
agentcard-disco suggest ./agent-card.json --priority high
# Compare two cards side-by-side
agentcard-disco compare ./v1.json ./v2.json
Scoring dimensions
| Dimension | Points | What it measures |
|---|---|---|
| Metadata Richness | 0–30 | Description length, tags, examples, provider info |
| Semantic Specificity | 0–30 | Filler-word ratio, skill distinctness, action-verb density |
| Search Alignment | 0–20 | Tag and keyword coverage vs A2A registry query vocabulary |
| Completeness | 0–20 | SemVer, capabilities, auth declaration, protocol version |
| AI Quality (--deep) | 0–20 | Categorical quality judgments via Groq |
Grade scale:
| Grade | Score |
|---|---|
| A | 85–100% |
| B | 70–84% |
| C | 50–69% |
| D | 30–49% |
| F | 0–29% |
AI scoring setup (--deep)
- Install the deep extra:
pip install "agentcard-disco[deep]" - Add your Groq API key to a
.envfile in your working directory:
GROQ_API_KEY="gsk_your_key_here"
- Run with
--deep:
agentcard-disco score ./agent-card.json --deep
Python API
from agentcard_disco.parser import load
from agentcard_disco.scoring.engine import score
card = load("agent-card.json") # also accepts http(s):// URLs
report = score(card) # Tier 1 only
report = score(card, deep=True) # + AI analysis
print(report.grade.value) # "A", "B", ...
print(report.percentage) # 88.0
print(report.total_score) # 88.0
for suggestion in report.all_suggestions:
print(suggestion.priority, suggestion.field, suggestion.message)
Commands
score
agentcard-disco score SOURCE [OPTIONS]
| Option | Default | Description |
|---|---|---|
--deep |
off | Enable Tier 2 AI analysis (+20 pts) |
--format |
terminal | terminal, json, or markdown |
--output FILE |
stdout | Write output to file |
--fail-under SCORE |
— | Exit 1 if percentage < SCORE |
--no-suggestions |
off | Hide suggestions table |
--no-detail |
off | Hide per-dimension details |
suggest
agentcard-disco suggest SOURCE [OPTIONS]
| Option | Default | Description |
|---|---|---|
--priority |
all | Filter: all, high, medium, low |
--format |
terminal | terminal or json |
--limit N |
20 | Max suggestions to show |
--deep |
off | Include AI suggestions |
compare
agentcard-disco compare SOURCE SOURCE [SOURCE ...] [OPTIONS]
| Option | Default | Description |
|---|---|---|
--format |
terminal | terminal or json |
Development
git clone https://github.com/chinemeze/agentcard-disco
cd agentcard-disco
pip install -e ".[deep]"
pip install pytest pytest-cov mypy ruff
# Run tests
pytest tests/ -v
# Lint
ruff check src/
# Type check
mypy src/
License
MIT
Release files for agentcard-disco 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agentcard_disco-0.2.2.tar.gz | 58.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agentcard_disco-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 100.9 kB
Release files / agentcard_disco-0.2.2.tar.gz
| Download URL | agentcard_disco-0.2.2.tar.gz |
|---|---|
| Size | 58.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cf78c2fffc03f20ff755b895d98fb5e01de5b606ce8faf1627ebae477e24a896
|
|
BLAKE2b-256 checksum How to use checksums |
ffec259a2d5ef874c64a8d2205a4d5edef74663f8197189ff75c685d4067885c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency logRelease files / agentcard_disco-0.2.2-py3-none-any.whl
| Download URL | agentcard_disco-0.2.2-py3-none-any.whl |
|---|---|
| Size | 42.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
93b222f2d5bc3ed55ebf3fd8d84e7cc2aa535d2a95f334098691933840d556b3
|
|
BLAKE2b-256 checksum How to use checksums |
6487135ec56827f3cd6ae92f85d4241fe934bd462a6b099320af463a104c84d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 7, 2026.
Transparency log