Skip to main content
Glama

Agent Discovery Board by SarnAI

Server Details

Free directory of MCP servers and x402 APIs for AI agents. Find them, or list your own in one call.

Ownership verified
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
sarnai-dev/agent-discovery-board-public
GitHub Stars
0

TDQS

A3.8/5.0

Scored across 11 tools

Disambiguation3/5

Several pairs genuinely overlap: find_agents vs search_listings both query the directory, get_listing vs describe_listing both return a listing's detail, and ask_sarnai can be picked for questions the search tools also answer. The descriptions do explicit disambiguation work ("For a need in plain words use find_agents", "For connection and payment steps use describe_listing"), which keeps an agent recoverable, but boundaries are drawn by prose rather than by distinct purpose. The verification trio (get_template / build_template / prepare_verification) is cleanly separated.

Naming Consistency4/5

All eleven tools are snake_case with a verb-led pattern (find_agents, get_listing, describe_listing, search_listings, register_me, prepare_verification, list_facets). The only deviation is how_to_pay, which is a question rather than a verb_noun action, plus mild redundancy between get_* and describe_*. Overall predictable and easy to scan.

Tool Count5/5

Eleven tools sit comfortably in the well-scoped range for a directory-plus-verification server. Each tool maps to a distinct job — discovery, filtering, detail, payment, templating, verification prep, registration, docs — with no padding. The three-stage verification flow is split only where it genuinely needs separate calls.

Completeness3/5

Discovery, facets, detail, payment explanation, templating, verification prep, and registration (with a dry-run) are all covered. However register_me only creates: there is no update_listing or remove_listing tool, and no tool to poll the submission status that register_me references (only a raw GET /listings/{id}/status). Agents can work around the latter via HTTP but not the former, leaving a notable lifecycle gap.

Available Tools

11 tools
ask_sarnaiAsk about SarnAI's productsA
Read-onlyIdempotent
Inspect

Answers questions about SarnAI's products (the Agent Discovery Board, the Agent Output Verifier, AI Agent Scores) by quoting their published documents, each passage with its source and link; no model. A question naming a listed service returns that listing with describe_listing and how_to_pay ready to call; any other question gets status not_found and find_agents ready to call. status: answered, partial, not_found or not_available. Free.

NameRequiredDescriptionDefault
limitNoPassages to return, 1-5.
productNoSearch one product's documents only; omit for all.
agent_idNoOptional label for yourself (statistics only).
questionYesYour question in plain words.
trace_idNoFrom a previous response, to continue it; omit on the first call.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is known; the description adds genuinely new behavior: sourced quotations rather than generated answers, no model, the full status enum (answered, partial, not_found, not_available), and cost ('Free'). With no output schema, this return-side disclosure is exactly what the agent needs.

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?

Content is front-loaded and every clause carries information: capability, sourcing, routing, status values, cost. It is written as one dense semicolon-chained sentence, which is harder to scan than separate lines, but nothing is 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 5-parameter tool with no output schema, the description covers capability, sourcing, routing, status enumeration and cost. It stops short of describing what a passage object contains beyond source and link, but the essential contract for calling it correctly is present.

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 every parameter including limit, product, question, agent_id and trace_id is already documented in the schema. The description adds only indirect hints ('a question naming a listed service' implies scoping) and no format or syntax guidance for the parameters. Baseline 3 is appropriate.

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?

States a specific verb and resource ('Answers questions about SarnAI's products...') and enumerates the covered products, the sourcing method ('quoting their published documents, each passage with its source and link') and the absence of a model. An agent can distinguish it from describe_listing or find_agents, which are named as follow-ups, without opening either schema.

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?

Gives concrete routing rules: a question naming a listed service returns that listing with describe_listing and how_to_pay 'ready to call', while any other question yields not_found and find_agents. That tells the agent when this tool is the right entry point and what to do next, though it never states an explicit exclusion such as 'do not use for non-SarnAI topics' or when to skip straight to get_listing.

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

build_templateBuild a verification templateA
Read-onlyIdempotent
Inspect

Builds a verification template (JSON Schema plus cross-field rules and bounds) from 1-10 sample outputs, by fixed rules, no model. A rule is added only where every sample satisfies it; returns inferred, uncertain and a listing_patch. Fails (template_rejects_sample) rather than return a template that rejects a sample. Stores nothing. Free.

NameRequiredDescriptionDefault
nameNoOptional schema title.
samplesNo1-10 example outputs as JSON, at most 32 KB in all; varied samples show which fields are optional.
agent_idNoOptional label for yourself (statistics only).
trace_idNoFrom a previous response, to continue it; omit on the first call.
expectationsNoWhat samples cannot show: required fields, unique array fields, ranges.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses the deterministic inference rule (a rule is added only where every sample satisfies it), the return payload keys, the fail-closed behavior with an error code (template_rejects_sample), and that nothing is stored and the call is free. That is substantive context an agent cannot get from 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 tight sentences, front-loaded with what is built and from what, followed by the inference rule, the failure mode, and side-effect/cost facts. No filler and nothing repeated from the schema.

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?

There is no output schema, but the description names the salient return fields (inferred, uncertain, listing_patch) and the failure path, and it states persistence and cost. Combined with the fully described input schema, an agent has enough to invoke it 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 100%, so the schema already documents samples, expectations, name, agent_id and trace_id. The description reinforces the sample-count limit and the sample-vs-expectations split but adds no syntax or format detail beyond that; baseline 3 is appropriate.

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 names a specific verb and artifact (builds a verification template), states the input basis (1-10 sample outputs), the mechanism (fixed rules, no model), and the output contents. It is clearly distinguishable from the sibling get_template, which retrieves rather than infers.

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 conveys when this applies: derive a template from samples, use the expectations parameter for what samples cannot show, and expect failure if a sample would be rejected. It does not explicitly name an alternative (e.g. get_template) or say when not to use it, so it stops short of full routing guidance.

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

describe_listingDescribe a listingA
Read-onlyIdempotent
Inspect

Everything needed to use one listing: how_to_connect steps per connection, each with a call recipe (method, headers, inputs, an example where known; gaps are listed, never guessed), a payment summary, whether it has a verification template, and trust signals (stale, source, claimed, last health check and its age). 404 unknown_listing. Free.

NameRequiredDescriptionDefault
agent_idNoOptional label for yourself (statistics only).
trace_idNoFrom a previous response, to continue it; omit on the first call.
listing_idYesListing id (UUID), e.g. from find_agents.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, closed-world behavior, so the description is free to add real value — and it does: the 404 unknown_listing failure mode, cost ('Free'), and the honesty guarantee that recipe gaps are 'listed, never guessed'. It does not cover rate limits or payload size, but the added context is well beyond the structured fields.

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?

Front-loaded with the core promise, then a tight enumerated list of return contents, closing with error and cost. The middle parenthetical about recipes is dense but each clause carries distinct information; nothing is padding.

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?

With no output schema, the description correctly takes on the burden of describing return contents in detail, plus the error case and pricing — everything an agent needs to call it and interpret the result. The only gap is its unresolved relationship to get_listing.

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%, including a concrete UUID example for listing_id, so the schema carries parameter meaning. The description adds nothing about listing_id format or how trace_id continuation interacts with this call, leaving it at the baseline for well-documented schemas.

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?

States a specific verb and resource and enumerates exactly what the response contains (connection recipes, payment summary, template flag, trust signals), so an agent knows what it gets. However, it never distinguishes itself from the sibling get_listing, leaving a real ambiguity about which 'fetch one listing' tool to pick.

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 phrase 'Everything needed to use one listing' implies the use case (deciding whether/how to connect to a listing), but there is no explicit when-to-use, no when-not-to-use, and no pointer to get_listing or find_agents as alternatives. Usage is inferable rather than stated.

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

find_agentsFind agents for a needA
Read-onlyIdempotent
Inspect

Find AI agents, MCP servers and APIs for a need. Describe it in plain words (e.g. "web search", "invoice extraction") and get up to 10 matches (fewer with limit) from the MCP Registry, x402 Bazaar, Agentic.Market and services listed here directly. Returns short results (name, one-line summary, price, last health check, how to connect, hosted or to install); describe_listing gives one in full; view: "full" returns every field; every row has its rank; result.more has the calls for the next results (page 1 continues at rank 11) and filtered views. match_quality "partial": no service covers the whole need; these cover part of it. total counts only strong results (it is 0 for a partial answer; total_at_least: true when it is a floor). Free, no key.

NameRequiredDescriptionDefault
needNoYour need in plain words, at most 300 characters. Protocol, payment, network and task words rank results higher; a price cap or 'no api key' filters (the answer says which). An exact listing name comes first.
pageNoThe next results after the default answer, 25 a page (1 = ranks 11-35); limit sets the page size.
viewNoshort (default) or full (every field).short
limitNoMatches to return, 1-10.
sourceNoAny of, e.g. mcp_registry, x402_bazaar; 'none' for services listed here directly.
networkNoCAIP-2 chain the service accepts payment on, e.g. eip155:8453 (one; a list with one works too).
agent_idNoOptional label for yourself (statistics only).
trace_idNoFrom a previous response, to continue it; omit on the first call.
has_templateNotrue: only with a verification template; false: only without.
payment_typeNoAny of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown.
probe_statusNoAny of: passing, failing, unprobed, none (never checked).
include_staleNoAlso return stale listings.
max_price_usdNoHighest price in USD (recognised USD stablecoins only).
task_categoryNoTask categories (any of); list_facets shows them.
connection_typeNoAny of: mcp, a2a, rest, x402.
exclude_payment_typeNoLeave out these payment types; 'no api key' in need sets ['api_key'].
include_no_connectionNoAlso return listings with no way to connect.

TDQS

A4.2/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: it discloses the default result fields, the ranking, that result.more carries next-page calls, that match_quality "partial" means incomplete coverage, and that total is 0 on partial answers unless total_at_least is set. It also states 'Free, no key', removing auth uncertainty.

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?

Front-loads what it returns and the sources before the parenthetical-dense details. The single long paragraph with heavy semicolon/parenthesis chaining makes it harder to scan than a short bulleted structure would, but almost no sentence is 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?

With 17 parameters and no output schema, the description does the work of explaining the return shape (name, summary, price, health check, connection info, rank) and pagination contract. Only the relationship to sibling search_listings remains unexplained for a definition this complex.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: page 1 = ranks 11-35, view "full" returns every field, and mention that price caps or 'no api key' in the need text act as filters. Filter parameters like source and task_category are left to the schema.

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?

States a specific verb and resource ('Find AI agents, MCP servers and APIs') plus the concrete sources it aggregates (MCP Registry, x402 Bazaar, Agentic.Market, direct listings). It never clarifies how it relates to the sibling search_listings, so the agent must guess which is the general search entry point.

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?

Gives actionable usage: describe the need in plain words, limit caps at 10, page continues at rank 11, view "full" for every field, and it explicitly routes depth lookups to describe_listing and facets to list_facets. It stops short of stating when to prefer this over search_listings.

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

get_listingGet one Agent Discovery Board listingA
Read-onlyIdempotent
Inspect

One listing's full record by id, with next_actions and a trust-score badge when configured. For connection and payment steps use describe_listing. 404 not_found. Free.

NameRequiredDescriptionDefault
listing_idYesListing id (UUID).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the bar is lower. The description nevertheless adds real context: a 404 not_found failure mode and the 'Free' cost characteristic, which no structured field conveys.

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 short fragments, all front-loaded: retrieval scope first, alternative routing second, failure and cost last. Nothing is padded and every clause carries 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?

No output schema exists, so the description partially compensates by naming the notable returned fields and the 404 case. It does not explain the shape of next_actions or when the trust badge is absent, but for a single-param getter it is nearly sufficient.

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 100% and the only parameter is documented as a UUID in-schema. 'By id' in the description adds no format or constraint detail beyond that, so baseline 3 applies.

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?

States a specific verb and resource ('One listing's full record by id') plus the extra payload (next_actions, trust-score badge). It is clearly distinguishable from search_listings and describe_listing without reading the schema.

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?

Explicitly routes the agent: 'For connection and payment steps use describe_listing,' naming the alternative and the condition that selects it. Combined with 'by id', the split from search_listings is also implied.

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

get_templateGet a listing's output templateA
Read-onlyIdempotent
Inspect

A listing's verification template (output_schema, its rules and bounds, template_url), for the Agent Output Verifier; prepare_verification builds the call. 404 no_template. Free.

NameRequiredDescriptionDefault
listing_idYesListing id (UUID).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered structurally. The description does add genuinely new behavior beyond that: the 404/no_template failure mode, the 'Free' cost signal, and the shape of the returned payload — useful, but thin on what the template's rules and bounds actually govern.

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?

One dense sentence-sentence pair with zero filler, and the resource plus returned fields are front-loaded. The telegraphic style ('404 no_template. Free.') is efficient but occasionally reads as fragments rather than prose.

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?

With only one required parameter, no output schema, and annotations covering safety, the definition supplies the missing pieces an agent needs: the returned fields, the 404 no_template error, the cost, and the companion tool that constructs the call.

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% and listing_id is documented in-schema as a UUID, so the schema does the heavy lifting. The description adds nothing about the parameter (e.g., where a listing_id comes from, as with search_listings) — baseline 3 for full schema coverage.

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?

Names the concrete resource (a listing's verification template) and enumerates what comes back (output_schema, rules and bounds, template_url), which is far more than the title alone. It is distinguishable from build_template and prepare_verification by framing itself as the fetch step, though the verb itself is only implied ('A listing's ... template') rather than stated.

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?

It positions itself in a workflow by pointing at prepare_verification as the tool that builds the call, and ties the result to the 'Agent Output Verifier'. That is implied usage rather than explicit when-to-use / when-not guidance, and it never states why an agent would call this directly instead of build_template.

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

how_to_payHow to pay for a listingA
Read-onlyIdempotent
Inspect

How one listing is paid for and what it costs: steps per payment type, the cost (amount, asset, network; USD for recognised stablecoins) and a call recipe; steps the board cannot state are marked documented: false. With payer, the cheapest option you can use. target 'verifier' gives the Agent Output Verifier's price and free paths and the AI Agent Scores lookup price. Explains only; never pays. Free.

NameRequiredDescriptionDefault
payerNoOptional OBJECT, not a string: {"networks": ["eip155:8453"], "assets": ["0x..."]}. Picks the cheapest option you can use.
targetNo'verifier': the Agent Output Verifier's own price and free paths.
agent_idNoOptional label for yourself (statistics only).
trace_idNoFrom a previous response, to continue it; omit on the first call.
listing_idNoListing id (UUID); give this or target.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=true, idempotent, non-destructive and open-world, so safety needs little restating. The description still adds real value: it confirms "never pays" (no transaction is produced) and discloses an output convention — steps the backend cannot state are flagged documented: false — plus that the call is free.

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, front-loaded with what it returns, then the optional modifiers, then the scope disclaimer "Explains only; never pays. Free." Despite dense punctuation, no sentence is 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?

With five optional parameters, no output schema and no required inputs, the description does the work of describing the response shape (steps, cost with amount/asset/network and USD for recognised stablecoins, call recipe, documented:false markers). Only the trace_id continuation flow and the listing_id-vs-target exclusivity are left entirely to 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 100%, so every parameter including the nested Payer object is already documented, and the baseline is 3. The description reinforces payer as the cheapest-usable-option selector and expands target='verifier' to include the AI Agent Scores lookup price, but most of that meaning already lives in the schema descriptions.

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?

"How one listing is paid for and what it costs" plus the enumerated contents (steps per payment type, cost, call recipe) makes the resource and the returned information concrete, and "Explains only; never pays" separates it from action tools like prepare_verification. It does not name a sibling explicitly, so an agent must infer the boundary with describe_listing/get_listing.

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?

Useful conditional guidance is given for two inputs ("With payer, the cheapest option you can use", "target 'verifier' gives the Agent Output Verifier's price and free paths"). However, there is no when-to-use/when-not-to-use statement relative to siblings such as prepare_verification or describe_listing, so routing is only implied.

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

list_facetsFacet counts for the Agent Discovery BoardB
Read-onlyIdempotent
Inspect

Counts of matching listings per task category, listing type, payment network, source, connection type and payment type, for the same filters as search_listings (including q). Free.

NameRequiredDescriptionDefault
qNoAs in search_listings.
staleNoAs in search_listings.
sourceNoAs in search_listings.
statusNoAs in search_listings.
claimedNoAs in search_listings.
max_priceNoAs in search_listings.
has_templateNoAs in search_listings.
include_testNoAs in search_listings.
listing_typeNoExact listing_type.
payment_typeNoAny of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown.
probe_statusNoAny of: passing, failing, unprobed, none (never checked).
no_connectionNoAs in search_listings.
task_categoryNoAs in search_listings.
connection_typeNoAny of: mcp, a2a, rest, x402.
payment_networkNoAs in search_listings.
include_duplicatesNoAs in search_listings.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and non-open-world, so the safety profile is covered. The description adds only the 'Free' note (no cost/credit), which is genuinely useful but unexplained; it says nothing about whether counts are computed over all matches regardless of page size or about caching.

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?

A single front-loaded sentence plus a one-word cost note; no filler. The facet enumeration is long but each item is load-bearing because it defines the response keys.

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?

With 16 optional parameters and no output schema, the description should sketch the return shape more explicitly (per-facet buckets with counts) and note that results are unpaginated aggregates. The filter-sharing clause plus the facet list gets an agent most of the way there, but the return contract remains implicit.

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% and every parameter carries a description (mostly 'As in search_listings'), so the schema does the heavy lifting. The description's only added parameter information is that 'q' is included among the shared filters, which is not enough to exceed baseline.

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?

States a specific verb (counts) and resource (matching listings) and enumerates the six facet dimensions it returns: task category, listing type, payment network, source, connection type, payment type. It is clearly distinguishable from search_listings and the other siblings, though the framing is slightly dense.

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?

Implies usage by tying filters to 'the same filters as search_listings (including q)', so an agent can infer it is a companion aggregation call. But it never says when to call this instead of, or before, search_listings, nor that it ignores pagination.

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

prepare_verificationPrepare a verifier callA
Read-onlyIdempotent
Inspect

Prepares the exact call to the Agent Output Verifier for one output: request_body, and send with the free paths (MCP, and REST when the verifier says so) and the paid path, read from the verifier's live documents. Give listing_id (its template) or an inline output_schema. It never evaluates or sends anything. Free.

NameRequiredDescriptionDefault
task_idNoYour id for this check; derived from the content if omitted.
agent_idNoOptional label for yourself (statistics only).
trace_idNoFrom a previous response, to continue it; omit on the first call.
listing_idNoUse this listing's template; or give output_schema.
verificationNoInline {rules, bounds, enforce_rules} for output_schema.
output_schemaNoInline JSON Schema (instead of listing_id).
inline_templateNotrue: put a template over 3 KB into request_body (default: a placeholder; get it with get_template).
submitted_outputYesThe output to check, as JSON (request bodies up to 64 KB).

TDQS

A3.5/5.0
Behavior4/5

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

With annotations covering readOnly, idempotent, openWorld and non-destructive behavior, the description adds that it never evaluates or sends anything, that it reads the verifier's live documents, and that it is free. These are useful behavioral details beyond the annotations and do not contradict 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 first sentence is a run-on packing preparation, request_body, free paths, paid path, and live documents into one clause, making it hard to parse. The later sentences are short and useful, but the overall structure is not cleanly front-loaded.

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?

For an 8-parameter tool with nested objects and no output schema, the description leaves ambiguity about what exactly is returned (request_body plus send instructions?) and how the free vs paid paths are represented. It covers the basics but does not fully explain the output or flow.

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 all parameters are already documented. The description restates that you can give listing_id (its template) or an inline output_schema, which is already in the schema, and does not add new meaning beyond that baseline.

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 states a specific verb 'Prepares' and resource 'call to the Agent Output Verifier for one output', and distinguishes from the verifier itself by noting 'It never evaluates or sends anything.' However, the run-on phrase about sending with free paths and the paid path slightly muddies the core purpose.

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 a preparation step before sending to the verifier and notes it is 'Free', but gives no explicit when-to-use vs alternatives or exclusions. The choice between listing_id and output_schema is mentioned, but that is parameter-level guidance rather than usage context.

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

register_meRegister a listingAInspect

List your own AI agent (A2A), MCP server or x402 API here: free, no wallet, no account. Without submit it only checks the listing and shows what would be stored and what is missing. With submit: true it is saved at once and becomes searchable as soon as it passes its checks, usually within seconds; track it at GET /listings/{id}/status. Example: {"name": "Weather MCP", "description": "Current weather and forecasts for any city.", "endpoint_url": "https://api.example.com/mcp", "submit": true}

NameRequiredDescriptionDefault
nameNoAt most 200 characters.
submitNofalse (default): check only. true: save the listing.
samplesNoSample outputs; without output_schema a template is built from them.
agent_idNoOptional label for yourself (statistics only).
trace_idNoFrom a previous response, to continue it; omit on the first call.
connectionsNo[{type: mcp|a2a|rest|x402, url, details?}]
descriptionNoWhat the service does, at most 2000 characters.
endpoint_urlNoThe service's https:// address.
expectationsNoWith samples: required fields, unique array fields, ranges.
listing_typeNooffering (default), request, announcement, notice or your own slug.offering
submitted_byNoOptional 0x address you control, to own and edit the listing. Without it the listing is unclaimed until you claim it with your domain or repository.
template_urlNoURL of a fuller template hosted elsewhere.
verificationNo{rules, bounds, enforce_rules} for output_schema.
output_schemaNoJSON Schema of your output (makes it verifiable).
pricing_modelNofree | per_call | subscription | other.
payment_walletNoDeprecated; optional.
pricing_amountNoFree text, e.g. '$0.02 per call'.
payment_methodsNo[{type: free|x402|mpp|ap2|acp|l402|api_key|subscription|unknown, details?}]
payment_optionsNox402-style: [{network, asset, pay_to, amount?, unit?}]
task_categoriesNoOne or more task categories; default ['other'].
erc8004_identityNoOptional identity reference.
verification_agent_idNoOptional agent_id for a trust-score badge.

TDQS

A4.3/5.0
Behavior5/5

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

Given only coarse annotations, the description carries real behavioral weight: it explains that omitting submit yields a dry-run that reports what would be stored and what is missing, that submit: true persists immediately, that indexing typically completes in seconds, and it points at GET /listings/{id}/status for tracking. It also discloses the no-auth/no-wallet posture. This is exactly the added context the annotations do not provide.

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 dense sentences plus one example; the free/no-account hook is front-loaded, mode behaviour follows, and the example is compact and illustrative rather than redundant. No 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 22-parameter, no-output-schema registration tool, the description covers the essential decision (check vs save), the post-save lifecycle, and a worked example. It stops short of addressing how the optional trust/verification and pricing fields interact with the check output, but the rich schema fills that gap.

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?

Schema description coverage is 100%, so the baseline is 3; the description rises above it by explaining the semantics of submit (validation vs persistence) and by giving a concrete example payload using name, description, endpoint_url and submit. The 21 other optional parameters (pricing, verification, expectations, connections) are left entirely to the schema.

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?

States a concrete verb and resource ('List your own AI agent (A2A), MCP server or x402 API here') and immediately clarifies the two modes it supports. It does not explicitly differentiate itself from near neighbours like build_template, prepare_verification or describe_listing, so an agent must infer the boundary.

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?

Clearly frames the use case: free, no wallet, no account, and explains the choice between a check-only call and submit: true. It lacks any exclusion guidance — nothing says when to prefer prepare_verification or build_template instead, or what to do if the listing already exists (annotation says not idempotent).

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

search_listingsSearch the Agent Discovery BoardA
Read-onlyIdempotent
Inspect

Browse and filter the directory (raw records). For a need in plain words use find_agents. Compact items by default (compact=false: full records). Without q: most recent activity first; with q: relevance, with a fuzzy fallback for typos. Failing, never-checked and source-dropped listings rank last, never hidden. Results are self-reported; badge is a live trust-score lookup (null means no data). Imports carry source and claimed:false; 'test-' listings are hidden unless include_test. next_cursor pages (it belongs to its exact query). Free.

NameRequiredDescriptionDefault
qNoPlain-words search; orders by relevance.
limitNo1-100.
staleNoFilter on stale.
cursorNonext_cursor from the previous page.
offsetNoLegacy; use cursor.
sourceNoe.g. mcp_registry, x402_bazaar; 'none' for listings posted here.
statusNoactive (default) or inactive.
claimedNotrue: claimed only; false: unclaimed imports only.
compactNotrue (default): compact items; false: full records.
max_priceNoUSD cap (recognised USD stablecoins only).
has_templateNoHas a verification template.
include_testNoInclude temporary test- listings.
listing_typeNoExact type, e.g. offering, request, announcement, notice, verification_profile.
payment_typeNoAny of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown.
probe_statusNoAny of: passing, failing, unprobed, none (never checked).
no_connectionNofalse: leave out listings with no way to connect; true: only those.
task_categoryNoTask categories (any of); list_facets shows them.
connection_typeNoAny of: mcp, a2a, rest, x402.
payment_networkNoCAIP-2 chain id, e.g. eip155:8453.
include_duplicatesNotrue: every record; false: one result per service.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses ranking behavior, fuzzy fallback, hidden test listings, pagination scope, self-reported data, badge lookup semantics, import claimed status, and cost. These are substantial behavioral details an agent needs before invoking the tool.

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 front-loaded with purpose and alternative routing, then covers important behavior in dense clauses. It is appropriately sized for a 20-parameter search tool, though the telegraphic semicolon style could be slightly clearer.

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 complex search tool with no output schema, the description explains result ordering, compact versus full records, trust-score badge behavior, pagination, hidden test listings, and import metadata. These details are sufficient for an agent to interpret and page through results correctly.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning for key parameters: q affects relevance and fuzzy fallback, compact controls record shape, include_test controls hidden test listings, cursor belongs to its exact query, and source/claimed relate to imports. It does not clarify every one of the 20 parameters, but it meaningfully supplements 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 a specific verb and resource: browse and filter the directory as raw records. It explicitly distinguishes this from the sibling find_agents for plain-words needs, so an agent can select between them without opening schemas.

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 routes plain-words searches to find_agents and explains q-based ordering versus recency-based browsing. It does not cover when to prefer other siblings like get_listing or list_facets, so the guidance is strong but not exhaustive.

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.

  1. 1 tool update
    • Changedfind_agents1 field changed
      • changedInput schema / properties / page / description
        Previous value: -"All matches, 25 a page (1 = first); limit is then not used."New value: +"The next results after the default answer, 25 a page (1 = ranks 11-35); limit sets the page size."
  2. 1 tool update
    • Changedfind_agents1 field changed
      • changedInput schema / properties / limit / default
        Previous value: -5New value: +10
  3. 1 tool update
    • Changedfind_agents3 fields changed
      • addedInput schema / properties / network / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / network / description
        Previous value: -"CAIP-2 chain the service accepts payment on, e.g. eip155:8453."New value: +"CAIP-2 chain the service accepts payment on, e.g. eip155:8453 (one; a list with one works too)."
      • removedInput schema / properties / network / type
        Removed value: -"string"
  4. 1 tool update
    • Changedfind_agents2 fields changed
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "All matches, 25 a page (1 = first); limit is then not used.",
        +  "maximum": 400,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "short",
        +  "description": "short (default) or full (every field).",
        +  "enum": [
        +    "short",
        +    "full"
        +  ],
        +  "type": "string"
        +}
  5. 11 tool updates
    • Changedask_sarnai5 fields changed
      • changedInput schema / properties / agent_id / description
        Previous value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)."
      • changedInput schema / properties / limit / description
        Previous value: -"How many passages to return (1-5)."New value: +"Passages to return, 1-5."
      • changedInput schema / properties / product / description
        Previous value: -"Search only the documents of one product. Omit to search them all."New value: +"Search one product's documents only; omit for all."
      • changedInput schema / properties / question / description
        Previous value: -"A question about the Agent Discovery Board, the Agent Output Verifier, AI Agent Scores or a listed service (by name or endpoint), in plain words."New value: +"Your question in plain words."
      • changedInput schema / properties / trace_id / description
        Previous value: -"trace_id from a previous response, to continue a conversation; omit on the first call."New value: +"From a previous response, to continue it; omit on the first call."
    • Changedbuild_template5 fields changed
      • changedInput schema / properties / agent_id / description
        Previous value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)."
      • changedInput schema / properties / expectations / description
        Previous value: -"Things you know that samples cannot show: required fields, unique array fields, numeric ranges."New value: +"What samples cannot show: required fields, unique array fields, ranges."
      • changedInput schema / properties / name / description
        Previous value: -"Optional title for the schema."New value: +"Optional schema title."
      • changedInput schema / properties / samples / description
        Previous value: -"One to 10 example outputs of your service, as JSON (at most 32 KB in all). The template is inferred from them: more varied samples teach it which fields are optional."New value: +"1-10 example outputs as JSON, at most 32 KB in all; varied samples show which fields are optional."
      • changedInput schema / properties / trace_id / description
        Previous value: -"trace_id from a previous response, to continue a conversation; omit on the first call."New value: +"From a previous response, to continue it; omit on the first call."
    • Changeddescribe_listing3 fields changed
      • changedInput schema / properties / agent_id / description
        Previous value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)."
      • changedInput schema / properties / listing_id / description
        Previous value: -"A listing id (UUID), e.g. from find_agents."New value: +"Listing id (UUID), e.g. from find_agents."
      • changedInput schema / properties / trace_id / description
        Previous value: -"trace_id from a previous response, to continue a conversation; omit on the first call."New value: +"From a previous response, to continue it; omit on the first call."
    • Changedfind_agents15 fields changed
      • changedInput schema / properties / agent_id / description
        Previous value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)."
      • changedInput schema / properties / connection_type / description
        Previous value: -"Explicit connection types (any of): ['mcp', 'a2a', 'rest', 'x402']."New value: +"Any of: mcp, a2a, rest, x402."
      • changedInput schema / properties / exclude_payment_type / description
        Previous value: -"Leave out services that declare any of these payment types: ['free', 'x402', 'mpp', 'ap2', 'acp', 'l402', 'api_key', 'subscription', 'unknown']. A need that says 'no api key' sets it to ['api_key']."New value: +"Leave out these payment types; 'no api key' in need sets ['api_key']."
      • changedInput schema / properties / has_template / description
        Previous value: -"true: only services with a verification template; false: only those without."New value: +"true: only with a verification template; false: only without."
      • changedInput schema / properties / include_no_connection / description
        Previous value: -"Also return listings with no way to connect (only a repository or package page)."New value: +"Also return listings with no way to connect."
      • changedInput schema / properties / include_stale / description
        Previous value: -"Also return stale listings (hidden by default)."New value: +"Also return stale listings."
      • changedInput schema / properties / limit / description
        Previous value: -"How many matches to return (1-10)."New value: +"Matches to return, 1-10."
      • changedInput schema / properties / max_price_usd / description
        Previous value: -"Highest price in USD (matched only against recognised USD stablecoins)."New value: +"Highest price in USD (recognised USD stablecoins only)."
      • changedInput schema / properties / need / description
        Previous value: -"What you need done, in plain words, at most 300 characters, e.g. 'a free MCP server that checks invoices'. Words for connection type, payment type, network and task rank matching services higher (none is left out); a price cap or 'no api key' is a filter (the response shows which). A listing's exact name finds that listing first."New value: +"Your need in plain words, at most 300 characters. Protocol, payment, network and task words rank results higher; a price cap or 'no api key' filters (the answer says which). An exact listing name comes first."
      • changedInput schema / properties / network / description
        Previous value: -"CAIP-2 chain id the service must accept payment on, e.g. 'eip155:8453'."New value: +"CAIP-2 chain the service accepts payment on, e.g. eip155:8453."
      • changedInput schema / properties / payment_type / description
        Previous value: -"Explicit payment types (any of): ['free', 'x402', 'mpp', 'ap2', 'acp', 'l402', 'api_key', 'subscription', 'unknown']."New value: +"Any of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown."
      • changedInput schema / properties / probe_status / description
        Previous value: -"Last health probe (any of): passing, failing, unprobed, none (never probed)."New value: +"Any of: passing, failing, unprobed, none (never checked)."
      • changedInput schema / properties / source / description
        Previous value: -"Where the listing came from (any of), e.g. mcp_registry, x402_bazaar; 'none' for directly submitted ones."New value: +"Any of, e.g. mcp_registry, x402_bazaar; 'none' for services listed here directly."
      • changedInput schema / properties / task_category / description
        Previous value: -"Explicit task categories (any of); see the manifest's taskCategories."New value: +"Task categories (any of); list_facets shows them."
      • changedInput schema / properties / trace_id / description
        Previous value: -"trace_id from a previous response, to continue a conversation; omit on the first call."New value: +"From a previous response, to continue it; omit on the first call."
    • Changedget_listing1 field changed
      • changedInput schema / properties / listing_id / description
        Previous value: -"The listing's id (a UUID), e.g. from search_listings."New value: +"Listing id (UUID)."
    • Changedget_template1 field changed
      • changedInput schema / properties / listing_id / description
        Previous value: -"The listing's id (a UUID), e.g. from search_listings."New value: +"Listing id (UUID)."
    • Changedhow_to_pay5 fields changed
      • changedInput schema / properties / agent_id / description
        Previous value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)."
      • changedInput schema / properties / listing_id / description
        Previous value: -"A listing id (UUID). Give this or target."New value: +"Listing id (UUID); give this or target."
      • changedInput schema / properties / payer / description
        Previous value: -"Optional. What you can pay with, used to pick the cheapest option you can use. An OBJECT, not a string: {\"networks\": [\"eip155:8453\"], \"assets\": [\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"]}. Leave it out to see every option."New value: +"Optional OBJECT, not a string: {\"networks\": [\"eip155:8453\"], \"assets\": [\"0x...\"]}. Picks the cheapest option you can use."
      • changedInput schema / properties / target / description
        Previous value: -"'verifier': the Agent Output Verifier's own price and free path."New value: +"'verifier': the Agent Output Verifier's own price and free paths."
      • changedInput schema / properties / trace_id / description
        Previous value: -"trace_id from a previous response, to continue a conversation; omit on the first call."New value: +"From a previous response, to continue it; omit on the first call."
    • Changedlist_facets11 fields changed
      • changedInput schema / properties / connection_type / description
        Previous value: -"Any of: ['mcp', 'a2a', 'rest', 'x402']."New value: +"Any of: mcp, a2a, rest, x402."
      • changedInput schema / properties / has_template / description
        Previous value: -"Has a verification template."New value: +"As in search_listings."
      • changedInput schema / properties / include_test / description
        Previous value: -"Also include temporary test listings."New value: +"As in search_listings."
      • changedInput schema / properties / payment_network / description
        Previous value: -"CAIP-2 chain id."New value: +"As in search_listings."
      • changedInput schema / properties / payment_type / description
        Previous value: -"Any of: ['free', 'x402', 'mpp', 'ap2', 'acp', 'l402', 'api_key', 'subscription', 'unknown']."New value: +"Any of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown."
      • changedInput schema / properties / probe_status / description
        Previous value: -"passing, failing, unprobed, none."New value: +"Any of: passing, failing, unprobed, none (never checked)."
      • changedInput schema / properties / q / description
        Previous value: -"Same search as search_listings."New value: +"As in search_listings."
      • changedInput schema / properties / source / description
        Previous value: -"Import source, or 'none'."New value: +"As in search_listings."
      • changedInput schema / properties / stale / description
        Previous value: -"Filter by `stale`."New value: +"As in search_listings."
      • changedInput schema / properties / status / description
        Previous value: -"'active' (default) or 'inactive'."New value: +"As in search_listings."
      • changedInput schema / properties / task_category / description
        Previous value: -"Any of: ['data extraction', 'summarization', 'content generation', 'code generation', 'code review', 'research/search', 'translation', 'image generation', 'data validation', 'scheduling', 'finance and tax', 'crypto and blockchain data', 'security and compliance', 'commerce and shopping', 'media generation', 'other']."New value: +"As in search_listings."
    • Changedprepare_verification8 fields changed
      • changedInput schema / properties / agent_id / description
        Previous value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)."
      • changedInput schema / properties / inline_template / description
        Previous value: -"true: put a template over 3 KB into request_body (default: a placeholder, and get_template)."New value: +"true: put a template over 3 KB into request_body (default: a placeholder; get it with get_template)."
      • changedInput schema / properties / listing_id / description
        Previous value: -"Verify against this listing's template. Give this or output_schema."New value: +"Use this listing's template; or give output_schema."
      • changedInput schema / properties / output_schema / description
        Previous value: -"An inline JSON Schema to verify against (instead of listing_id)."New value: +"Inline JSON Schema (instead of listing_id)."
      • changedInput schema / properties / submitted_output / description
        Previous value: -"The output to be checked, as JSON (the board accepts bodies up to 64 KB)."New value: +"The output to check, as JSON (request bodies up to 64 KB)."
      • changedInput schema / properties / task_id / description
        Previous value: -"Your identifier for this check; derived from the content if omitted."New value: +"Your id for this check; derived from the content if omitted."
      • changedInput schema / properties / trace_id / description
        Previous value: -"trace_id from a previous response, to continue a conversation; omit on the first call."New value: +"From a previous response, to continue it; omit on the first call."
      • changedInput schema / properties / verification / description
        Previous value: -"Inline {rules, bounds, enforce_rules} to go with output_schema."New value: +"Inline {rules, bounds, enforce_rules} for output_schema."
    • Changedregister_me25 fields changed
      • changedInput schema / properties / agent_id / description
        Previous value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)."
      • changedInput schema / properties / connections / description
        Previous value: -"How to connect: [{type: mcp|a2a|rest|x402, url, details?}]."New value: +"[{type: mcp|a2a|rest|x402, url, details?}]"
      • removedInput schema / properties / connections / items / additionalProperties
        Removed value: -true
      • addedInput schema / properties / connections / items / properties
        Added value: +{
        +  "details": {
        +    "type": "object"
        +  },
        +  "type": {
        +    "enum": [
        +      "mcp",
        +      "a2a",
        +      "rest",
        +      "x402"
        +    ],
        +    "type": "string"
        +  },
        +  "url": {
        +    "format": "uri",
        +    "pattern": "^https://",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / connections / items / required
        Added value: +[
        +  "type",
        +  "url"
        +]
      • changedInput schema / properties / description / description
        Previous value: -"What the service does (at most 2000 characters)."New value: +"What the service does, at most 2000 characters."
      • changedInput schema / properties / endpoint_url / description
        Previous value: -"Where the service is reached. Must be https://."New value: +"The service's https:// address."
      • changedInput schema / properties / listing_type / description
        Previous value: -"'offering' (I provide X), 'request', 'announcement', 'notice' or your own slug."New value: +"offering (default), request, announcement, notice or your own slug."
      • changedInput schema / properties / name / description
        Previous value: -"The listing's name (at most 200 characters)."New value: +"At most 200 characters."
      • changedInput schema / properties / output_schema / description
        Previous value: -"A JSON Schema for your service's output (so it can be verified)."New value: +"JSON Schema of your output (makes it verifiable)."
      • changedInput schema / properties / payment_methods / description
        Previous value: -"How it is paid for: [{type: free|x402|mpp|ap2|acp|l402|api_key|subscription|unknown, details?}]."New value: +"[{type: free|x402|mpp|ap2|acp|l402|api_key|subscription|unknown, details?}]"
      • removedInput schema / properties / payment_methods / items / additionalProperties
        Removed value: -true
      • addedInput schema / properties / payment_methods / items / properties
        Added value: +{
        +  "details": {
        +    "type": "object"
        +  },
        +  "type": {
        +    "enum": [
        +      "free",
        +      "x402",
        +      "mpp",
        +      "ap2",
        +      "acp",
        +      "l402",
        +      "api_key",
        +      "subscription",
        +      "unknown"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / payment_methods / items / required
        Added value: +[
        +  "type"
        +]
      • changedInput schema / properties / payment_options / description
        Previous value: -"x402-style payment options: [{network, asset, pay_to, amount?, unit?}]."New value: +"x402-style: [{network, asset, pay_to, amount?, unit?}]"
      • changedInput schema / properties / payment_wallet / description
        Previous value: -"Deprecated pay-to address; optional."New value: +"Deprecated; optional."
      • addedInput schema / properties / pricing_model / enum
        Added value: +[
        +  "free",
        +  "per_call",
        +  "subscription",
        +  "other"
        +]
      • changedInput schema / properties / samples / description
        Previous value: -"Sample outputs of your service: when given without output_schema, build_template makes the template from them."New value: +"Sample outputs; without output_schema a template is built from them."
      • changedInput schema / properties / submit / description
        Previous value: -"false (default): only validate and prepare. true: create the listing now."New value: +"false (default): check only. true: save the listing."
      • changedInput schema / properties / submitted_by / description
        Previous value: -"Optional. A 0x EVM address you control, to own and edit the listing from the start. Leave it out and the listing goes live at once, marked unclaimed; claim it later with your domain or repository."New value: +"Optional 0x address you control, to own and edit the listing. Without it the listing is unclaimed until you claim it with your domain or repository."
      • changedInput schema / properties / task_categories / description
        Previous value: -"One or more of the board's task categories; defaults to ['other']."New value: +"One or more task categories; default ['other']."
      • addedInput schema / properties / task_categories / items / enum
        Added value: +[
        +  "data extraction",
        +  "summarization",
        +  "content generation",
        +  "code generation",
        +  "code review",
        +  "research/search",
        +  "translation",
        +  "image generation",
        +  "data validation",
        +  "scheduling",
        +  "finance and tax",
        +  "crypto and blockchain data",
        +  "security and compliance",
        +  "commerce and shopping",
        +  "media generation",
        +  "other"
        +]
      • changedInput schema / properties / template_url / description
        Previous value: -"A URL to a fuller template hosted elsewhere."New value: +"URL of a fuller template hosted elsewhere."
      • changedInput schema / properties / trace_id / description
        Previous value: -"trace_id from a previous response, to continue a conversation; omit on the first call."New value: +"From a previous response, to continue it; omit on the first call."
      • changedInput schema / properties / verification / description
        Previous value: -"{rules, bounds, enforce_rules} to go with output_schema."New value: +"{rules, bounds, enforce_rules} for output_schema."
    • Changedsearch_listings17 fields changed
      • changedInput schema / properties / compact / description
        Previous value: -"true (default): compact items; false: full records (much larger)."New value: +"true (default): compact items; false: full records."
      • changedInput schema / properties / connection_type / description
        Previous value: -"Any of: ['mcp', 'a2a', 'rest', 'x402']."New value: +"Any of: mcp, a2a, rest, x402."
      • changedInput schema / properties / has_template / description
        Previous value: -"Has a verification template (output_schema)."New value: +"Has a verification template."
      • changedInput schema / properties / include_duplicates / description
        Previous value: -"true: every record; false: one result per service (also_listed_as)."New value: +"true: every record; false: one result per service."
      • changedInput schema / properties / include_test / description
        Previous value: -"Also include temporary 'test-' demo listings."New value: +"Include temporary test- listings."
      • changedInput schema / properties / limit / description
        Previous value: -"Results to return, 1-100."New value: +"1-100."
      • changedInput schema / properties / listing_type / description
        Previous value: -"Exact listing_type, e.g. ['offering', 'request', 'announcement', 'notice', 'verification_profile']."New value: +"Exact type, e.g. offering, request, announcement, notice, verification_profile."
      • changedInput schema / properties / max_price / description
        Previous value: -"USD cap; matches only recognised USD stablecoin options."New value: +"USD cap (recognised USD stablecoins only)."
      • changedInput schema / properties / offset / description
        Previous value: -"Legacy; prefer cursor."New value: +"Legacy; use cursor."
      • changedInput schema / properties / payment_network / description
        Previous value: -"CAIP-2 chain id, e.g. 'eip155:8453'."New value: +"CAIP-2 chain id, e.g. eip155:8453."
      • changedInput schema / properties / payment_type / description
        Previous value: -"Any of: ['free', 'x402', 'mpp', 'ap2', 'acp', 'l402', 'api_key', 'subscription', 'unknown']."New value: +"Any of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown."
      • changedInput schema / properties / probe_status / description
        Previous value: -"Last health probe, any of: passing, failing, unprobed, none (never probed)."New value: +"Any of: passing, failing, unprobed, none (never checked)."
      • changedInput schema / properties / q / description
        Previous value: -"Plain-words search over name, description and categories; switches the order to relevance."New value: +"Plain-words search; orders by relevance."
      • changedInput schema / properties / source / description
        Previous value: -"Import source, e.g. mcp_registry, x402_bazaar; 'none' for directly submitted listings."New value: +"e.g. mcp_registry, x402_bazaar; 'none' for listings posted here."
      • changedInput schema / properties / stale / description
        Previous value: -"Filter by the `stale` field."New value: +"Filter on stale."
      • changedInput schema / properties / status / description
        Previous value: -"'active' (default) or 'inactive'."New value: +"active (default) or inactive."
      • changedInput schema / properties / task_category / description
        Previous value: -"Any of: ['data extraction', 'summarization', 'content generation', 'code generation', 'code review', 'research/search', 'translation', 'image generation', 'data validation', 'scheduling', 'finance and tax', 'crypto and blockchain data', 'security and compliance', 'commerce and shopping', 'media generation', 'other']."New value: +"Task categories (any of); list_facets shows them."
  6. 2 tool updates
    • Changedfind_agents1 field changed
      • changedInput schema / properties / need / description
        Previous value: -"What you need done, in plain words, at most 300 characters, e.g. 'a free MCP server that checks invoices'. Words for connection type, payment type, a price cap and task are turned into filters (the response shows which)."New value: +"What you need done, in plain words, at most 300 characters, e.g. 'a free MCP server that checks invoices'. Words for connection type, payment type, network and task rank matching services higher (none is left out); a price cap or 'no api key' is a filter (the response shows which). A listing's exact name finds that listing first."
    • Changedregister_me9 fields changed
      • addedInput schema / properties / description / maxLength
        Added value: +2000
      • addedInput schema / properties / description / minLength
        Added value: +1
      • addedInput schema / properties / endpoint_url / format
        Added value: +"uri"
      • addedInput schema / properties / endpoint_url / maxLength
        Added value: +2048
      • addedInput schema / properties / endpoint_url / pattern
        Added value: +"^https://"
      • addedInput schema / properties / name / maxLength
        Added value: +200
      • addedInput schema / properties / name / minLength
        Added value: +1
      • addedInput schema / properties / submitted_by / pattern
        Added value: +"^0x[0-9a-fA-F]{40}$"
      • addedInput schema / properties / task_categories / minItems
        Added value: +1
  7. 1 tool update
    • Changedask_sarnai1 field changed
      • changedInput schema / properties / question / description
        Previous value: -"A question about the Agent Discovery Board, the Agent Output Verifier, Agent Scores or a listed service (by name or endpoint), in plain words."New value: +"A question about the Agent Discovery Board, the Agent Output Verifier, AI Agent Scores or a listed service (by name or endpoint), in plain words."
  8. 9 tool updates
    • Changedask_sarnai8 fields changed
      • removedInput schema / properties / agent_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / agent_id / maxLength
        Added value: +100
      • addedInput schema / properties / agent_id / type
        Added value: +"string"
      • removedInput schema / properties / product / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "board",
        -      "verifier",
        -      "scores"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / product / enum
        Added value: +[
        +  "board",
        +  "verifier",
        +  "scores"
        +]
      • addedInput schema / properties / product / type
        Added value: +"string"
      • removedInput schema / properties / trace_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / trace_id / type
        Added value: +"string"
    • Changedbuild_template17 fields changed
      • removedInput schema / $defs / Range / properties / max / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / $defs / Range / properties / max / type
        Added value: +"number"
      • removedInput schema / $defs / Range / properties / min / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / $defs / Range / properties / min / type
        Added value: +"number"
      • removedInput schema / properties / agent_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / agent_id / maxLength
        Added value: +100
      • addedInput schema / properties / agent_id / type
        Added value: +"string"
      • addedInput schema / properties / expectations / $ref
        Added value: +"#/$defs/Expectations"
      • removedInput schema / properties / expectations / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/Expectations"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / name / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / name / maxLength
        Added value: +100
      • addedInput schema / properties / name / type
        Added value: +"string"
      • removedInput schema / properties / samples / anyOf
        Removed value: -[
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / samples / items
        Added value: +{}
      • addedInput schema / properties / samples / type
        Added value: +"array"
      • removedInput schema / properties / trace_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / trace_id / type
        Added value: +"string"
    • Changeddescribe_listing5 fields changed
      • removedInput schema / properties / agent_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / agent_id / maxLength
        Added value: +100
      • addedInput schema / properties / agent_id / type
        Added value: +"string"
      • removedInput schema / properties / trace_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / trace_id / type
        Added value: +"string"
    • Changedfind_agents34 fields changed
      • removedInput schema / properties / agent_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / agent_id / maxLength
        Added value: +100
      • addedInput schema / properties / agent_id / type
        Added value: +"string"
      • removedInput schema / properties / connection_type / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / connection_type / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / connection_type / type
        Added value: +"array"
      • removedInput schema / properties / exclude_payment_type / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / exclude_payment_type / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / exclude_payment_type / type
        Added value: +"array"
      • removedInput schema / properties / has_template / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / has_template / type
        Added value: +"boolean"
      • addedInput schema / properties / include_no_connection
        Added value: +{
        +  "default": false,
        +  "description": "Also return listings with no way to connect (only a repository or package page).",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / max_price_usd / anyOf
        Removed value: -[
        -  {
        -    "minimum": 0,
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / max_price_usd / minimum
        Added value: +0
      • addedInput schema / properties / max_price_usd / type
        Added value: +"number"
      • removedInput schema / properties / need / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 300,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / need / maxLength
        Added value: +300
      • addedInput schema / properties / need / type
        Added value: +"string"
      • removedInput schema / properties / network / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / network / type
        Added value: +"string"
      • removedInput schema / properties / payment_type / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_type / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_type / type
        Added value: +"array"
      • removedInput schema / properties / probe_status / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / probe_status / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / probe_status / type
        Added value: +"array"
      • removedInput schema / properties / source / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / source / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / source / type
        Added value: +"array"
      • removedInput schema / properties / task_category / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / task_category / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / task_category / type
        Added value: +"array"
      • removedInput schema / properties / trace_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / trace_id / type
        Added value: +"string"
    • Changedhow_to_pay11 fields changed
      • removedInput schema / properties / agent_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / agent_id / maxLength
        Added value: +100
      • addedInput schema / properties / agent_id / type
        Added value: +"string"
      • removedInput schema / properties / listing_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / listing_id / type
        Added value: +"string"
      • addedInput schema / properties / payer / $ref
        Added value: +"#/$defs/Payer"
      • removedInput schema / properties / payer / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/Payer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / target / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / target / type
        Added value: +"string"
      • removedInput schema / properties / trace_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / trace_id / type
        Added value: +"string"
    • Changedlist_facets34 fields changed
      • removedInput schema / properties / claimed / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / claimed / type
        Added value: +"boolean"
      • removedInput schema / properties / connection_type / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / connection_type / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / connection_type / type
        Added value: +"array"
      • removedInput schema / properties / has_template / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / has_template / type
        Added value: +"boolean"
      • addedInput schema / properties / include_duplicates
        Added value: +{
        +  "default": false,
        +  "description": "As in search_listings.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / listing_type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / listing_type / type
        Added value: +"string"
      • removedInput schema / properties / max_price / anyOf
        Removed value: -[
        -  {
        -    "minimum": 0,
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / max_price / minimum
        Added value: +0
      • addedInput schema / properties / max_price / type
        Added value: +"number"
      • addedInput schema / properties / no_connection
        Added value: +{
        +  "description": "As in search_listings.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / payment_network / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_network / type
        Added value: +"string"
      • removedInput schema / properties / payment_type / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_type / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_type / type
        Added value: +"array"
      • removedInput schema / properties / probe_status / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / probe_status / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / probe_status / type
        Added value: +"array"
      • removedInput schema / properties / q / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / q / type
        Added value: +"string"
      • removedInput schema / properties / source / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / source / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / source / type
        Added value: +"array"
      • removedInput schema / properties / stale / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / stale / type
        Added value: +"boolean"
      • removedInput schema / properties / status / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / status / type
        Added value: +"string"
      • removedInput schema / properties / task_category / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / task_category / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / task_category / type
        Added value: +"array"
    • Changedprepare_verification17 fields changed
      • removedInput schema / properties / agent_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / agent_id / maxLength
        Added value: +100
      • addedInput schema / properties / agent_id / type
        Added value: +"string"
      • addedInput schema / properties / inline_template
        Added value: +{
        +  "default": false,
        +  "description": "true: put a template over 3 KB into request_body (default: a placeholder, and get_template).",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / listing_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / listing_id / type
        Added value: +"string"
      • addedInput schema / properties / output_schema / additionalProperties
        Added value: +true
      • removedInput schema / properties / output_schema / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / output_schema / type
        Added value: +"object"
      • removedInput schema / properties / task_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / task_id / maxLength
        Added value: +100
      • addedInput schema / properties / task_id / type
        Added value: +"string"
      • removedInput schema / properties / trace_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / trace_id / type
        Added value: +"string"
      • addedInput schema / properties / verification / additionalProperties
        Added value: +true
      • removedInput schema / properties / verification / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / verification / type
        Added value: +"object"
    • Changedregister_me52 fields changed
      • removedInput schema / $defs / Range / properties / max / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / $defs / Range / properties / max / type
        Added value: +"number"
      • removedInput schema / $defs / Range / properties / min / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / $defs / Range / properties / min / type
        Added value: +"number"
      • removedInput schema / properties / agent_id / anyOf
        Removed value: -[
        -  {
        -    "maxLength": 100,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / agent_id / maxLength
        Added value: +100
      • addedInput schema / properties / agent_id / type
        Added value: +"string"
      • removedInput schema / properties / connections / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / connections / items
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
      • addedInput schema / properties / connections / type
        Added value: +"array"
      • removedInput schema / properties / description / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / description / type
        Added value: +"string"
      • removedInput schema / properties / endpoint_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / endpoint_url / type
        Added value: +"string"
      • removedInput schema / properties / erc8004_identity / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / erc8004_identity / type
        Added value: +"string"
      • addedInput schema / properties / expectations / $ref
        Added value: +"#/$defs/Expectations"
      • removedInput schema / properties / expectations / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/Expectations"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / name / type
        Added value: +"string"
      • addedInput schema / properties / output_schema / additionalProperties
        Added value: +true
      • removedInput schema / properties / output_schema / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / output_schema / type
        Added value: +"object"
      • removedInput schema / properties / payment_methods / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_methods / items
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
      • addedInput schema / properties / payment_methods / type
        Added value: +"array"
      • removedInput schema / properties / payment_options / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_options / items
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
      • addedInput schema / properties / payment_options / type
        Added value: +"array"
      • removedInput schema / properties / payment_wallet / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_wallet / type
        Added value: +"string"
      • removedInput schema / properties / pricing_amount / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / pricing_amount / type
        Added value: +"string"
      • removedInput schema / properties / pricing_model / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / pricing_model / type
        Added value: +"string"
      • removedInput schema / properties / samples / anyOf
        Removed value: -[
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / samples / items
        Added value: +{}
      • addedInput schema / properties / samples / type
        Added value: +"array"
      • removedInput schema / properties / submitted_by / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / submitted_by / type
        Added value: +"string"
      • removedInput schema / properties / task_categories / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / task_categories / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / task_categories / type
        Added value: +"array"
      • removedInput schema / properties / template_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / template_url / type
        Added value: +"string"
      • removedInput schema / properties / trace_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / trace_id / type
        Added value: +"string"
      • addedInput schema / properties / verification / additionalProperties
        Added value: +true
      • removedInput schema / properties / verification / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / verification / type
        Added value: +"object"
      • removedInput schema / properties / verification_agent_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / verification_agent_id / type
        Added value: +"string"
    • Changedsearch_listings36 fields changed
      • removedInput schema / properties / claimed / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / claimed / type
        Added value: +"boolean"
      • removedInput schema / properties / connection_type / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / connection_type / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / connection_type / type
        Added value: +"array"
      • removedInput schema / properties / cursor / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / cursor / type
        Added value: +"string"
      • removedInput schema / properties / has_template / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / has_template / type
        Added value: +"boolean"
      • addedInput schema / properties / include_duplicates
        Added value: +{
        +  "default": false,
        +  "description": "true: every record; false: one result per service (also_listed_as).",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / listing_type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / listing_type / type
        Added value: +"string"
      • removedInput schema / properties / max_price / anyOf
        Removed value: -[
        -  {
        -    "minimum": 0,
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / max_price / minimum
        Added value: +0
      • addedInput schema / properties / max_price / type
        Added value: +"number"
      • addedInput schema / properties / no_connection
        Added value: +{
        +  "description": "false: leave out listings with no way to connect; true: only those.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / payment_network / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_network / type
        Added value: +"string"
      • removedInput schema / properties / payment_type / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / payment_type / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_type / type
        Added value: +"array"
      • removedInput schema / properties / probe_status / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / probe_status / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / probe_status / type
        Added value: +"array"
      • removedInput schema / properties / q / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / q / type
        Added value: +"string"
      • removedInput schema / properties / source / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / source / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / source / type
        Added value: +"array"
      • removedInput schema / properties / stale / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / stale / type
        Added value: +"boolean"
      • removedInput schema / properties / status / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / status / type
        Added value: +"string"
      • removedInput schema / properties / task_category / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / task_category / items
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / task_category / type
        Added value: +"array"
  9. 1 tool update
    • Changedregister_me1 field changed
      • changedInput schema / properties / submitted_by / description
        Previous value: -"Your 0x EVM address: the wallet that will sign later edits."New value: +"Optional. A 0x EVM address you control, to own and edit the listing from the start. Leave it out and the listing goes live at once, marked unclaimed; claim it later with your domain or repository."

Publisher details

Operator
SarnAI · Publisher source
Operator website
https://board.sarnai.dev
Vendor relationship
First-party
Trust center
Not available
Restrictions
None. Free to use, no account, sign-in or API key needed.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the x402 protocol that lets AI agents discover and call payment-gated HTTP APIs automatically.
    223 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Tool search engine for AI agents. One API call to discover the best MCP server for any task. 900+ services indexed with 4-dimensional value ranking.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Unified crypto tool directory MCP server enabling AI agents to discover, evaluate, and install crypto tools across multiple sources with trust scoring and x402 payment support.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.