Skip to main content
Glama
berkingurcan

stellar-agent-search

by berkingurcan

stellar-agent-search

CI npm License: MIT Node MCP

A read-only discovery layer on top of the stellar-8004 registry — the ERC-8004-style Identity/Reputation/Validation contracts on Stellar mainnet. It adds no contracts and forks nothing: it exposes the existing on-chain registry to MCP clients, keeps indexed reputation explicitly declared-vs-verified, and proves the full agent-finds-agent loop with recorded mainnet transactions.

npm · GitHub · Docs · Evidence package

npm

MCP Registry

Remote endpoint

Mainnet proof

0.1.0

✅ published & verified

not deployed yet

x402 payment · feedback

find_agent, rank_agent and get_agent_profile running live against Stellar mainnet inside Claude Code

There are two official interfaces, not two copies of the stack. TypeScript applications, registration, and signed writes use the canonical @trionlabs/stellar8004 SDK from trionlabs/stellar-8004; MCP clients and terminal discovery use this package, which exact-pins that SDK internally. The upstream repo's restricted Supabase Studio /mcp is database-operator tooling behind SSH/IP controls, not an agent-registry MCP and must never be exposed as this runtime. See the integration boundary.

A read-only, keyless MCP server (and human CLI) that lets an AI agent — or you — discover, rank, and vet on-chain stellar-8004 agents on Stellar mainnet, then prepare an x402 (USDC pay-per-call) payment. One binary speaks the Model Context Protocol over stdio to Claude Code / Cursor / Windsurf / Cline / VS Code, and doubles as a plain-terminal tool. A separate Cloudflare Worker implementation exposes the same surface over stateless Streamable HTTP, but that remote endpoint is not live yet; use the local stdio transport until its deployment canary passes.

npx -y stellar-agent-search@0.1.0 find "a paid web scraper with a good reputation"

Why this exists: declared data vs. what the chain read can prove

Off-chain agent directories (A2A cards, the MCP Registry, OASF, NANDA) list self-declared agents. That is exactly where the trust gap lives. A 2026 study of the ERC-8004 ecosystem (arXiv 2606.26028) found that only 3–15% of registrations have a live endpoint, and 59–91% of "reviewers" are Sybils.

stellar-8004 is the only non-EVM ERC-8004 implementation we are aware of running on mainnet (66 agents on Stellar mainnet as of July 2026; get_registry_stats returns the current count). No published survey enumerates non-EVM deployments — the study above restricts itself to Ethereum, BSC and Base, "the three chains with the highest registration and feedback volume" — so read that as unrefuted, not as proven. This server adds something a directory listing cannot give you: a bounded Reputation-contract reachability probe. The current path calls get_clients_paginated once with a six-slot observation window. The contract exposes no authoritative client count/cursor, and expired client-index entries create holes, so even an empty or short page cannot prove that no later live client exists. Calling get_summary over that set would manufacture a false match or mismatch; this release therefore does not call it and verifies no reputation fields. An attempted, reachable probe returns unavailable with reason client-set-exhaustion-unprovable; verifiedFields is empty and average, feedback count, and unique clients all remain unverified. verified/partial/mismatch are reserved for a future authoritative aggregate. The full status set remains verified | partial | mismatch | unavailable | skipped. Self-declared marketing text (name, description, service labels, feedback tags) remains untrusted data, never instructions (see Security).

That fail-closed boundary — plus a versioned declared-evidence heuristic — is the product. Normalized Explorer quality is multiplied by fixed evidence strength (0.4 × capped volume + 0.6 × effective breadth). Effective unique clients cannot exceed feedback rows, and repeated rows per declared client are capped. These are cost-of-manipulation proxies, not chain verification, proof of personhood, or Sybil resistance.


Related MCP server: nostr-read-mcp

What it exposes

All three MCP primitives, all read-only:

Tools

Tier

Tool

What it does

0 · SOW

find_agent

Natural-language discovery → ranked candidates

rank_agent

Rank an explicit id set or a query, full 3-axis declared-reputation breakdown + bounded chain reachability

get_agent_profile

Deep profile: identity, capabilities, declared reputation + contract-probe limits, recent feedback, unverified A2A projection

list_services

Self-declared x402/MPP endpoint candidates; liveness, ownership, conformance, and payment stay unverified

1 · complete-core

list_agents

Paginated, filterable listing, ranked

leaderboard

Top agents in a bounded scan (client-side 3-axis rank + coverage)

resolve_agent

Any handle (id / stellar:…#id / owner G-address) → canonical identifiers

get_agents_by_owner

Current owner API page (up to 20 agents) with explicit continuation coverage

get_agent_feedback

Recent on-chain reviews (sanitized, labeled)

verify_reputation

Fail-closed Reputation-contract reachability probe; no current fields are verified

get_agent_card

Derived, unverified A2A-shaped projection + x402 hint; not protocol-conformance proof

get_registry_stats

Exact-count queries + capped sampled metrics, with definitions and coverage

get_registry_health

Per-registry indexer staleness

Full per-tool reference (inputs, outputs, defaults): docs/tools.md.

Resources — stellar8004:// (pinnable context)

registry · leaderboard · health · agent/{id} · agent/{id}/card · agent/{id}/feedback · agent/{id}/reputation · owner/{address}. Each returns a dual JSON + rendered-markdown payload.

Prompts — slash workflows

/find-and-vet-agent (flagship) · /vet-agent · /compare-agents · /prepare-x402-call · /explore-registry. prepare-x402-call lays out the exact x402 flow and stops before signing — this server holds no keys.


Quickstart

One-command MCP setup (Claude Code):

npx -y stellar-agent-search@0.1.0 setup --client claude --scope user --handshake

This downloads the package, registers a version-pinned npx -y stellar-agent-search@0.1.0 mcp stdio launch through Claude Code's own CLI, then performs a real MCP initialize + tools/list handshake. It is idempotent: rerun with --check --handshake to verify without changing config, or use --dry-run to preview the registration. Cursor and Codex examples, config paths, and scope limitations are in docs/getting-started.md. Manual configs for other clients remain in docs/integration.md.

Optionally install the skill first — the usage guide your agent reads before it calls anything:

npx skills add berkingurcan/stellar-agent-search --skill mcp

Terminal (human CLI):

npx -y stellar-agent-search@0.1.0 find "web scraper" --x402       # discover
npx -y stellar-agent-search@0.1.0 profile 10                       # full profile for agent 10
npx -y stellar-agent-search@0.1.0 rank "scraping agents" --json    # rank + fail-closed contract-probe status, machine-readable
npx -y stellar-agent-search@0.1.0 services --x402                  # declared paid-endpoint candidates
npx -y stellar-agent-search@0.1.0 doctor                           # self-check: env, explorer, RPC, bounded read path
npx -y stellar-agent-search@0.1.0 setup --client cursor --scope project --dry-run  # preview client config

New here? Start with docs/getting-started.md.

Remote endpoint status

The intended hosted URL is https://mcp.stellar8004.com/mcp. The Worker, transport tests, routing, and hardening are implemented, but the route has not been deployed: /mcp currently falls through to the landing site and returns 404. Deployment remains deliberately blocked until the Cloudflare rate-limit namespace is replaced from its sentinel value and a live canary proves that the original caller identity is preserved through the Service Binding. Do not configure a remote MCP client against that URL yet.

The landing page and MCP runtime are separate Workers. The assets-only landing Worker owns the mcp.stellar8004.com custom domain; exact /mcp and /healthz zone routes will send only those two paths to the runtime Worker. The runtime reads the existing stellar8004-web API through a Cloudflare Service Binding. It does not connect to Supabase, hold a service-role key, or create a second indexer. See docs/architecture.md and docs/stellar8004-integration.md.


Configuration

All configuration is via environment variables (canonical for MCP mode); CLI flags override them (precedence: flag → env → default).

Env var

Default

Purpose

STELLAR_NETWORK

mainnet

mainnet or testnettestnet also requires EXPLORER_BASE_URL, see below

EXPLORER_BASE_URL

https://stellar8004.com

Explorer HTTP API base. Indexes mainnet only

STELLAR_RPC_URL

https://mainnet.sorobanrpc.com

Soroban RPC for the bounded Reputation-contract reachability probe

VERIFY_ONCHAIN

true

Set false to skip the probe; reputation remains declared-only either way

RANK_SCORE_MAX

100

Fixed v1 compatibility assertion; any value other than 100 is rejected

Ranking uses the fixed, versioned stellar-agent-search-declared-evidence-v1 policy: indexed average normalized against exactly 100, multiplied by 0.4 × capped volume + 0.6 × effective breadth. Both a changed RANK_SCORE_MAX and legacy RANK_W_* variables are rejected so a deployment cannot silently redefine published score semantics.

STELLAR_PRIVATE_KEY is intentionally ignored if present (and warned about on stderr) — this server is keyless by construction.

testnet needs its own explorer, and refuses to start without one. The default explorer indexes mainnet only, while STELLAR_NETWORK also selects the Soroban contracts and RPC. That pairing would give you mainnet registry rows alongside testnet on-chain reads — two chains described as one — so STELLAR_NETWORK=testnet fails at startup unless EXPLORER_BASE_URL is set explicitly. No public testnet indexer exists today, so in practice testnet is for someone running their own; the dry-run gate for the x402 demo is DRY_RUN=1 on mainnet, which spends nothing.


Security

  • Read-only and keyless. No signer, no write clients, no private keys anywhere under src/. The only keyed actor in the repo is the standalone examples/x402-demo.ts, run under explicit human control.

  • stdout is JSON-RPC only. Every log/diagnostic goes to stderr, so the protocol stream is never corrupted.

  • Trust boundary. Server-authored summary text (content[].text) interpolates only typed/enum/numeric values. All agent-authored free text (names, descriptions, service labels, feedback tags) lives only in labeled selfDeclared slots of the structured output, sanitized (control/zero-width/bidi stripped) and length-bounded — never treated as instructions.

Full threat model + disclosure policy: SECURITY.md and docs/architecture.md.


How it works

flowchart LR
    A["MCP client<br/>Claude Code · Cursor · Windsurf …"] -- "stdio JSON-RPC" --> B["stellar-agent-search<br/>one Node binary · read-only · keyless"]
    T["Terminal (human CLI)"] --> B
    B -- "HTTP" --> C["ExplorerService<br/>stellar8004.com API · primary data"]
    B -- "Soroban RPC" --> D["ReputationVerifier<br/>bounded reachability probe"]
    C -.indexes.-> E[("stellar-8004 contracts<br/>Stellar mainnet")]
    D --> E

Local MCP client (or terminal) → one Node binaryExplorerService (stellar8004 HTTP API, primary data) + ReputationVerifier (Soroban RPC, bounded reachability probe) → canonical stellar-8004 contracts on mainnet. Indexed reputation remains explicitly Explorer-declared; the contract probe either reports its limited reachability observation or degrades closed without manufacturing a comparison.

The not-yet-live hosted path adds only an edge adapter: remote client → stateless Cloudflare Worker → existing stellar8004-web service → its canonical Supabase-backed index. The Worker never reads Supabase directly and never owns indexer credentials. It still uses Soroban RPC for the same bounded reachability probe. Architecture, ranking formula, cache boundaries, and the upstream discovery contract are documented in docs/architecture.md.

Built on the split MCP v2 packages (@modelcontextprotocol/server and @modelcontextprotocol/client 2.0.0), Zod 4, @trionlabs/stellar8004, TypeScript ESM, Node ≥ 22. The local stdio handshake currently negotiates protocol 2025-11-25; the remote handler targets the modern stateless 2026-07-28 protocol while retaining a stateless legacy compatibility lane. That is an implementation target, not a live conformance claim until the remote canary is recorded.


Contributing

Reviewing this against a grant or SOW? Start at docs/evidence.md — a deliverable-to-evidence map with verification steps, written to be checked without a technical background.

Known open work and release blockers are tracked in issues/, one file per issue.

Bug reports and PRs welcome. Read CONTRIBUTING.md first — it covers the project layout and the four invariants CI enforces (read-only/keyless, stdout-is-JSON-RPC-only, the trust boundary, and degrade-closed verification). Release history lives in CHANGELOG.md.

License

MIT — see LICENSE.

Available Tools

13 tools
find_agentFind AgentA
Read-onlyIdempotent

Natural-language discovery of on-chain Stellar (stellar-8004) agents. Returns a ranked list with capability/reputation signals. Use rank_agent for per-axis breakdowns and get_agent_profile for full detail. Agent names/descriptions are self-declared (unverified) and live only in each row's labeled selfDeclared slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
mppNoWhen present, require MPP micropayment support.
x402NoWhen present, require x402 (USDC pay-per-call) support.
limitNo
queryYesNatural-language description, e.g. 'a paid web scraper with a good reputation'.
trustNoRequire a trust model.
sortByNorelevance
verifyNoProbe the Reputation contract for the top results (slower; current probe verifies no reputation fields).
minScoreNoDeprecated ambiguous input; rejected. Use minExplorerScore.
hasServicesNoWhen present, require owner-declared service endpoint candidates.
minExplorerScoreNoMinimum upstream v1 Explorer total_score in protocol units; not local rank.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
agentsYes
coverageYes
interpretedQueryYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the tool's safety is clear. Description adds valuable behavioral context about the unverified nature of results and the natural-language ranking logic, which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states the core purpose and return type, second provides usage guidance and a crucial caveat. No wasted words, front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 10 parameters, the description is sufficient given high schema coverage (80%) and the presence of an output schema. It covers the tool's purpose, usage context, and a key trust caveat, making it complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so baseline is 3. Description adds no further detail on parameters beyond schema, but the schema itself already documents most parameters well. The description does flag the deprecated minScore parameter as rejected, which is helpful but minor.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Natural-language discovery of on-chain Stellar agents' with a specific verb and resource. It differentiates from siblings rank_agent and get_agent_profile by naming them and clarifying their distinct roles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use context and alternatives: 'Use rank_agent for per-axis breakdowns and get_agent_profile for full detail.' Also warns that agent names/descriptions are self-declared and unverified, indicating caution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_cardGet Derived A2A ProjectionA
Read-onlyIdempotent

Unverified A2A-shaped projection from indexed Stellar 8004 metadata. It is not an agent-published AgentCard and proves neither A2A conformance nor endpoint ownership. Owner-authored metadata and service candidates are isolated under card.selfDeclared.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesNumeric agent id, numeric string, or a full stellar:{network}:{identity}#{id} handle.
verifyNoAttempt the bounded Reputation-contract reachability probe; it does not verify reputation fields, A2A conformance, or endpoints.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cardYes
noteYes
conformanceYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds that the projection is unverified, not an official AgentCard, and that owner-authored data is under card.selfDeclared, exceeding annotation context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, all essential and front-loaded with the core purpose. No wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema is present (hidden), so return values need not be detailed. The description sufficiently explains the nature of the result and its limitations for a tool with 2 parameters and no nested objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters adequately. The description adds no parameter-specific meaning beyond the schema, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves an 'unverified A2A-shaped projection' from indexed metadata, distinguishing it from an official AgentCard. This separates it from siblings like get_agent_profile and verify_reputation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description warns that the projection is not agent-published and proves neither conformance nor endpoint ownership, implying when not to use it. However, it does not explicitly name alternative tools for verified info.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_feedbackGet Agent FeedbackA
Read-onlyIdempotent

Recent Explorer-indexed on-chain feedback for one agent (client-authored, untrusted → returned in a labeled selfDeclared slot, sanitized). Revoked entries are hidden unless includeRevoked is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by feedback tag.
pageNo
agentYesNumeric agent id, numeric string, or a full stellar handle.
limitNo
includeRevokedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
countYes
agentIdYes
summaryYes
coverageYes
feedbackYes
stellarIdYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond annotations by explaining the source (Explorer-indexed), trust model (client-authored, untrusted), sanitization, and the handling of revoked entries (hidden unless includeRevoked is set). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that convey the core purpose, data source, trust implications, and a key behavioral detail (revoked entries). Every word adds value; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters (1 required) and an output schema, the description covers the essential aspects: what the tool returns, the nature of the data, and an important filter condition. It does not mention pagination defaults or sorting, but these are often self-evident or covered by the output schema. The description is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, meaning several parameters (tag, page, limit, includeRevoked) lack descriptions in the schema. The tool description does not compensate by explaining these parameters or their usage. It only mentions the 'includeRevoked' behavior, leaving agents without sufficient guidance on how to correctly set 'tag', 'page', or 'limit'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool retrieves recent Explorer-indexed on-chain feedback for a single agent. It specifies that feedback is client-authored and untrusted, stored in a 'selfDeclared' slot, and sanitized. This distinguishes it from sibling tools like 'rank_agent' or 'get_agent_profile' which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives like 'find_agent' or 'verify_reputation'. There is no indication of when not to use it or which scenarios it is best suited for, leaving the agent to infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_profileGet Agent ProfileA
Read-onlyIdempotent

Full profile for one agent: typed identity, capabilities, declared scores, a rank breakdown, bounded Reputation-contract reachability status, recent feedback, the canonical stellar:{network}:{identity}#{id} handle, and an explicitly unverified derived A2A-shaped projection. The current probe verifies no reputation fields. No A2A conformance or endpoint ownership is implied; self-declared text is confined to labeled selfDeclared slots.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesNumeric agent id, numeric string, or a full stellar:{network}:{identity}#{id} handle.
verifyNoAttempt the bounded Reputation-contract probe (default on; current probe verifies no reputation fields).
feedbackLimitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
profileYes
agentCardYes
verificationYes
recentFeedbackYes
feedbackCoverageYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations by noting that the current probe verifies no reputation fields, no A2A conformance or endpoint ownership is implied, and self-declared text is confined to labeled slots. This clarifies the limits of the data returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise but dense with information. It front-loads the list of included components and then clarifies limitations. Each sentence adds value, though it could be slightly more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description adequately covers the tool's overall behavior and the key components returned. It does not need to detail return values. However, the mention of 'rank breakdown' and 'Reputation-contract reachability status' could be more precise without relying solely on the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%. The description does not add significant new semantic information beyond the schema's parameter descriptions. The explanation of the verify parameter is mostly redundant with the schema description, and the agent parameter is already well-documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it returns the full profile for one agent, listing specific components (typed identity, capabilities, declared scores, rank breakdown, Reputation-contract reachability status, recent feedback, canonical handle, and A2A-shaped projection). This clearly differentiates from sibling tools like find_agent, rank_agent, or get_agent_card.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. While it implies usage for obtaining a full agent profile, it lacks guidance on exclusions or specific contexts where other sibling tools would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agents_by_ownerGet Agents By OwnerA
Read-onlyIdempotent

List the owner endpoint's current page (up to 20 agents), ranked by the 3-axis engine. Coverage explicitly reports whether more owner rows exist. Self-declared text lives in each row's labeled selfDeclared slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
ownerYesOwner account (Stellar G-address).
verifyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
ownerYes
agentsYes
coverageYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value by noting pagination coverage reporting and the 'selfDeclared' slot in output, which are not in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences with no wasted words. Front-loaded with the primary action, followed by needed details and output structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and good annotations, the description covers pagination and key output details. Minor gaps include explanation of the 'verify' parameter and the '3-axis engine' ranking mechanism.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 33% schema description coverage, the description compensates partially by mentioning limit (up to 20 agents) and owner ('owner endpoint'). However, the 'verify' parameter is unexplained, and details about the ranking engine are vague.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists agents for a given owner, with pagination and ranking. It distinguishes from siblings like list_agents (generic) and find_agent (search). However, the phrase 'owner endpoint's current page' is slightly ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need agents for a specific owner, but does not explicitly state when not to use or mention alternatives like list_agents. Usage context is implicit but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_registry_healthGet Registry HealthA
Read-onlyIdempotent

Per-registry indexer health: last indexed ledger and staleness for the identity, reputation, and validation indexers. Staleness weakens the freshness of Explorer-declared data; it does not make a bounded contract read exhaustive.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
indexerYes
networkYes
anyStaleYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context by explaining the meaning of staleness and its implications, without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that immediately convey the tool's purpose and a key nuance about staleness. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, strong annotations, and an existing output schema (not shown), the description is complete. It covers the returned data, the affected indexers, and a behavioral insight, leaving no gaps for a simple health check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so schema coverage is 100%. The description does not need to add parameter information; it remains concise and assumes the schema is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns per-registry indexer health, including last indexed ledger and staleness for three specific indexers: identity, reputation, and validation. It uses precise terminology and distinguishes the tool's purpose from siblings like get_registry_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but does not provide explicit guidance on when to use it versus alternatives. There is no mention of prerequisites, exclusions, or comparative context with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_registry_statsGet Registry StatsA
Read-onlyIdempotent

Explorer v1 registry counts plus sampled metrics, with explicit metric definitions, 5,000-agent sample cap, non-global distribution warning, and snapshot limitations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
networkYes
coverageYes
limitationsYes
totalAgentsYes
agentsWithMppYes
agentsWithX402Yes
totalFeedbacksYes
totalValidationsYes
metricDefinitionsYes
trustDistributionYes
agentsWithServicesYes
totalUniqueClientsYes
averageFeedbackScoreYes
protocolDistributionYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context: specific metric definitions, a 5,000-agent sample cap, non-global distribution warning, and snapshot limitations. This goes beyond the annotations to inform the agent of important constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise yet packed with relevant information. It front-loads the core purpose and follows with specific constraints. It earns its place without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description does not need to detail return values. It covers key caveats like sample cap and distribution warning, making it sufficiently complete for a simple stats retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the description doesn't need to explain parameter usage. The baseline for zero parameters is 4, and the description appropriately focuses on the tool's output and constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides 'registry counts plus sampled metrics' and lists specific features like sample cap and warnings. It effectively communicates the purpose of retrieving registry stats, though it does not explicitly differentiate from sibling tools like get_registry_health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions constraints (sample cap, non-global distribution warning) but does not provide explicit guidance on when to use this tool versus alternatives such as get_registry_health or leaderboard. Given the number of sibling tools, more context on use cases is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

leaderboardLeaderboardA
Read-onlyIdempotent

Top-ranked agents in a bounded registry scan (or filter), by the 3-axis engine, with per-axis breakdown. On-chain verification of the top rows is optional. Coverage states whether the scan exhausted the filtered set; self-declared text lives in each row's labeled selfDeclared slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
mppNoWhen present, require indexed MPP support.
x402No
limitNo
trustNo
verifyNoProbe the Reputation contract for the top results; current probe verifies no reputation fields.
minScoreNoDeprecated ambiguous input; rejected. Use minExplorerScore.
hasServicesNo
minExplorerScoreNoMinimum upstream v1 Explorer total_score in protocol units; not local rank.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
agentsYes
coverageYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds extensive behavioral details: bounded scan/filter, per-axis breakdown, optional on-chain verification, coverage state, and self-declared text slots, going well beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively short and front-loaded with the core purpose. However, it uses domain-specific jargon that may reduce clarity for some agents. Every sentence adds value, but could be more accessible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (not shown in input), the description covers key aspects: boundedness, 3-axis, breakdown, verification, coverage, self-declared. It does not mention return format or pagination, but those may be in output schema. Adequate for the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, and the description adds context for verify (optional verification) and trust (enum meaning) but does not explain mpp, x402, limit, hasServices, or minExplorerScore beyond schema. It partially compensates for missing schema descriptions but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves top-ranked agents via a bounded registry scan with per-axis breakdown, using a 3-axis engine. It distinguishes itself from siblings like find_agent or rank_agent by specifying leaderboard-specific features (bounded scan, breakdown, on-chain verification).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as rank_agent or list_agents. The description implies usage for leaderboard queries but does not provide context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsList AgentsA
Read-onlyIdempotent

Paginated, filterable listing of registered agents, ranked by the 3-axis engine. Filter by x402/mpp/hasServices/trust/minExplorerScore. Self-declared text lives in each row's labeled selfDeclared slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
mppNoWhen present, require indexed MPP support.
pageNo
x402No
limitNo
trustNo
sortByNoscore
verifyNoProbe the Reputation contract for the top results; current probe verifies no reputation fields.
minScoreNoDeprecated ambiguous input; rejected. Use minExplorerScore.
hasServicesNo
minExplorerScoreNoMinimum upstream v1 Explorer total_score in protocol units; not local rank.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
countYes
agentsYes
coverageYes
paginationYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, open-world hints. The description adds specific behavioral details: pagination, ranking by 3-axis engine, and a labeled selfDeclared slot. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no superfluous content. Front-loaded with key info: paginated, filterable, ranking. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown), the description does not need to detail return values. It covers filtering, pagination, ranking, and a key field (selfDeclared). For a list tool with 10 params (0 required), this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, and the description does not explain individual parameters beyond listing their names. It adds minimal parameter meaning beyond what the schema provides, but lists the filter keys as context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a paginated, filterable listing of registered agents, ranked by a 3-axis engine. This explicitly defines the verb (list), resource (agents), and scope (filtered/paginated), and differentiates it from sibling tools like find_agent or rank_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists available filters but does not provide explicit guidance on when to use this tool versus alternatives like find_agent or resolve_agent. It implies usage for listing/filtering but lacks use-or-not-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_servicesList ServicesA
Read-onlyIdempotent

Catalog of self-declared service endpoint candidates, each with its owning agent's indexed owner-declared capability/trust signals and ranked score. Filter by x402/mpp/trust/minExplorerScore/search. No endpoint is probed for liveness, ownership, protocol conformance, or payment behavior. Service labels/endpoints are unverified and live in each row's labeled selfDeclared slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
mppNoWhen present, only MPP micropayment services.
pageNo
x402NoWhen present, only x402 (USDC pay-per-call) services.
limitNo
trustNo
searchNoFree-text filter over agent name/description.
minScoreNoDeprecated ambiguous input; rejected. Use minExplorerScore.
minExplorerScoreNoMinimum upstream v1 Explorer total_score in protocol units; not local rank.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
countYes
coverageYes
servicesYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, etc.), the description adds critical context: endpoints are not probed for liveness/conformance, and labels are unverified. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with key functionality and filter options, then limitations. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and presence of output schema, description covers data nature and filtering well. Could add note on pagination but not required since schema covers it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 63%. Description adds meaning for filters like x402, mpp, trust, minExplorerScore, and notes minScore is deprecated. However, page and limit are left to schema, which may be insufficient for complete understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a catalog of self-declared service endpoint candidates with filtering options. It distinguishes from siblings like 'list_agents' by focusing on services.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists filter parameters but does not explicitly state when to use this tool versus alternatives. It implies use for unverified service discovery, lacking direct comparison with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_agentRank AgentA
Read-onlyIdempotent

Rank an explicit agent set or a query's candidates using the deterministic declared-evidence policy: normalized indexed average × fixed evidence strength (0.4 capped volume + 0.6 breadth). Owner-declared capability fields add zero. On-chain checks are evidence metadata and never inflate rank. Every row carries a full per-axis breakdown and a declared-vs-verified verification block. Provide EITHER agentIds OR query.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoNatural-language query whose candidates are ranked. XOR with agentIds.
sortByNorelevance
verifyNoAttempt the bounded Reputation-contract probe (default on; current probe verifies no reputation fields).
weightsNoDeprecated and rejected when supplied. The v1 policy fixes evidence weights at volume=0.4 and breadth=0.6.
agentIdsNoExplicit agent ids to rank (maximum 50 on this transport). Provide EITHER agentIds OR query, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
agentsYes
coverageNo
rankVersionYes
evidenceWeightsYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as readOnly, idempotent, and non-destructive. The description adds valuable behavioral details: the deterministic policy, that on-chain checks are metadata-only and never inflate rank, and that output includes breakdown and verification blocks. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that packs significant information without wasted words. It could benefit from bullet points for clarity, but it remains concise and front-loaded with the core policy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the existence of an output schema, the description covers the key aspects: ranking formula, XOR requirement, deprecated parameter, and output structure. It lacks a brief note on pagination or sorting, but these are inferable from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% with 4 of 6 parameters described. The description adds context like the XOR constraint and the deprecation of 'weights', but does not explain 'limit' or 'sortBy' beyond schema defaults. This is adequate but not exemplary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool ranks agents using a deterministic evidence policy, specifying the exact formula. It distinguishes from siblings like 'find_agent' by requiring XOR between agentIds and query, making its purpose clear and unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the XOR condition ('Provide EITHER agentIds OR query') and warns that 'weights' is deprecated and rejected. However, it does not explicitly describe when to prefer this over siblings like 'leaderboard' or 'verify_reputation', leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_agentResolve AgentA
Read-onlyIdempotent

Resolve any agent reference (id, numeric string, stellar handle, or owner G-address) to the canonical typed identifiers (numeric id + stellar + CAIP-2). Owner addresses expand the current owner API page (up to 20); coverage reports whether more rows may exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesAgent id, numeric string, stellar:{network}:{identity}#{id} handle, or owner G-address.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
countYes
ownerYes
agentsYes
networkYes
coverageNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint), the description adds behavioral context: owner addresses expand an API page with a limit of 20, and coverage indicates if more rows exist. This discloses pagination behavior and result structure, adding value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. Every word is informative, and key points are front-loaded. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with high schema coverage and an output schema, the description is complete: it explains input types, behavior with owner addresses, and pagination. No additional details are needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage and already lists all accepted reference formats. The description does not add new semantics beyond what is in the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves various agent references to canonical identifiers, specifying input types (id, numeric string, stellar handle, owner G-address). It is specific about verb and resource, but does not explicitly contrast with sibling tools, though the resolution function is distinct from listing or ranking tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like find_agent or get_agents_by_owner. It implies usage for resolving references but does not set context, exclusions, or mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_reputationVerify ReputationB
Read-onlyIdempotent

Fail-closed reputation observation for one agent. The current Reputation contract has no authoritative client-set count/cursor and expired index entries can create holes, so the server performs one bounded reachability read but does not call get_summary or claim a diff. Current attempted checks return unavailable with explicit scope; skipped means not attempted.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesNumeric agent id, numeric string, or a full stellar handle.

Output Schema

ParametersJSON Schema
NameRequiredDescription
agentIdYes
verifiedYes
stellarIdYes
verificationYes

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and idempotentHint. The description adds significant context about the contract's limitations (holes, bounded reachability), the fact that checks return unavailable with explicit scope, and clarifies that it does not call get_summary. This goes beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively long and technical, explaining underlying contract mechanics. While it provides necessary context, it could be more concise for quick comprehension. The front-loaded content is clear, but the detail level might hinder readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool and the presence of an output schema (not shown but indicated), the description adequately explains the tool's behavior and limitations. However, it does not mention return value structure, relying on the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the single parameter 'agent' with detailed types and descriptions. The description does not add extra parameter information, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool is for reputation observation of a single agent, using a fail-closed approach. It distinguishes from siblings by specifying that it does not call get_summary or claim a diff, but it could more explicitly differentiate from rank_agent and similar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like rank_agent or leaderboard. It implies a scenario where reputation verification is needed but lacks guidance on when not to use it or what prerequisites are required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 13 tool updatesv0.1.0
    • First observedfind_agent
    • First observedget_agent_card
    • First observedget_agent_feedback
    • First observedget_agent_profile
    • First observedget_agents_by_owner
    • First observedget_registry_health
    • First observedget_registry_stats
    • First observedleaderboard
    • First observedlist_agents
    • First observedlist_services
    • First observedrank_agent
    • First observedresolve_agent
    • First observedverify_reputation

TDQS

A3.9/5.0
Disambiguation4/5

Each tool has a clear, distinct purpose covering search, ranking, profiles, listings, feedback, reputation, and registry health. A minor overlap exists between get_agent_profile and get_agent_card, but both descriptions explicitly differentiate their roles.

Naming Consistency4/5

Almost all tools follow a consistent verb_noun pattern (e.g., find_agent, rank_agent, list_services). The exceptions are leaderboard (noun only) and get_agents_by_owner (uses 'by'), but these are minor deviations that do not impede understanding.

Tool Count5/5

With 13 tools, the server covers all essential operations for an agent search and registry exploration server without being overwhelming. The count is well-scoped for the domain.

Completeness5/5

The tool set provides comprehensive coverage of the search/exploration domain: discovery, ranking, detailed profiles, service listings, feedback, reputation verification, and registry health. No obvious gaps are present for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/berkingurcan/stellar-agent-search'

If you have feedback or need assistance with the MCP directory API, please join our Discord server