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.
- 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
Scored across 11 tools
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.
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.
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.
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 toolsask_sarnaiAsk about SarnAI's productsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Passages to return, 1-5. | |
| product | No | Search one product's documents only; omit for all. | |
| agent_id | No | Optional label for yourself (statistics only). | |
| question | Yes | Your question in plain words. | |
| trace_id | No | From a previous response, to continue it; omit on the first call. |
TDQS
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.
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.
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.
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.
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.
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 templateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional schema title. | |
| samples | No | 1-10 example outputs as JSON, at most 32 KB in all; varied samples show which fields are optional. | |
| agent_id | No | Optional label for yourself (statistics only). | |
| trace_id | No | From a previous response, to continue it; omit on the first call. | |
| expectations | No | What samples cannot show: required fields, unique array fields, ranges. |
TDQS
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.
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.
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.
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.
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.
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 listingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Optional label for yourself (statistics only). | |
| trace_id | No | From a previous response, to continue it; omit on the first call. | |
| listing_id | Yes | Listing id (UUID), e.g. from find_agents. |
TDQS
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.
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.
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.
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.
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.
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 needARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| need | No | 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. | |
| page | No | The next results after the default answer, 25 a page (1 = ranks 11-35); limit sets the page size. | |
| view | No | short (default) or full (every field). | short |
| limit | No | Matches to return, 1-10. | |
| source | No | Any of, e.g. mcp_registry, x402_bazaar; 'none' for services listed here directly. | |
| network | No | CAIP-2 chain the service accepts payment on, e.g. eip155:8453 (one; a list with one works too). | |
| agent_id | No | Optional label for yourself (statistics only). | |
| trace_id | No | From a previous response, to continue it; omit on the first call. | |
| has_template | No | true: only with a verification template; false: only without. | |
| payment_type | No | Any of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown. | |
| probe_status | No | Any of: passing, failing, unprobed, none (never checked). | |
| include_stale | No | Also return stale listings. | |
| max_price_usd | No | Highest price in USD (recognised USD stablecoins only). | |
| task_category | No | Task categories (any of); list_facets shows them. | |
| connection_type | No | Any of: mcp, a2a, rest, x402. | |
| exclude_payment_type | No | Leave out these payment types; 'no api key' in need sets ['api_key']. | |
| include_no_connection | No | Also return listings with no way to connect. |
TDQS
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.
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.
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.
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.
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.
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 listingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| listing_id | Yes | Listing id (UUID). |
TDQS
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.
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.
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.
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.
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.
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 templateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| listing_id | Yes | Listing id (UUID). |
TDQS
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.
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.
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.
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.
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.
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 listingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| payer | No | Optional OBJECT, not a string: {"networks": ["eip155:8453"], "assets": ["0x..."]}. Picks the cheapest option you can use. | |
| target | No | 'verifier': the Agent Output Verifier's own price and free paths. | |
| agent_id | No | Optional label for yourself (statistics only). | |
| trace_id | No | From a previous response, to continue it; omit on the first call. | |
| listing_id | No | Listing id (UUID); give this or target. |
TDQS
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.
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.
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.
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.
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.
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 BoardBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | As in search_listings. | |
| stale | No | As in search_listings. | |
| source | No | As in search_listings. | |
| status | No | As in search_listings. | |
| claimed | No | As in search_listings. | |
| max_price | No | As in search_listings. | |
| has_template | No | As in search_listings. | |
| include_test | No | As in search_listings. | |
| listing_type | No | Exact listing_type. | |
| payment_type | No | Any of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown. | |
| probe_status | No | Any of: passing, failing, unprobed, none (never checked). | |
| no_connection | No | As in search_listings. | |
| task_category | No | As in search_listings. | |
| connection_type | No | Any of: mcp, a2a, rest, x402. | |
| payment_network | No | As in search_listings. | |
| include_duplicates | No | As in search_listings. |
TDQS
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.
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.
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.
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.
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.
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 callARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | Your id for this check; derived from the content if omitted. | |
| agent_id | No | Optional label for yourself (statistics only). | |
| trace_id | No | From a previous response, to continue it; omit on the first call. | |
| listing_id | No | Use this listing's template; or give output_schema. | |
| verification | No | Inline {rules, bounds, enforce_rules} for output_schema. | |
| output_schema | No | Inline JSON Schema (instead of listing_id). | |
| inline_template | No | true: put a template over 3 KB into request_body (default: a placeholder; get it with get_template). | |
| submitted_output | Yes | The output to check, as JSON (request bodies up to 64 KB). |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | At most 200 characters. | |
| submit | No | false (default): check only. true: save the listing. | |
| samples | No | Sample outputs; without output_schema a template is built from them. | |
| agent_id | No | Optional label for yourself (statistics only). | |
| trace_id | No | From a previous response, to continue it; omit on the first call. | |
| connections | No | [{type: mcp|a2a|rest|x402, url, details?}] | |
| description | No | What the service does, at most 2000 characters. | |
| endpoint_url | No | The service's https:// address. | |
| expectations | No | With samples: required fields, unique array fields, ranges. | |
| listing_type | No | offering (default), request, announcement, notice or your own slug. | offering |
| submitted_by | No | 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. | |
| template_url | No | URL of a fuller template hosted elsewhere. | |
| verification | No | {rules, bounds, enforce_rules} for output_schema. | |
| output_schema | No | JSON Schema of your output (makes it verifiable). | |
| pricing_model | No | free | per_call | subscription | other. | |
| payment_wallet | No | Deprecated; optional. | |
| pricing_amount | No | Free text, e.g. '$0.02 per call'. | |
| payment_methods | No | [{type: free|x402|mpp|ap2|acp|l402|api_key|subscription|unknown, details?}] | |
| payment_options | No | x402-style: [{network, asset, pay_to, amount?, unit?}] | |
| task_categories | No | One or more task categories; default ['other']. | |
| erc8004_identity | No | Optional identity reference. | |
| verification_agent_id | No | Optional agent_id for a trust-score badge. |
TDQS
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.
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.
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.
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.
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.
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 BoardARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Plain-words search; orders by relevance. | |
| limit | No | 1-100. | |
| stale | No | Filter on stale. | |
| cursor | No | next_cursor from the previous page. | |
| offset | No | Legacy; use cursor. | |
| source | No | e.g. mcp_registry, x402_bazaar; 'none' for listings posted here. | |
| status | No | active (default) or inactive. | |
| claimed | No | true: claimed only; false: unclaimed imports only. | |
| compact | No | true (default): compact items; false: full records. | |
| max_price | No | USD cap (recognised USD stablecoins only). | |
| has_template | No | Has a verification template. | |
| include_test | No | Include temporary test- listings. | |
| listing_type | No | Exact type, e.g. offering, request, announcement, notice, verification_profile. | |
| payment_type | No | Any of: free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown. | |
| probe_status | No | Any of: passing, failing, unprobed, none (never checked). | |
| no_connection | No | false: leave out listings with no way to connect; true: only those. | |
| task_category | No | Task categories (any of); list_facets shows them. | |
| connection_type | No | Any of: mcp, a2a, rest, x402. | |
| payment_network | No | CAIP-2 chain id, e.g. eip155:8453. | |
| include_duplicates | No | true: every record; false: one result per service. |
TDQS
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.
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.
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.
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.
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.
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 tool update
- Changed
find_agents1 field changed- changed
Input schema / properties / page / descriptionPrevious 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."
1 tool update
- Changed
find_agents1 field changed- changed
Input schema / properties / limit / defaultPrevious value: -5New value: +10
1 tool update
- Changed
find_agents3 fields changed- added
Input schema / properties / network / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / properties / network / descriptionPrevious 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)." - removed
Input schema / properties / network / typeRemoved value: -"string"
1 tool update
- Changed
find_agents2 fields changed- added
Input schema / properties / pageAdded value: +{ + "description": "All matches, 25 a page (1 = first); limit is then not used.", + "maximum": 400, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / viewAdded value: +{ + "default": "short", + "description": "short (default) or full (every field).", + "enum": [ + "short", + "full" + ], + "type": "string" +}
11 tool updates
- Changed
ask_sarnai5 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many passages to return (1-5)."New value: +"Passages to return, 1-5." - changed
Input schema / properties / product / descriptionPrevious value: -"Search only the documents of one product. Omit to search them all."New value: +"Search one product's documents only; omit for all." - changed
Input schema / properties / question / descriptionPrevious 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." - changed
Input schema / properties / trace_id / descriptionPrevious 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."
- Changed
build_template5 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)." - changed
Input schema / properties / expectations / descriptionPrevious 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." - changed
Input schema / properties / name / descriptionPrevious value: -"Optional title for the schema."New value: +"Optional schema title." - changed
Input schema / properties / samples / descriptionPrevious 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." - changed
Input schema / properties / trace_id / descriptionPrevious 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."
- Changed
describe_listing3 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)." - changed
Input schema / properties / listing_id / descriptionPrevious value: -"A listing id (UUID), e.g. from find_agents."New value: +"Listing id (UUID), e.g. from find_agents." - changed
Input schema / properties / trace_id / descriptionPrevious 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."
- Changed
find_agents15 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)." - changed
Input schema / properties / connection_type / descriptionPrevious value: -"Explicit connection types (any of): ['mcp', 'a2a', 'rest', 'x402']."New value: +"Any of: mcp, a2a, rest, x402." - changed
Input schema / properties / exclude_payment_type / descriptionPrevious 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']." - changed
Input schema / properties / has_template / descriptionPrevious value: -"true: only services with a verification template; false: only those without."New value: +"true: only with a verification template; false: only without." - changed
Input schema / properties / include_no_connection / descriptionPrevious 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." - changed
Input schema / properties / include_stale / descriptionPrevious value: -"Also return stale listings (hidden by default)."New value: +"Also return stale listings." - changed
Input schema / properties / limit / descriptionPrevious value: -"How many matches to return (1-10)."New value: +"Matches to return, 1-10." - changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Highest price in USD (matched only against recognised USD stablecoins)."New value: +"Highest price in USD (recognised USD stablecoins only)." - changed
Input schema / properties / need / descriptionPrevious 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." - changed
Input schema / properties / network / descriptionPrevious 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." - changed
Input schema / properties / payment_type / descriptionPrevious 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." - changed
Input schema / properties / probe_status / descriptionPrevious value: -"Last health probe (any of): passing, failing, unprobed, none (never probed)."New value: +"Any of: passing, failing, unprobed, none (never checked)." - changed
Input schema / properties / source / descriptionPrevious 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." - changed
Input schema / properties / task_category / descriptionPrevious value: -"Explicit task categories (any of); see the manifest's taskCategories."New value: +"Task categories (any of); list_facets shows them." - changed
Input schema / properties / trace_id / descriptionPrevious 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."
- Changed
get_listing1 field changed- changed
Input schema / properties / listing_id / descriptionPrevious value: -"The listing's id (a UUID), e.g. from search_listings."New value: +"Listing id (UUID)."
- Changed
get_template1 field changed- changed
Input schema / properties / listing_id / descriptionPrevious value: -"The listing's id (a UUID), e.g. from search_listings."New value: +"Listing id (UUID)."
- Changed
how_to_pay5 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)." - changed
Input schema / properties / listing_id / descriptionPrevious value: -"A listing id (UUID). Give this or target."New value: +"Listing id (UUID); give this or target." - changed
Input schema / properties / payer / descriptionPrevious 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." - changed
Input schema / properties / target / descriptionPrevious 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." - changed
Input schema / properties / trace_id / descriptionPrevious 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."
- Changed
list_facets11 fields changed- changed
Input schema / properties / connection_type / descriptionPrevious value: -"Any of: ['mcp', 'a2a', 'rest', 'x402']."New value: +"Any of: mcp, a2a, rest, x402." - changed
Input schema / properties / has_template / descriptionPrevious value: -"Has a verification template."New value: +"As in search_listings." - changed
Input schema / properties / include_test / descriptionPrevious value: -"Also include temporary test listings."New value: +"As in search_listings." - changed
Input schema / properties / payment_network / descriptionPrevious value: -"CAIP-2 chain id."New value: +"As in search_listings." - changed
Input schema / properties / payment_type / descriptionPrevious 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." - changed
Input schema / properties / probe_status / descriptionPrevious value: -"passing, failing, unprobed, none."New value: +"Any of: passing, failing, unprobed, none (never checked)." - changed
Input schema / properties / q / descriptionPrevious value: -"Same search as search_listings."New value: +"As in search_listings." - changed
Input schema / properties / source / descriptionPrevious value: -"Import source, or 'none'."New value: +"As in search_listings." - changed
Input schema / properties / stale / descriptionPrevious value: -"Filter by `stale`."New value: +"As in search_listings." - changed
Input schema / properties / status / descriptionPrevious value: -"'active' (default) or 'inactive'."New value: +"As in search_listings." - changed
Input schema / properties / task_category / descriptionPrevious 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."
- Changed
prepare_verification8 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)." - changed
Input schema / properties / inline_template / descriptionPrevious 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)." - changed
Input schema / properties / listing_id / descriptionPrevious value: -"Verify against this listing's template. Give this or output_schema."New value: +"Use this listing's template; or give output_schema." - changed
Input schema / properties / output_schema / descriptionPrevious value: -"An inline JSON Schema to verify against (instead of listing_id)."New value: +"Inline JSON Schema (instead of listing_id)." - changed
Input schema / properties / submitted_output / descriptionPrevious 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)." - changed
Input schema / properties / task_id / descriptionPrevious 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." - changed
Input schema / properties / trace_id / descriptionPrevious 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." - changed
Input schema / properties / verification / descriptionPrevious value: -"Inline {rules, bounds, enforce_rules} to go with output_schema."New value: +"Inline {rules, bounds, enforce_rules} for output_schema."
- Changed
register_me25 fields changed- changed
Input schema / properties / agent_id / descriptionPrevious value: -"Optional label for yourself (usage statistics only)."New value: +"Optional label for yourself (statistics only)." - changed
Input schema / properties / connections / descriptionPrevious value: -"How to connect: [{type: mcp|a2a|rest|x402, url, details?}]."New value: +"[{type: mcp|a2a|rest|x402, url, details?}]" - removed
Input schema / properties / connections / items / additionalPropertiesRemoved value: -true - added
Input schema / properties / connections / items / propertiesAdded value: +{ + "details": { + "type": "object" + }, + "type": { + "enum": [ + "mcp", + "a2a", + "rest", + "x402" + ], + "type": "string" + }, + "url": { + "format": "uri", + "pattern": "^https://", + "type": "string" + } +} - added
Input schema / properties / connections / items / requiredAdded value: +[ + "type", + "url" +] - changed
Input schema / properties / description / descriptionPrevious value: -"What the service does (at most 2000 characters)."New value: +"What the service does, at most 2000 characters." - changed
Input schema / properties / endpoint_url / descriptionPrevious value: -"Where the service is reached. Must be https://."New value: +"The service's https:// address." - changed
Input schema / properties / listing_type / descriptionPrevious value: -"'offering' (I provide X), 'request', 'announcement', 'notice' or your own slug."New value: +"offering (default), request, announcement, notice or your own slug." - changed
Input schema / properties / name / descriptionPrevious value: -"The listing's name (at most 200 characters)."New value: +"At most 200 characters." - changed
Input schema / properties / output_schema / descriptionPrevious value: -"A JSON Schema for your service's output (so it can be verified)."New value: +"JSON Schema of your output (makes it verifiable)." - changed
Input schema / properties / payment_methods / descriptionPrevious 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?}]" - removed
Input schema / properties / payment_methods / items / additionalPropertiesRemoved value: -true - added
Input schema / properties / payment_methods / items / propertiesAdded value: +{ + "details": { + "type": "object" + }, + "type": { + "enum": [ + "free", + "x402", + "mpp", + "ap2", + "acp", + "l402", + "api_key", + "subscription", + "unknown" + ], + "type": "string" + } +} - added
Input schema / properties / payment_methods / items / requiredAdded value: +[ + "type" +] - changed
Input schema / properties / payment_options / descriptionPrevious value: -"x402-style payment options: [{network, asset, pay_to, amount?, unit?}]."New value: +"x402-style: [{network, asset, pay_to, amount?, unit?}]" - changed
Input schema / properties / payment_wallet / descriptionPrevious value: -"Deprecated pay-to address; optional."New value: +"Deprecated; optional." - added
Input schema / properties / pricing_model / enumAdded value: +[ + "free", + "per_call", + "subscription", + "other" +] - changed
Input schema / properties / samples / descriptionPrevious 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." - changed
Input schema / properties / submit / descriptionPrevious value: -"false (default): only validate and prepare. true: create the listing now."New value: +"false (default): check only. true: save the listing." - changed
Input schema / properties / submitted_by / descriptionPrevious 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." - changed
Input schema / properties / task_categories / descriptionPrevious value: -"One or more of the board's task categories; defaults to ['other']."New value: +"One or more task categories; default ['other']." - added
Input schema / properties / task_categories / items / enumAdded 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" +] - changed
Input schema / properties / template_url / descriptionPrevious value: -"A URL to a fuller template hosted elsewhere."New value: +"URL of a fuller template hosted elsewhere." - changed
Input schema / properties / trace_id / descriptionPrevious 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." - changed
Input schema / properties / verification / descriptionPrevious value: -"{rules, bounds, enforce_rules} to go with output_schema."New value: +"{rules, bounds, enforce_rules} for output_schema."
- Changed
search_listings17 fields changed- changed
Input schema / properties / compact / descriptionPrevious value: -"true (default): compact items; false: full records (much larger)."New value: +"true (default): compact items; false: full records." - changed
Input schema / properties / connection_type / descriptionPrevious value: -"Any of: ['mcp', 'a2a', 'rest', 'x402']."New value: +"Any of: mcp, a2a, rest, x402." - changed
Input schema / properties / has_template / descriptionPrevious value: -"Has a verification template (output_schema)."New value: +"Has a verification template." - changed
Input schema / properties / include_duplicates / descriptionPrevious value: -"true: every record; false: one result per service (also_listed_as)."New value: +"true: every record; false: one result per service." - changed
Input schema / properties / include_test / descriptionPrevious value: -"Also include temporary 'test-' demo listings."New value: +"Include temporary test- listings." - changed
Input schema / properties / limit / descriptionPrevious value: -"Results to return, 1-100."New value: +"1-100." - changed
Input schema / properties / listing_type / descriptionPrevious value: -"Exact listing_type, e.g. ['offering', 'request', 'announcement', 'notice', 'verification_profile']."New value: +"Exact type, e.g. offering, request, announcement, notice, verification_profile." - changed
Input schema / properties / max_price / descriptionPrevious value: -"USD cap; matches only recognised USD stablecoin options."New value: +"USD cap (recognised USD stablecoins only)." - changed
Input schema / properties / offset / descriptionPrevious value: -"Legacy; prefer cursor."New value: +"Legacy; use cursor." - changed
Input schema / properties / payment_network / descriptionPrevious value: -"CAIP-2 chain id, e.g. 'eip155:8453'."New value: +"CAIP-2 chain id, e.g. eip155:8453." - changed
Input schema / properties / payment_type / descriptionPrevious 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." - changed
Input schema / properties / probe_status / descriptionPrevious value: -"Last health probe, any of: passing, failing, unprobed, none (never probed)."New value: +"Any of: passing, failing, unprobed, none (never checked)." - changed
Input schema / properties / q / descriptionPrevious value: -"Plain-words search over name, description and categories; switches the order to relevance."New value: +"Plain-words search; orders by relevance." - changed
Input schema / properties / source / descriptionPrevious 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." - changed
Input schema / properties / stale / descriptionPrevious value: -"Filter by the `stale` field."New value: +"Filter on stale." - changed
Input schema / properties / status / descriptionPrevious value: -"'active' (default) or 'inactive'."New value: +"active (default) or inactive." - changed
Input schema / properties / task_category / descriptionPrevious 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."
2 tool updates
- Changed
find_agents1 field changed- changed
Input schema / properties / need / descriptionPrevious 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."
- Changed
register_me9 fields changed- added
Input schema / properties / description / maxLengthAdded value: +2000 - added
Input schema / properties / description / minLengthAdded value: +1 - added
Input schema / properties / endpoint_url / formatAdded value: +"uri" - added
Input schema / properties / endpoint_url / maxLengthAdded value: +2048 - added
Input schema / properties / endpoint_url / patternAdded value: +"^https://" - added
Input schema / properties / name / maxLengthAdded value: +200 - added
Input schema / properties / name / minLengthAdded value: +1 - added
Input schema / properties / submitted_by / patternAdded value: +"^0x[0-9a-fA-F]{40}$" - added
Input schema / properties / task_categories / minItemsAdded value: +1
1 tool update
- Changed
ask_sarnai1 field changed- changed
Input schema / properties / question / descriptionPrevious 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."
9 tool updates
- Changed
ask_sarnai8 fields changed- removed
Input schema / properties / agent_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / agent_id / maxLengthAdded value: +100 - added
Input schema / properties / agent_id / typeAdded value: +"string" - removed
Input schema / properties / product / anyOfRemoved value: -[ - { - "enum": [ - "board", - "verifier", - "scores" - ], - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / product / enumAdded value: +[ + "board", + "verifier", + "scores" +] - added
Input schema / properties / product / typeAdded value: +"string" - removed
Input schema / properties / trace_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / trace_id / typeAdded value: +"string"
- Changed
build_template17 fields changed- removed
Input schema / $defs / Range / properties / max / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / $defs / Range / properties / max / typeAdded value: +"number" - removed
Input schema / $defs / Range / properties / min / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / $defs / Range / properties / min / typeAdded value: +"number" - removed
Input schema / properties / agent_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / agent_id / maxLengthAdded value: +100 - added
Input schema / properties / agent_id / typeAdded value: +"string" - added
Input schema / properties / expectations / $refAdded value: +"#/$defs/Expectations" - removed
Input schema / properties / expectations / anyOfRemoved value: -[ - { - "$ref": "#/$defs/Expectations" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / name / maxLengthAdded value: +100 - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / samples / anyOfRemoved value: -[ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / samples / itemsAdded value: +{} - added
Input schema / properties / samples / typeAdded value: +"array" - removed
Input schema / properties / trace_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / trace_id / typeAdded value: +"string"
- Changed
describe_listing5 fields changed- removed
Input schema / properties / agent_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / agent_id / maxLengthAdded value: +100 - added
Input schema / properties / agent_id / typeAdded value: +"string" - removed
Input schema / properties / trace_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / trace_id / typeAdded value: +"string"
- Changed
find_agents34 fields changed- removed
Input schema / properties / agent_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / agent_id / maxLengthAdded value: +100 - added
Input schema / properties / agent_id / typeAdded value: +"string" - removed
Input schema / properties / connection_type / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / connection_type / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / connection_type / typeAdded value: +"array" - removed
Input schema / properties / exclude_payment_type / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / exclude_payment_type / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / exclude_payment_type / typeAdded value: +"array" - removed
Input schema / properties / has_template / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / has_template / typeAdded value: +"boolean" - added
Input schema / properties / include_no_connectionAdded value: +{ + "default": false, + "description": "Also return listings with no way to connect (only a repository or package page).", + "type": "boolean" +} - removed
Input schema / properties / max_price_usd / anyOfRemoved value: -[ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / max_price_usd / minimumAdded value: +0 - added
Input schema / properties / max_price_usd / typeAdded value: +"number" - removed
Input schema / properties / need / anyOfRemoved value: -[ - { - "maxLength": 300, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / need / maxLengthAdded value: +300 - added
Input schema / properties / need / typeAdded value: +"string" - removed
Input schema / properties / network / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / network / typeAdded value: +"string" - removed
Input schema / properties / payment_type / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_type / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / payment_type / typeAdded value: +"array" - removed
Input schema / properties / probe_status / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / probe_status / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / probe_status / typeAdded value: +"array" - removed
Input schema / properties / source / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / source / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / source / typeAdded value: +"array" - removed
Input schema / properties / task_category / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / task_category / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / task_category / typeAdded value: +"array" - removed
Input schema / properties / trace_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / trace_id / typeAdded value: +"string"
- Changed
how_to_pay11 fields changed- removed
Input schema / properties / agent_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / agent_id / maxLengthAdded value: +100 - added
Input schema / properties / agent_id / typeAdded value: +"string" - removed
Input schema / properties / listing_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / listing_id / typeAdded value: +"string" - added
Input schema / properties / payer / $refAdded value: +"#/$defs/Payer" - removed
Input schema / properties / payer / anyOfRemoved value: -[ - { - "$ref": "#/$defs/Payer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / target / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / target / typeAdded value: +"string" - removed
Input schema / properties / trace_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / trace_id / typeAdded value: +"string"
- Changed
list_facets34 fields changed- removed
Input schema / properties / claimed / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / claimed / typeAdded value: +"boolean" - removed
Input schema / properties / connection_type / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / connection_type / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / connection_type / typeAdded value: +"array" - removed
Input schema / properties / has_template / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / has_template / typeAdded value: +"boolean" - added
Input schema / properties / include_duplicatesAdded value: +{ + "default": false, + "description": "As in search_listings.", + "type": "boolean" +} - removed
Input schema / properties / listing_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / listing_type / typeAdded value: +"string" - removed
Input schema / properties / max_price / anyOfRemoved value: -[ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / max_price / minimumAdded value: +0 - added
Input schema / properties / max_price / typeAdded value: +"number" - added
Input schema / properties / no_connectionAdded value: +{ + "description": "As in search_listings.", + "type": "boolean" +} - removed
Input schema / properties / payment_network / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_network / typeAdded value: +"string" - removed
Input schema / properties / payment_type / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_type / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / payment_type / typeAdded value: +"array" - removed
Input schema / properties / probe_status / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / probe_status / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / probe_status / typeAdded value: +"array" - removed
Input schema / properties / q / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / q / typeAdded value: +"string" - removed
Input schema / properties / source / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / source / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / source / typeAdded value: +"array" - removed
Input schema / properties / stale / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / stale / typeAdded value: +"boolean" - removed
Input schema / properties / status / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / status / typeAdded value: +"string" - removed
Input schema / properties / task_category / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / task_category / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / task_category / typeAdded value: +"array"
- Changed
prepare_verification17 fields changed- removed
Input schema / properties / agent_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / agent_id / maxLengthAdded value: +100 - added
Input schema / properties / agent_id / typeAdded value: +"string" - added
Input schema / properties / inline_templateAdded value: +{ + "default": false, + "description": "true: put a template over 3 KB into request_body (default: a placeholder, and get_template).", + "type": "boolean" +} - removed
Input schema / properties / listing_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / listing_id / typeAdded value: +"string" - added
Input schema / properties / output_schema / additionalPropertiesAdded value: +true - removed
Input schema / properties / output_schema / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - added
Input schema / properties / output_schema / typeAdded value: +"object" - removed
Input schema / properties / task_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / task_id / maxLengthAdded value: +100 - added
Input schema / properties / task_id / typeAdded value: +"string" - removed
Input schema / properties / trace_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / trace_id / typeAdded value: +"string" - added
Input schema / properties / verification / additionalPropertiesAdded value: +true - removed
Input schema / properties / verification / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - added
Input schema / properties / verification / typeAdded value: +"object"
- Changed
register_me52 fields changed- removed
Input schema / $defs / Range / properties / max / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / $defs / Range / properties / max / typeAdded value: +"number" - removed
Input schema / $defs / Range / properties / min / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / $defs / Range / properties / min / typeAdded value: +"number" - removed
Input schema / properties / agent_id / anyOfRemoved value: -[ - { - "maxLength": 100, - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / agent_id / maxLengthAdded value: +100 - added
Input schema / properties / agent_id / typeAdded value: +"string" - removed
Input schema / properties / connections / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / connections / itemsAdded value: +{ + "additionalProperties": true, + "type": "object" +} - added
Input schema / properties / connections / typeAdded value: +"array" - removed
Input schema / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / description / typeAdded value: +"string" - removed
Input schema / properties / endpoint_url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / endpoint_url / typeAdded value: +"string" - removed
Input schema / properties / erc8004_identity / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / erc8004_identity / typeAdded value: +"string" - added
Input schema / properties / expectations / $refAdded value: +"#/$defs/Expectations" - removed
Input schema / properties / expectations / anyOfRemoved value: -[ - { - "$ref": "#/$defs/Expectations" - }, - { - "type": "null" - } -] - removed
Input schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / name / typeAdded value: +"string" - added
Input schema / properties / output_schema / additionalPropertiesAdded value: +true - removed
Input schema / properties / output_schema / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - added
Input schema / properties / output_schema / typeAdded value: +"object" - removed
Input schema / properties / payment_methods / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_methods / itemsAdded value: +{ + "additionalProperties": true, + "type": "object" +} - added
Input schema / properties / payment_methods / typeAdded value: +"array" - removed
Input schema / properties / payment_options / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_options / itemsAdded value: +{ + "additionalProperties": true, + "type": "object" +} - added
Input schema / properties / payment_options / typeAdded value: +"array" - removed
Input schema / properties / payment_wallet / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_wallet / typeAdded value: +"string" - removed
Input schema / properties / pricing_amount / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / pricing_amount / typeAdded value: +"string" - removed
Input schema / properties / pricing_model / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / pricing_model / typeAdded value: +"string" - removed
Input schema / properties / samples / anyOfRemoved value: -[ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / samples / itemsAdded value: +{} - added
Input schema / properties / samples / typeAdded value: +"array" - removed
Input schema / properties / submitted_by / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / submitted_by / typeAdded value: +"string" - removed
Input schema / properties / task_categories / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / task_categories / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / task_categories / typeAdded value: +"array" - removed
Input schema / properties / template_url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / template_url / typeAdded value: +"string" - removed
Input schema / properties / trace_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / trace_id / typeAdded value: +"string" - added
Input schema / properties / verification / additionalPropertiesAdded value: +true - removed
Input schema / properties / verification / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - added
Input schema / properties / verification / typeAdded value: +"object" - removed
Input schema / properties / verification_agent_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / verification_agent_id / typeAdded value: +"string"
- Changed
search_listings36 fields changed- removed
Input schema / properties / claimed / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / claimed / typeAdded value: +"boolean" - removed
Input schema / properties / connection_type / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / connection_type / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / connection_type / typeAdded value: +"array" - removed
Input schema / properties / cursor / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / cursor / typeAdded value: +"string" - removed
Input schema / properties / has_template / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / has_template / typeAdded value: +"boolean" - added
Input schema / properties / include_duplicatesAdded value: +{ + "default": false, + "description": "true: every record; false: one result per service (also_listed_as).", + "type": "boolean" +} - removed
Input schema / properties / listing_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / listing_type / typeAdded value: +"string" - removed
Input schema / properties / max_price / anyOfRemoved value: -[ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / max_price / minimumAdded value: +0 - added
Input schema / properties / max_price / typeAdded value: +"number" - added
Input schema / properties / no_connectionAdded value: +{ + "description": "false: leave out listings with no way to connect; true: only those.", + "type": "boolean" +} - removed
Input schema / properties / payment_network / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_network / typeAdded value: +"string" - removed
Input schema / properties / payment_type / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / payment_type / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / payment_type / typeAdded value: +"array" - removed
Input schema / properties / probe_status / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / probe_status / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / probe_status / typeAdded value: +"array" - removed
Input schema / properties / q / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / q / typeAdded value: +"string" - removed
Input schema / properties / source / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / source / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / source / typeAdded value: +"array" - removed
Input schema / properties / stale / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / stale / typeAdded value: +"boolean" - removed
Input schema / properties / status / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / status / typeAdded value: +"string" - removed
Input schema / properties / task_category / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / task_category / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / task_category / typeAdded value: +"array"
1 tool update
- Changed
register_me1 field changed- changed
Input schema / properties / submitted_by / descriptionPrevious 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
Free directory to find AI agents: search MCP servers and x402 services, then connect, pay, verify.
Find MCP servers, APIs, tools and skills by intent. Free key: POST /api/agents/register
Live index of AI agents, MCP servers and tools with observed liveness and capability search.
The vetted directory of paid APIs and MCP servers for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for the x402 protocol that lets AI agents discover and call payment-gated HTTP APIs automatically.223 npmApache 2.0
- AlicenseNot gradedqualityFmaintenanceTool 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
- AlicenseAqualityBmaintenanceA public, remote MCP server that lets AI agents search the MCP Harbor directory of 1,400+ MCP servers and AI-agent tools.2MIT
- AlicenseNot gradedqualityFmaintenanceUnified 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.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.