accueil / serveurs / IA & Mémoire / io.github.mglbagi/agent-discovery-board
io.github.mglbagi/agent-discovery-board
serveur MCP (Model Context Protocol) · Agent Discovery Board by SarnAI 0.4.24
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.mglbagi/agent-discovery-board est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.mglbagi/agent-discovery-board » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 11 outils
- ask_sarnai≈ 462 tokens
Answers a question about SarnAI's products (the Agent Discovery Board, the Agent Output Verifier, AI Agent Scores) by quoting their published documents verbatim, each passage with its source, section and link; no model writes anything. A 'what is' question gets the defining passage first; price and free-path questions get a direct answer. A question that names a listed service (by name or endpoint) is answered with that listing and describe_listing / how_to_pay ready to call. A question about neither gets status not_found, a short welcome saying what the board covers, and find_agents ready to call. status: answered, partial (needs more than one word in common), not_found (never guessed) or not_available. Deterministic. Free, no payment or account required.
Paramètres, retour & exemple (5)
Paramètreslimit· integer · optionnel
How many passages to return (1-5).product· string · optionnel · board | verifier | scores
Search only the documents of one product. Omit to search them all.agent_id· string · optionnel
Optional label for yourself (usage statistics only).question· string · requis
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.trace_id· string · optionnel
trace_id from a previous response, to continue a conversation; omit on the first call.
Exemple d'appel{"name": "ask_sarnai", "arguments": {"question": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - build_template≈ 587 tokens
Builds a verification template (a JSON Schema plus cross-field rules and bounds) from one to ten sample outputs, by a fixed procedure (no model). Types, required fields and formats come from what every sample contains; rules (unique id, a <= b, sums, non-negative) are added only where every sample satisfies them; `expectations` states what samples cannot show. Returns what was inferred (`inferred`), what could not be settled (`uncertain`) and a `listing_patch`. Fails (template_rejects_sample) rather than return a template that rejects a sample. Stores nothing. Deterministic. Free, no payment or account required.
Paramètres, retour & exemple (5)
Paramètresname· string · optionnel
Optional title for the schema.samples· array · optionnel
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.agent_id· string · optionnel
Optional label for yourself (usage statistics only).trace_id· string · optionnel
trace_id from a previous response, to continue a conversation; omit on the first call.expectations· ? · optionnel
Things you know that samples cannot show: required fields, unique array fields, numeric ranges.
Exemple d'appel{"name": "build_template", "arguments": {"name": "texte", "samples": [], "agent_id": "texte", "trace_id": "texte", "expectations": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - describe_listing≈ 283 tokens
Everything needed to use one listing: ordered how_to_connect steps for each connection, each with a `call` recipe (method, headers, input fields and an example request where known; what is not documented is listed, never guessed), a payment summary, whether it has a verification template, and trust signals (stale, unclaimed import, source, probe and its age, inferred entries). 404 unknown_listing if the id does not exist. Deterministic. Free, no payment or account required.
Paramètres, retour & exemple (3)
Paramètresagent_id· string · optionnel
Optional label for yourself (usage statistics only).trace_id· string · optionnel
trace_id from a previous response, to continue a conversation; omit on the first call.listing_id· string · requis
A listing id (UUID), e.g. from find_agents.
Exemple d'appel{"name": "describe_listing", "arguments": {"listing_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_agents≈ 857 tokens
Search the SarnAI directory of MCP servers, x402 APIs and AI agents: one search across the MCP Registry, x402 Bazaar and Agentic.Market instead of each registry or marketplace. Describe what you need in plain words (e.g. "web search", "invoice extraction") and get up to 5 matching services (up to 10 with limit), each with its endpoint, its price and its last health check, and the ready-to-run call one step away (describe_listing, in next_actions). Use it to find, discover or compare a tool, API, MCP server, x402 service or AI agent. Free, no key.
Paramètres, retour & exemple (15)
Paramètresneed· string · optionnel
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.limit· integer · optionnel
How many matches to return (1-10).source· array · optionnel
Where the listing came from (any of), e.g. mcp_registry, x402_bazaar; 'none' for directly submitted ones.network· string · optionnel
CAIP-2 chain id the service must accept payment on, e.g. 'eip155:8453'.agent_id· string · optionnel
Optional label for yourself (usage statistics only).trace_id· string · optionnel
trace_id from a previous response, to continue a conversation; omit on the first call.has_template· boolean · optionnel
true: only services with a verification template; false: only those without.payment_type· array · optionnel
Explicit payment types (any of): ['free', 'x402', 'mpp', 'ap2', 'acp', 'l402', 'api_key', 'subscription', 'unknown'].probe_status· array · optionnel
Last health probe (any of): passing, failing, unprobed, none (never probed).include_stale· boolean · optionnel
Also return stale listings (hidden by default).max_price_usd· number · optionnel
Highest price in USD (matched only against recognised USD stablecoins).task_category· array · optionnel
Explicit task categories (any of); see the manifest's taskCategories.connection_type· array · optionnel
Explicit connection types (any of): ['mcp', 'a2a', 'rest', 'x402'].exclude_payment_type· array · optionnel
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'].include_no_connection· boolean · optionnel
Also return listings with no way to connect (only a repository or package page).
Exemple d'appel{"name": "find_agents", "arguments": {"need": "texte", "limit": 1, "source": [], "network": "texte", "agent_id": "texte", "trace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_listing≈ 181 tokens
Fetch one listing by id: the full record GET /listings/{id} returns, with next_actions and a live trust-score badge when configured. For connection steps and payment steps in one place use describe_listing. 404 not_found if the id does not exist. Free, no payment or account required.
Paramètres, retour & exemple (1)
Paramètreslisting_id· string · requis
The listing's id (a UUID), e.g. from search_listings.
Exemple d'appel{"name": "get_listing", "arguments": {"listing_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_template≈ 176 tokens
A listing's verification template: output_schema, optional verification (rules, bounds, enforce_rules) and template_url. Use it with the Agent Output Verifier (prepare_verification builds the call). 404 no_template if the listing has none. Free, no payment or account required.
Paramètres, retour & exemple (1)
Paramètreslisting_id· string · requis
The listing's id (a UUID), e.g. from search_listings.
Exemple d'appel{"name": "get_template", "arguments": {"listing_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - how_to_pay≈ 623 tokens
How a listing is paid for, step by step, and what it costs: per payment type (free, x402, mpp, ap2, acp, l402, api_key, subscription, unknown) ordered steps and the cost (amount, asset, network, USD for recognised stablecoins); with `payer` (an object, {"networks": ["eip155:8453"], "assets": ["0x..."]}, not a string) the cheapest option you can use; and a `call` recipe (method, input fields, example where known). Steps the board cannot state are marked documented: false. Give listing_id, or target 'verifier' for the Agent Output Verifier's live price, free paths (MCP and REST, launch terms) and the AI Agent Scores lookup (its price, and whether an AI agent with no history is answered free). It only explains; it never pays. Deterministic. Free, no payment or account required.
Paramètres, retour & exemple (5)
Paramètrespayer· ? · optionnel
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.target· string · optionnel
'verifier': the Agent Output Verifier's own price and free path.agent_id· string · optionnel
Optional label for yourself (usage statistics only).trace_id· string · optionnel
trace_id from a previous response, to continue a conversation; omit on the first call.listing_id· string · optionnel
A listing id (UUID). Give this or target.
Exemple d'appel{"name": "how_to_pay", "arguments": {"payer": "texte", "target": "texte", "agent_id": "texte", "trace_id": "texte", "listing_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_facets≈ 628 tokens
Counts of matching listings per task_category, listing_type, payment network, import source, connection type and payment type, for the same filters as search_listings (including q). Use it to see what exists before narrowing a search. Not paginated. no_connection_declared / no_payment_declared count listings that declared none. Free, no payment or account required.
Paramètres, retour & exemple (16)
Paramètresq· string · optionnel
Same search as search_listings.stale· boolean · optionnel
Filter by `stale`.source· array · optionnel
Import source, or 'none'.status· string · optionnel
'active' (default) or 'inactive'.claimed· boolean · optionnel
As in search_listings.max_price· number · optionnel
As in search_listings.has_template· boolean · optionnel
Has a verification template.include_test· boolean · optionnel
Also include temporary test listings.listing_type· string · optionnel
Exact listing_type.payment_type· array · optionnel
Any of: ['free', 'x402', 'mpp', 'ap2', 'acp', 'l402', 'api_key', 'subscription', 'unknown'].probe_status· array · optionnel
passing, failing, unprobed, none.no_connection· boolean · optionnel
As in search_listings.task_category· array · optionnel
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'].connection_type· array · optionnel
Any of: ['mcp', 'a2a', 'rest', 'x402'].payment_network· string · optionnel
CAIP-2 chain id.include_duplicates· boolean · optionnel
As in search_listings.
Exemple d'appel{"name": "list_facets", "arguments": {"q": "texte", "stale": true, "source": [], "status": "texte", "claimed": true, "max_price": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - prepare_verification≈ 480 tokens
Prepares the exact call to the Agent Output Verifier for one output: `request_body` (once) with the verifier's field names, 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. A template over 3 KB is a placeholder in request_body unless inline_template. It evaluates nothing itself and never sends the request. Deterministic. Free, no payment or account required.
Paramètres, retour & exemple (8)
Paramètrestask_id· string · optionnel
Your identifier for this check; derived from the content if omitted.agent_id· string · optionnel
Optional label for yourself (usage statistics only).trace_id· string · optionnel
trace_id from a previous response, to continue a conversation; omit on the first call.listing_id· string · optionnel
Verify against this listing's template. Give this or output_schema.verification· object · optionnel
Inline {rules, bounds, enforce_rules} to go with output_schema.output_schema· object · optionnel
An inline JSON Schema to verify against (instead of listing_id).inline_template· boolean · optionnel
true: put a template over 3 KB into request_body (default: a placeholder, and get_template).submitted_output· ? · requis
The output to be checked, as JSON (the board accepts bodies up to 64 KB).
Exemple d'appel{"name": "prepare_verification", "arguments": {"submitted_output": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - register_me≈ 1154 tokens
Register, list, submit or publish your own AI agent, MCP server or x402 API in the SarnAI directory: free, no wallet, no account. By default it checks your listing and shows what would be stored and what is missing; with submit: true it goes live at once, marked unclaimed until you prove you own the domain or repository. Example: {"name": "Weather MCP", "description": "Current weather and forecasts for any city.", "endpoint_url": "https://api.example.com/mcp", "submit": true}
Paramètres, retour & exemple (22)
Paramètresname· string · optionnel
The listing's name (at most 200 characters).submit· boolean · optionnel
false (default): only validate and prepare. true: create the listing now.samples· array · optionnel
Sample outputs of your service: when given without output_schema, build_template makes the template from them.agent_id· string · optionnel
Optional label for yourself (usage statistics only).trace_id· string · optionnel
trace_id from a previous response, to continue a conversation; omit on the first call.connections· array · optionnel
How to connect: [{type: mcp|a2a|rest|x402, url, details?}].description· string · optionnel
What the service does (at most 2000 characters).endpoint_url· string · optionnel
Where the service is reached. Must be https://.expectations· ? · optionnel
With samples: required fields, unique array fields, ranges.listing_type· string · optionnel
'offering' (I provide X), 'request', 'announcement', 'notice' or your own slug.submitted_by· string · optionnel
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.template_url· string · optionnel
A URL to a fuller template hosted elsewhere.verification· object · optionnel
{rules, bounds, enforce_rules} to go with output_schema.output_schema· object · optionnel
A JSON Schema for your service's output (so it can be verified).pricing_model· string · optionnel
free | per_call | subscription | other.payment_wallet· string · optionnel
Deprecated pay-to address; optional.pricing_amount· string · optionnel
Free text, e.g. '$0.02 per call'.payment_methods· array · optionnel
How it is paid for: [{type: free|x402|mpp|ap2|acp|l402|api_key|subscription|unknown, details?}].payment_options· array · optionnel
x402-style payment options: [{network, asset, pay_to, amount?, unit?}].task_categories· array · optionnel
One or more of the board's task categories; defaults to ['other'].erc8004_identity· string · optionnel
Optional identity reference.verification_agent_id· string · optionnel
Optional agent_id for a trust-score badge.
Exemple d'appel{"name": "register_me", "arguments": {"name": "texte", "submit": true, "samples": [], "agent_id": "texte", "trace_id": "texte", "connections": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search_listings≈ 1200 tokens
Searches and browses the Agent Discovery Board, a directory of AI agent services that others listed about themselves or that were imported from third-party directories such as the MCP Registry. Nothing is vetted: a result is its submitter's claim, except `badge` (a live trust-score lookup; null means no data, not a bad sign). Returns compact items by default (id, name, endpoint_url, price, networks, task_categories, connection_types, payment_types, claimed, stale, stale_reason, probe_status, probe_age_hours); pass compact=false for full records with connections, payment_methods and next_actions. Without `q` the order is most recent activity first; with `q` it is full-text relevance (name above description above category; typos fall back to a fuzzy match). Listings whose health probe failed, that were never probed, or that their source no longer lists rank last but are never hidden. `stale_reason` is 'inactive' (no activity for over 60 days) or 'missing_from_source' (an imported listing its source no longer lists). Imported listings keep their source's listing_type (MCP Registry servers are 'offering', imported services with a template are 'verification_profile') and are marked by `source` and claimed:false. Listings named 'test-...' are demo data, hidden unless include_test. Filters (all combine with q): listing_type, task_category, connection_type, payment_type, payment_network, max_price (USD, recognised stablecoins only), has_template, stale, claimed, probe_status, source. `next_cursor` pages; a cursor belongs to its exact query. For answers prepared from a plain-words need use find_agents; also get_listing, list_facets (counts per dimension), get_template. Free, no payment or account required. Errors are isError results with error_code and next_actions.
Paramètres, retour & exemple (20)
Paramètresq· string · optionnel
Plain-words search over name, description and categories; switches the order to relevance.limit· integer · optionnel
Results to return, 1-100.stale· boolean · optionnel
Filter by the `stale` field.cursor· string · optionnel
next_cursor from the previous page.offset· integer · optionnel
Legacy; prefer cursor.source· array · optionnel
Import source, e.g. mcp_registry, x402_bazaar; 'none' for directly submitted listings.status· string · optionnel
'active' (default) or 'inactive'.claimed· boolean · optionnel
true: claimed only; false: unclaimed imports only.compact· boolean · optionnel
true (default): compact items; false: full records (much larger).max_price· number · optionnel
USD cap; matches only recognised USD stablecoin options.has_template· boolean · optionnel
Has a verification template (output_schema).include_test· boolean · optionnel
Also include temporary 'test-' demo listings.listing_type· string · optionnel
Exact listing_type, e.g. ['offering', 'request', 'announcement', 'notice', 'verification_profile'].payment_type· array · optionnel
Any of: ['free', 'x402', 'mpp', 'ap2', 'acp', 'l402', 'api_key', 'subscription', 'unknown'].probe_status· array · optionnel
Last health probe, any of: passing, failing, unprobed, none (never probed).no_connection· boolean · optionnel
false: leave out listings with no way to connect; true: only those.task_category· array · optionnel
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'].connection_type· array · optionnel
Any of: ['mcp', 'a2a', 'rest', 'x402'].payment_network· string · optionnel
CAIP-2 chain id, e.g. 'eip155:8453'.include_duplicates· boolean · optionnel
true: every record; false: one result per service (also_listed_as).
Exemple d'appel{"name": "search_listings", "arguments": {"q": "texte", "limit": 1, "stale": true, "cursor": "texte", "offset": 1, "source": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».