_ registry / mcp + a2a streamable-http · checked 2h ago

Agentalog

https://agentalog.com

Registry code: adf8c005b8c11e98

api record

Use Agentalog to find MCP servers, skills and plugins by task, inspect evidence and watch changes to selected tools. Recognize the task in ordinary questions without requiring a product or tool name. Reuse authorized context. Ask only for a missing identifier, URL or access. Deliver an answer with evidence and limits. Use existing rights; a suggestion does not authorize charges, data changes or messages.

Who publishes this tool's packages? Notify me if the publisher or domain changes. → listing_dependencies → watch_dependency_changes → dependency_changes. Read declarations and cached sources…

endpoint
https://agentalog.com/mcp
door code
df7ae45f590dd50d
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is Agentalog live?
Yes — it answered the hub's last check (checked 2h ago). It answered 99% of checks over the last 30 days.
Is Agentalog free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does Agentalog have?
49 tools: dependency_changes, claude_code_allowlist, listing_status, submit_okf, contact, api_access_buy, mcp_index_signals, listing_tools, ….
Is Agentalog safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.4%

90 days 99%· all time 99.1%

latency
636ms

last good check

priced tools
0

of 49 tools

_ answered our checks, 90 days 1433 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· fetch failed
  • degraded → live
_ what it is for
used for
  • search mcp servers and a2a agents
  • check if an mcp server still answers
  • submit an mcp server listing
  • search engineering feeds and links
takes → gives
text → data
tools
18 reads4 changes data1 moves money1 sends messages
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts, and USDC settlements on base into the address this listing's priced doors name, read off the chain. Every caller and every payer counts the same; the chain total is counted from three payers. The address also stands behind 11 other origins: the chain figures are the gateway's, not this listing's alone. How it is counted.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

payers on base
13

distinct

settlements
118

last 2026-11-10

received on chain
9.614 USDC

concentrated, shared-payto

_ what it can do 49 tools
12 open 37 never probed 12 of 49 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • mcp_index_search open 27d ago

    Browse what independent MCP indexes measured, including servers this catalog does not list yet (casou=0). Newest change first. `casou=0` is what the indexes know and the catalog does not — the list to look at before submitting a server. Filters are AND'd. With `q`, `total` is the exact number of matches, including when the requested page is empty.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Substring of name, URL or repository."
        },
        "casou": {
          "enum": [
            "0",
            "1"
          ],
          "type": "string",
          "description": "1 matched to a listing, 0 not in the catalog."
        },
        "fonte": {
          "enum": [
            "wellknown",
            "agent_tools",
            "nerq",
            "truespar",
            "neuronto",
            "paygent",
            "hultra"
          ],
          "type": "string",
          "description": "One index: wellknown, agent_tools, nerq, truespar, neuronto, paygent, hultra."
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "description": "Signals per page, 1-50."
        },
        "estado": {
          "enum": [
            "vivo",
            "fora",
            "parado",
            "abandonado",
            "apagado",
            "desconhecido"
          ],
          "type": "string",
          "description": "vivo, fora, parado, abandonado, apagado, desconhecido."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 55 lines
  • a2a_agent_search reads open 26d ago

    Find A2A agents — agents that publish an AgentCard — by text, health, protocol version, registry, skill tag or publisher. Each row carries the key for a2a_agent and the license of every registry that lists it. Collected from public A2A registries and served as it comes — no review queue hides a record; quality is the order, never visibility. One row per agent, merged across the registries that list it: `sources` says which, and `credits` carries each one's license, which travels with the data. Values inside one parameter are OR'd, different parameters are AND'd. Cached for 60 seconds. A MAT catalog read, served by the index host `https://api.agentalog.com`; this host forwards the call there.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Substring of the name, description, key, publisher or the card's skills, in any letter case (`%` and `_` are taken literally); up to 80 characters."
        },
        "tag": {
          "type": "string",
          "description": "Exact tag of the card's skills, case-sensitive; `/api/a2a/facets` lists the 40 most used. Comma-separated values are OR'd (up to 12, each up to 200 characters)."
        },
        "fonte": {
          "enum": [
            "a2a_registry",
            "a2a_global",
            "agenstry"
          ],
          "type": "string",
          "description": "Only agents listed by this registry. Comma-separated values are OR'd (up to 12, each up to 200 characters)."
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "description": "Items per page, 1–50; more is capped at 50, anything else means 20."
        },
        "saude": {
          "enum": [
            "sim",
            "nao",
            "sem_medida"
          ],
          "type": "string",
          "description": "Health the registries measured: `sim` answered, `nao` did not, `sem_medida` never measured. Comma-separated values are OR'd (up to 12, each up to 200 characters)."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "description": "Offset, capped at 20000 (a larger value reads as 20000). Prefer `_links.next`."
        },
        "skills": {
          "enum": [
            "1"
          ],
          "type": "string",
          "description": "`1` keeps only agents whose card lists at least one skill."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "protocolo": {
          "type": "string",
          "description": "A2A protocol version as normalized (`0.3`, `1.0`…); `/api/a2a/facets` lists the ones present. Comma-separated values are OR'd (up to 12, each up to 200 characters)."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        },
        "publicador": {
          "type": "string",
          "description": "Exact publisher, as `publisher` shows it. Comma-separated values are OR'd (up to 12, each up to 200 characters)."
        }
      }
    }
    arguments 64 lines
  • health open 27d ago

    Liveness and the commit deployed right now — it is how the smoke waits for its own deploy.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • search_bundles reads open 26d ago

    Search the index of OKF bundles: free text over name, tagline, description and origin; filter by provenance (github|domain), repository, version, language, license, root type or concept count; search root concept text. Paginate with limit/offset. Only `live` bundles. Free text matches the name, the tagline, the description and the origin identifier (`owner/repo:path` or the bundle URL). No `total` on purpose: `GET /api/okf/stats` has it.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Free text over name, tagline, description and origin identifier."
        },
        "repo": {
          "type": "string",
          "description": "Only bundles of one repository, `owner/repo` (case-insensitive)."
        },
        "sort": {
          "enum": [
            "recent",
            "updated",
            "name",
            "stars"
          ],
          "type": "string",
          "default": "recent",
          "description": "Result order: arrival, last content change, name or repository stars."
        },
        "type": {
          "type": "string",
          "description": "Type declared by the root, not the types of every concept. Up to 5 comma-separated values, 40 characters each."
        },
        "limit": {
          "type": "integer",
          "default": 24,
          "description": "Bundles per page, at most 100."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "description": "How many bundles to skip. Use `next_offset` from the previous response; the list ends at 1000."
        },
        "origin": {
          "enum": [
            "github",
            "domain"
          ],
          "type": "string",
          "description": "Provenance: found by the GitHub sweep, or submitted by a domain."
        },
        "concept": {
          "type": "string",
          "description": "Text in the indexed root content, including listed concept names and summaries (first 1000 characters); up to 80 characters."
        },
        "license": {
          "type": "string",
          "description": "Repository license. Up to 5 comma-separated values, 40 characters each."
        },
        "version": {
          "type": "string",
          "description": "Only bundles declaring one of these `okf_version` values; comma-separated, up to 5."
        },
        "concepts": {
          "type": "string",
          "description": "Number of entries listed by the root. Up to 5 comma-separated bands: 0,1-5,6-20,21-100,101+."
        },
        "language": {
          "type": "string",
          "description": "Only bundles whose repository language is one of these; comma-separated, up to 5 (GitHub bundles)."
        }
      }
    }
    arguments 66 lines
  • index_stats reads open 26d ago

    Size of the index by provenance and when it last changed.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • feed_find open 27d ago

    Does this site publish a feed? Answers with every feed known for a domain — the question a reader or an agent actually asks. Find feeds by text, format, language and availability. Filter and text search run in the SAME full-text query: values inside one parameter are OR'd, different parameters are AND'd. Without `q` the order is by newest in the index (`recent`) and `next_cursor` is a keyset — follow `next` to walk everything. With `q` the order is relevance and paging is by `offset`. We index and link; the feeds belong to whoever publishes them.

    mcp-tool

    {
      "type": "object",
      "required": [
        "dominio"
      ],
      "properties": {
        "dominio": {
          "type": "string",
          "description": "Domain, with no scheme: example.com"
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • feed_search reads open 26d ago

    Search the feed index by text and filters: format, audio/video, community, namespace and year of the newest item. Find feeds by text, format, language and availability. Filter and text search run in the SAME full-text query: values inside one parameter are OR'd, different parameters are AND'd. Without `q` the order is by newest in the index (`recent`) and `next_cursor` is a keyset — follow `next` to walk everything. With `q` the order is relevance and paging is by `offset`. We index and link; the feeds belong to whoever publishes them.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Free text over name, description and domain."
        },
        "tipo": {
          "enum": [
            "rss2",
            "rss1",
            "atom",
            "json",
            "rss"
          ],
          "type": "string",
          "description": "rss2, rss1, atom, json (comma-separated = OR)."
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "description": "Feeds per page, 1-50."
        },
        "midia": {
          "enum": [
            "audio",
            "video"
          ],
          "type": "string",
          "description": "audio, video."
        },
        "origem": {
          "enum": [
            "index",
            "blogroll",
            "bridge"
          ],
          "type": "string",
          "description": "index, blogroll, bridge."
        },
        "recurso": {
          "enum": [
            "content",
            "itunes",
            "podcast",
            "media",
            "slash",
            "wfw",
            "georss"
          ],
          "type": "string",
          "description": "content, itunes, podcast, media, slash, wfw, georss."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        },
        "comunidade": {
          "enum": [
            "fediverse",
            "indieweb",
            "mastodon",
            "friendica",
            "wordpress",
            "funkwhale",
            "blogroll"
          ],
          "type": "string",
          "description": "fediverse, indieweb, mastodon, friendica, wordpress, funkwhale."
        }
      }
    }
    arguments 76 lines
  • briefings_topics open 26d ago

    Which engineering topics have curated briefings, how many links each has and the newest links across all of them. Each link comes with its source, source type and a two-line summary. Topics are public bookmark folders (CUDA, inference, RAG, agents…). Each item is a post someone saved, its main source, the source type and a two-line summary in English and Portuguese. `?resumo=1` returns only `total` and each topic's `slug` and `total`. 404 until the first publication.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • briefings_links reads open 26d ago

    Curated engineering links filtered by topic and source type (paper, repo, model, dataset, demo, video, docs, article, post), 20 per page, with the count of each filter value. Values inside one parameter are OR'd; the two parameters are AND'd. Unknown values are ignored. Follow `_links.next` to walk everything.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "default": 1,
          "description": "Page, from 1."
        },
        "tipo": {
          "enum": [
            "paper",
            "repo",
            "model",
            "dataset",
            "demo",
            "video",
            "docs",
            "article",
            "post"
          ],
          "type": "string",
          "description": "Source types, comma-separated."
        },
        "topico": {
          "type": "string",
          "description": "Topic slugs, comma-separated (from briefings_topics)."
        }
      }
    }
    arguments 29 lines
  • api_index open 26d ago

    Self-describing index: the whole API surface, with quota and quickstart.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • list_listings open 26d ago

    Public mosaic of live MCP servers, skills, plugins and OKF knowledge bundles. MCP servers with an active verification seal first (`verified`); `trusted=1` lists only them, and `warning` marks a page with listings that Agentalog does not check every day. Then `live` listings and the `low` tail (few stars or no clear license) after them in every order — `low=0` leaves the tail out. To walk everything, follow `next`: without `q` it is a cursor (`next_cursor`, keyset on the order's index) and has no ceiling; every listing also has an HTML page at `/l/:id` and the shards of `/sitemap-listings.xml` list them all. `q` runs on a full-text index (FTS5, bm25) kept in the same transaction as every text write. With `q` and `low=0`, `low_count` says how many `low` listings the filter left out — LIKE with a cap of 200. The query is mapped onto kind/topic/transport filters unless `interpret=0`.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "Free text over the name, the tagline, the description, the origin identifier and the README excerpt: every word (up to six, 2+ letters, accents ignored) must match; ranked by bm25 with the name weighing most (10), then tagline (5), identifier (3), description (2), README excerpt (1); ties by stars. Kind, topic and transport words become filters. The `low` tail is in the same index."
        },
        "all": {
          "enum": [
            "1"
          ],
          "type": "string",
          "description": "1: every listing, verified first (default). Same as trusted=0."
        },
        "low": {
          "enum": [
            "0"
          ],
          "type": "string",
          "description": "`0` leaves the `low` tail out; by default it comes after the `live` listings in every order."
        },
        "kind": {
          "enum": [
            "mcp",
            "skill",
            "plugin"
          ],
          "type": "string",
          "description": "Which kind of resource to fetch."
        },
        "sort": {
          "enum": [
            "relevancia",
            "recent",
            "stars",
            "likes",
            "visits",
            "nome"
          ],
          "type": "string",
          "default": "relevancia when q is set, recent otherwise",
          "description": "Result order. Without it, a query is ranked by relevance — bm25 over the full-text index (name 10, tagline 5, identifier 3, description 2, README excerpt 1) multiplied by 1 + 0.05·ln(1 + stars) + 0.1 if pushed in the last 180 days + 0.1 if a README was collected; ties by stars — and a plain listing by arrival."
        },
        "license": {
          "type": "string",
          "description": "Repository licenses, comma-separated, for example MIT,Apache-2.0. Preserve case."
        },
        "max_prs": {
          "type": "string",
          "description": "Maximum open pull requests of a repository with collected activity data."
        },
        "min_prs": {
          "type": "string",
          "description": "Minimum open pull requests of a repository with collected activity data."
        },
        "trusted": {
          "enum": [
            "0",
            "1"
          ],
          "type": "string",
          "description": "1: verified listings only. 0: every listing, verified first (default)."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "category": {
          "type": "string",
          "description": "Category declared by whoever published."
        },
        "has_code": {
          "enum": [
            "0",
            "1"
          ],
          "type": "string",
          "description": "Whether a repository link is available. This does not certify the code."
        },
        "language": {
          "type": "string",
          "description": "Repository code languages, comma-separated. Preserve case, for example Python."
        },
        "interpret": {
          "enum": [
            "0"
          ],
          "type": "string",
          "description": "`0` disables query understanding and searches the raw string."
        },
        "min_forks": {
          "type": "string",
          "description": "Minimum forks of a repository with collected activity data."
        },
        "min_stars": {
          "type": "string",
          "description": "Minimum repository stars, from 0 to 999999999."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        },
        "added_since": {
          "type": "string",
          "description": "Catalog arrival on or after YYYY-MM-DD. This is not the original publication date."
        },
        "pushed_since": {
          "type": "string",
          "description": "Last repository code push on or after YYYY-MM-DD."
        }
      }
    }
    arguments 112 lines
  • list_mcp_servers reads open 26d ago

    MCP subregistry (GET /v0.1/servers). Only live kind=mcp, verified servers first, seals in _meta. Only `kind=mcp` and only `live`, verified servers first, each with its seals in `_meta`. A generic MCP client reads it without knowing this product. `GET /v0/servers` is an alias of the same resource, kept for whoever already pointed there — this is the canonical URL.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "number",
          "default": 30,
          "description": "Servers per page."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque cursor of the next page, from `metadata.nextCursor`."
        },
        "search": {
          "type": "string",
          "description": "Free text over the server's name and description."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 26 lines
  • dependency_changes unknown never probed

    Read your watched tool's before/after evidence, dates and sources. Continue through history_next.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Live catalog listing ID."
        },
        "events_after": {
          "type": "integer",
          "description": "Continue private history after this event number. Default 0."
        }
      }
    }
    arguments 16 lines
  • claude_code_allowlist unknown never probed

    The watch list as Claude Code managed settings (allowedMcpServers, deniedMcpServers) and claude mcp add commands. `managed_settings` goes into a Claude Code managed settings source (see `docs`). `allowManagedMcpServersOnly` restricts user-added servers to this list. Checked servers rated as `risk` go to `deniedMcpServers`. The exact URL and that URL followed by `?*` permit the checked route with optional query parameters. Expired or unchecked items stay out. `commands` has one quoted `claude mcp add` command per allowed server.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • listing_status reads unknown 27d ago

    Moderation state of a listing (pending / live / low / hidden / blocked) — poll it after create_listing. No credential; only the decision comes back. Every submission is born `pending`. An automatic safety check looks for concrete signs of fraud, malware or data theft. Listings without these signs can be approved. A risk finding or an unreadable source keeps the listing private for a person to review. This is the receipt you poll after `POST /api/listings` (its response carries this URL as `status_api`). Only the decision comes back, never the unreviewed content: the id (`lst_…`, unguessable) is all it takes, and the page itself keeps its rule — owner only until it is public. Answers are cached for 60 s per point of presence: poll every few minutes, not every second.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Listing ID, from the `id` of the `POST /api/listings` response."
        }
      }
    }
    arguments 12 lines
  • submit_okf unknown never probed

    Submits OKF bundles from a host you control (IndexNow protocol: a key file proves ownership, with no account). No charge. Answers 202 — the key is checked by the collector before anything is read. No account, no payment: ownership is proved by a key file on the host, exactly as IndexNow does it. Host `https://<host>/<key>.txt` containing the key (or point `keyLocation` at another path on the SAME host), then send the bundle URLs. We answer **202**: the key has not been checked yet. Verification and reading happen on our collector, never at the edge — so nothing is published, and no URL of yours is fetched, before the key matches. Re-sending a URL is how you say the bundle changed; it goes back in line to be re-read. At most 100 URLs per request and 200 per host per UTC day. The same queue is served by `POST https://okfindex.com/api/ping`, the index's own home — search, bundle cards and statistics live there.

    mcp-tool

    {
      "type": "object",
      "required": [
        "host",
        "key",
        "urlList"
      ],
      "properties": {
        "key": {
          "type": "string",
          "description": "8 to 128 characters of [a-zA-Z0-9-]."
        },
        "host": {
          "type": "string",
          "description": "The host that owns the bundles."
        },
        "urlList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Bundle `index.md` URLs. https, on `host`, ending in .md. No fixed path: the spec defines no discovery convention."
        },
        "keyLocation": {
          "type": "string",
          "description": "Where the key file lives. Defaults to `https://<host>/<key>.txt`; must be on `host`."
        }
      }
    }
    arguments 29 lines
  • contact sends messages unknown never probed

    Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s per network (one that arrives sooner waits its turn). One route for a question and for a sponsorship, partnership or ad proposal (`type`, with the placements of `GET /api/partners`). No captcha, no account, no payment. One message every 10 seconds per network: one that arrives sooner waits its turn and then goes out — no error. The message reaches the team by e-mail, with `email` as the reply address. For voice, send multipart/form-data: `dados` is this JSON (up to 32 KiB), and `audio` is one WebM, Ogg or M4A audio file (up to 2 MB). Audio can replace message. The browser records up to two minutes. Audio is attached to the owner's e-mail.

    mcp-tool

    {
      "type": "object",
      "required": [
        "name",
        "email",
        "message"
      ],
      "properties": {
        "fuso": {
          "type": "string",
          "description": "Consulting: the IANA time zone, such as `America/New_York`."
        },
        "name": {
          "type": "string",
          "description": "What to call the person writing."
        },
        "pais": {
          "type": "string",
          "description": "Consulting: the country of the person asking."
        },
        "site": {
          "type": "string",
          "description": "Website of who is proposing."
        },
        "tipo": {
          "enum": [
            "patrocinio",
            "parceria",
            "anuncio",
            "consultoria"
          ],
          "type": "string",
          "description": "Proposal: `patrocinio`, `parceria`, `anuncio` or `consultoria`. Turns on the fields below."
        },
        "email": {
          "type": "string",
          "description": "Where to reply."
        },
        "prazo": {
          "enum": [
            "agora",
            "1_mes",
            "1_3_meses",
            "explorando"
          ],
          "type": "string",
          "description": "Consulting: when to start (`agora`, `1_mes`, `1_3_meses` or `explorando`)."
        },
        "espaco": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Placement ids from `GET /api/partners`, up to 6."
        },
        "duracao": {
          "enum": [
            "30",
            "90",
            "365"
          ],
          "type": "string",
          "description": "Exposure in days: `30`, `90` or `365`."
        },
        "empresa": {
          "type": "string",
          "description": "Who is proposing, when it is a company."
        },
        "formato": {
          "enum": [
            "projeto",
            "mensal",
            "assessoria"
          ],
          "type": "string",
          "description": "Consulting: `projeto` (per scope), `mensal` (monthly) or `assessoria` (advisory)."
        },
        "message": {
          "type": "string",
          "description": "What you want to say."
        },
        "projeto": {
          "enum": [
            "llm_privado",
            "voz",
            "dados_sensiveis",
            "gpu",
            "integracao",
            "outro"
          ],
          "type": "string",
          "description": "Consulting: the kind of project (`llm_privado`, `voz`, `dados_sensiveis`, `gpu`, `integracao` or `outro`)."
        },
        "horarios": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Consulting: up to 3 times for the call, `YYYY-MM-DDTHH:MM` in that time zone."
        },
        "whatsapp": {
          "type": "string",
          "description": "Optional reply number with country code, such as +5561999999999."
        },
        "orcamento": {
          "enum": [
            "ate_100",
            "100_500",
            "500_2000",
            "2000_mais",
            "a_combinar",
            "ate_2000",
            "2000_5000",
            "5000_10000",
            "10000_mais",
            "nao_sei"
          ],
          "type": "string",
          "description": "Advertising: `ate_100`, `100_500`, `500_2000`, `2000_mais` or `a_combinar`. Consulting, in US dollars: `ate_2000`, `2000_5000`, `5000_10000`, `10000_mais` or `nao_sei`."
        },
        "pagamento": {
          "enum": [
            "usdc",
            "deposito",
            "a_combinar"
          ],
          "type": "string",
          "description": "`usdc`, `deposito` or `a_combinar`."
        },
        "prefer_whatsapp": {
          "type": "boolean",
          "description": "Request a WhatsApp reply. Requires whatsapp."
        }
      }
    }
    arguments 135 lines
  • api_access_buy moves money unknown never probed

    Buy 1,000 basic data reads for US$1, valid for 30 days. Requires explicit payment. MAT-only balance; pass prefix mat_. Catalog discovery and ordinary browsing are free. GPTBot, ClaudeBot, CCBot, Meta-ExternalAgent, Amazonbot, AhrefsBot and MJ12bot share a daily allowance of 1,000 reads per crawler family; over it the answer is 402 with the MAT reads package: US$ 1 for 1,000 reads for 30 days, with no automatic renewal. Buy it at POST /api/acesso and send its pass in X-API-Pass. The MAT allowance is separate from the company, address and procurement indexes.

    mcp-tool

    {
      "type": "object",
      "required": [
        "api_pass"
      ],
      "properties": {
        "payment": {
          "type": "string",
          "description": "Signed x402 payload, after authorizing the quote."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "transaction": {
          "type": "string",
          "description": "Base transaction hash to reconcile an uncertain payment with the same pass and original payload."
        },
        "credit_token": {
          "type": "string",
          "description": "Existing prepaid credit token."
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • mcp_index_signals reads unknown never probed

    Does this MCP server still answer, with which access, and is its repository alive? What independent MCP indexes measured about one listing of this catalog, each credited with its license. Take the id from list_listings. A signal belongs to a listing only when it is the SAME object: the name in the official MCP registry, the exact remote endpoint URL or the GitHub `owner/repo`, in that order. A shared domain never matches — two servers on one host are different products. Up to 20 signals, one per index and record.

    mcp-tool

    {
      "type": "object",
      "required": [
        "listing"
      ],
      "properties": {
        "listing": {
          "type": "string",
          "description": "Listing id from list_listings."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • listing_tools unknown 27d ago

    The tools and instructions a remote MCP server announced at its last check, with what they mention doing and any suspicious text. 404 tools_not_read when the server was not read yet. The announced manifest, normalized: each tool's name, title, description (up to 4,000 characters), input schema (null above 8,000 characters) and protocol annotations, plus the server instructions. `capabilities` and `suspicions` come from the current rules, applied when you read. Reading this endpoint never contacts the server. Cached for 5 minutes.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Listing ID, from `Anuncio.id`."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • cancel_plan unknown never probed

    Cancel the active plan. Nothing else is charged; a purchase under 7 days and a paid period that has not started are refunded and end now, and the rest of the paid period stays active until keeps_until. Requires accept_data_removal: true. Send `{ "accept_data_removal": true }`. The monthly card subscription stops. A purchase made less than 7 days ago and a paid period that has not started yet, such as a renewal, go back the same way they were paid (card or Pix) and end now. The rest of the paid period stays active until `keeps_until`; then what the plan added ends (`account.cancel.losses` in `GET /api/plans` says what). A purchase paid with USDC or with credit from another purchase stays active until its end; ask for its refund by e-mail, as the cancellation page says.

    mcp-tool

    {
      "type": "object",
      "required": [
        "accept_data_removal"
      ],
      "properties": {
        "accept_data_removal": {
          "type": "boolean",
          "const": true,
          "description": "Must be `true`: you accept losing what the plan added."
        }
      }
    }
    arguments 13 lines
  • listing_history reads unknown 27d ago

    Read up to five recorded repository events, newest first. The listing page carries the same available events as `history`; updates may be cached for up to 15 minutes. An empty list means no events are available, not proof that nothing changed or that collection covered the requested period. `generated_at` is the slice generation date, not a per-repository check date; it is empty when no slice was read. Stale means no push for 12 months. Reading does not refresh the source.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Listing ID, from `Anuncio.id`."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • get_bundle unknown 26d ago

    One bundle's card: root index.md URL, version, concept count, provenance and repository signal. `live` and `low` (example or fixture bundles kept out of the search) both answer here.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Bundle id, the `id` of every item in the list."
        }
      }
    }
    arguments 12 lines
  • list_plans unknown never probed

    The plans for sale, with price and term, and the account's active plan. Each purchase lasts 30 days, with no automatic renewal. Each purchase lasts 30 days, with no automatic renewal. Without an account or wallet credential, `account` is `null`.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • buy_plan unknown never probed

    Buy a plan: vaga (1 more tool), equipe (50 more tools and up to 10 private projects), empresa (500 more tools and up to 10 private projects). Each purchase lasts 30 days, with no automatic renewal. Answers 402 with the price; pay with x402 or prepaid credit and repeat. Each purchase lasts 30 days, with no automatic renewal. Without payment, the answer is 402 with the price. Pay with prepaid credit (`X-Credito`) or x402 (`PAYMENT-SIGNATURE` v2 or `X-PAYMENT` v1). Without an account, the verified paying wallet owns the purchase. Use wallet agent authentication to read its plan, or claim it after account sign-in. The `compra` mark prevents repeat credit debits. An x402 nonce can settle only once; keep the receipt after a delivery error.

    mcp-tool

    {
      "type": "object",
      "required": [
        "plan"
      ],
      "properties": {
        "plan": {
          "enum": [
            "vaga",
            "equipe",
            "empresa"
          ],
          "type": "string",
          "description": "`vaga` (1 more tool), `equipe` (50 more tools and up to 10 private projects), `empresa` (500 more tools and up to 10 private projects)"
        }
      }
    }
    arguments 17 lines
  • list_comments reads unknown 27d ago

    Comments on a live listing. With a credential on the call, each comment of yours comes with `mine: true`.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "ID of the listing."
        }
      }
    }
    arguments 12 lines
  • listing_dependencies unknown never probed

    Read a tool's declared package/repository/domain chain and cached public source evidence. No purchase or collection. Repeated registry, repository, registration and DNS lookups, comparison code and an alert process that must keep running after the conversation. A declaration does not prove ownership. Source failures and missing dates remain unknown. Collected PyPI provenance is not independently verified. No measured token or money saving is claimed.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Live catalog listing ID."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • feed_posts reads unknown never probed

    What has this feed published? The posts of one feed as our queue read them — title, date, author, summary, categories and enclosure, without the body. Find the feed first (feed_find or feed_search); this takes an id from this index, never a URL. Up to 40 posts, in the order the feed publishes them, WITHOUT the body — the body of one post comes from `/items/:ord`. It is OUR copy, read on our own schedule — not the live feed and not a proxy: the only thing this endpoint accepts is an id from this index, never a URL. `read_at` says when we read it. Empty list when the feed has not been read yet.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Feed id, prefix fd_."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • watch_dependency_changes unknown never probed

    Follow package, publisher, repository and domain changes of a tool in your watchlist. Uses an existing paid watch pass and never purchases one. The listing must already be in your watchlist. No separate purchase. Sources refresh every six hours through shared caches. Source quotas can defer a check. History records before, after, source and observation date. Domain expiry alerts use 30, 15 and 7 days when the registry publishes a date. Missing dates and source failures remain unverified. Account holders receive operational e-mail; wallet owners read API history. No account-recovery or takeover attempt is made.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id",
        "enabled"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Live catalog listing ID."
        },
        "enabled": {
          "type": "boolean",
          "description": "Explicit requested state."
        }
      }
    }
    arguments 17 lines
  • feed_post reads unknown never probed

    Read one post whole: the body in Markdown (`content`) and the author's formatting as safe HTML (`content_html`), plus the link to the original. `ord` comes from feed_posts; 0 is the newest. Two bodies for the same post, both from the copy we stored when we READ the feed — a request never fetches the site: `content_html` keeps the author's formatting through an allowlist (only known tags and attributes survive; script, style, iframe and event handlers are dropped with their content), and `content` is the same text as Markdown — the shape an agent usually wants. Neither can carry script. 404 when the feed or the position is unknown.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id",
        "ord"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Feed id, prefix fd_."
        },
        "ord": {
          "type": "integer",
          "description": "Position of the post in the feed; 0 is the newest."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 25 lines
  • check_tool unknown 27d ago

    Before installing a remote MCP server, check its address: signals from the address itself (consumer tunnel, no TLS), the catalog listings with that address or host and their security level, and facts about its domain. Never visits the address. Send the endpoint URL. The answer never contacts that address: it reads what our weekly visits measured and what our domain data knows. `address_signals` comes from the address alone (consumer tunnel, `http://` without TLS). `records` lists the catalog listings with this exact address first (`exato: true`), then up to 20 others on the same host, each with its level and signals; `same_host` counts them all. `domain` has the facts about the host's domain. An address outside the catalog answers `no_catalogo: false` and `register`: submit it to get it reviewed. Cached for 5 minutes.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The http(s) endpoint of the MCP server, without credentials."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • listing_security unknown 27d ago

    Read a remote MCP server or SKILL.md review before installing. MCP: server, domain, tools and measured signals. Skill: static findings with file, line, excerpt and context; no command execution or referenced-script review. Unread skills stay unchecked. Read the limits in aviso. Take the id from list_listings. We visit remote MCP servers: `initialize` and `tools/list`, without credentials or tool calls, again 7 days after a success. A failure needs a second check. MCP signals: dns_morto, sem_https, tls_invalido, tunel, nao_responde, nao_mcp, texto_suspeito, redireciona_fora, repo_arquivado, repo_parado, dominio_recente, login, bloqueado. For skills, `tipo: skill` identifies a static SKILL.md review. It flags secret reads, download-and-execute commands, external uploads, invisible characters, long encoded text and broad allowed-tools. `revisao.achados` supplies the path, original line, excerpt and context. Examples and prohibitions do not raise the level. Excerpts hide sensitive values. The review does not run commands or follow references. Supported source: public raw.githubusercontent.com SKILL.md. Watched, visited, starred and new skills get priority within the shared GitHub governor and a daily cap. Unread or unsupported skills remain explicitly unchecked. Local MCP servers and plugins answer `not_remote`. No request fetches a third-party source. Cached for 5 minutes.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Listing ID, from `Anuncio.id`."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • list_watched_tools unknown never probed

    The MCP servers and skills the account watches, with their review level, slots and plans. Daily checks cover MCP tools, state, level, country and version. Supported skills cover changes in SKILL.md text and review signals. Source quotas can delay a check; read proxima_em and verificado_em. The e-mail goes to the verified account address and includes an unsubscribe link. Wallet-only owners read the changes in `GET /api/me/vigia/avisos`.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • watch_tool unknown never probed

    Watch a remote MCP or supported SKILL.md. Daily schedule, subject to source quota; account e-mail for changes. Skills cover text and review signals, not execution. 3 free slots per owner; 402 for more. Unsupported sources are rejected before payment. We collect and compare the supported sources daily. Your agent reads the changes without maintaining its own watch process. Catalog signals and change notices are not a security audit or proof that remote code is safe. Local hooks do not freeze remote MCP code.

    mcp-tool

    {
      "type": "object",
      "required": [
        "listing_id"
      ],
      "properties": {
        "listing_id": {
          "type": "string",
          "description": "Listing ID (`mcp_…` or `skl_…`) from `/api/listings`."
        }
      }
    }
    arguments 12 lines
  • unwatch_tool unknown never probed

    Stop watching a server; its slot becomes free.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Listing ID (`mcp_…` or `skl_…`)."
        }
      }
    }
    arguments 12 lines
  • watch_alerts unknown never probed

    The changes in the watched tools, oldest first, 100 per page. Pass the cursor of the last call in `depois` to get only what is new. The same changes the account e-mail reports, while each tool was watched. Without `depois`, the last 30 days. Up to 100 per page: repeat with `depois` set to the `cursor` of the last response while `mais` is `true`. With nothing new, the answer keeps the same cursor, so poll with the last one. `email: true` means the account also gets these changes by e-mail.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "depois": {
          "type": "string",
          "description": "The `cursor` of the last response. Leave it out to read the last 30 days."
        }
      }
    }
    arguments 9 lines
  • a2a_agent reads unknown 27d ago

    Read one A2A agent: every skill its card declares, capabilities, protocol version, health, documentation and the registries that list it, with their licenses. Take the key from a2a_agent_search. The same row as the list plus what the card declares: every skill, the `capabilities` object, the protocol version as written, the documentation and icon URLs, and when we first saw it. Cached for 60 seconds; a MAT catalog read, like the list.

    mcp-tool

    {
      "type": "object",
      "required": [
        "chave"
      ],
      "properties": {
        "chave": {
          "type": "string",
          "description": "Agent key (`key`) from a2a_agent_search, usually the card's domain."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • create_guest changes data unknown never probed

    Creates a guest mr_… Asks for no e-mail. Publishing a listing is what requires an account (or a payment). At most 20 new guests per network per hour; a browser that already has one gets it back from the `mr_guest` cookie.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • get_listing_seals unknown never probed

    Verification seals of a listing: code, DNS, IP, TLS and domain, each checked daily against the reference the publisher approved. Public seal status for a listing. The owner also sees the proof, the approved and current readings, the selected seals and the available cancellation details.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "MCP listing ID from `/api/listings`, with the `mcp_` prefix."
        }
      }
    }
    arguments 12 lines
  • get_listing reads unknown 27d ago

    One listing's page. The owner sees their own even when pending or hidden.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Listing ID, from `Anuncio.id`."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • get_listing_readme reads unknown 27d ago

    Collected project documentation. Available when get_listing includes readme_api; 404 when no copy was stored. The text lives in R2 (`mural-coleta`). This call does not write and does not fetch GitHub. Same visibility as the listing page. Call it only when the listing page carries `readme_api`: a page without it has no README collected, and this route answers 404.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Listing ID, from `Anuncio.id`."
        },
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        },
        "retry_key": {
          "type": "string",
          "description": "Optional retry key, up to 80 ASCII characters; same read for five minutes."
        }
      }
    }
    arguments 20 lines
  • listing_updates unknown never probed

    Refresh up to 100 selected listings in one batch instead of opening each listing. The catalog stores the values seen at the last real change of a listing; counters and package versions change over time. After a search, use this batch or MCP listing_updates before comparing versions. These values may be cached for up to 15 minutes; `generated_at` is the slice generation date, not a check date for each record. Listings without a record are unknown and simply absent. `GET /api/listings/:id` already applies these values on top of the record.

    mcp-tool

    {
      "type": "object",
      "required": [
        "ids"
      ],
      "properties": {
        "ids": {
          "type": "string",
          "description": "Comma-separated listing IDs, at most 100."
        }
      }
    }
    arguments 12 lines
  • go_listing changes data unknown 27d ago

    302 hop to the listing's origin (counts a visit). Counts at most 1 visit per owner per day. The `X-Visit-Counted` header says whether this call counted — it is how the client knows without counting twice. A remote MCP server goes to its repository; without one, to the listing page `/l/:id`, which shows the endpoint to copy, and no visit counts.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "ID of the listing to visit."
        }
      }
    }
    arguments 12 lines
  • like_listing changes data unknown never probed

    Likes the listing; DELETE undoes it. Calling again does not add up: the counter counts people.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id",
        "guest_token"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "ID of the listing to like."
        },
        "guest_token": {
          "type": "string",
          "description": "Private owner token returned by guest creation. Sent in X-Guest-Token; reuse it for this owner's resources."
        }
      }
    }
    arguments 17 lines
  • create_listing changes data unknown never probed

    Submit an MCP server, skill or plugin for review. Free with an account; US$ 0.10 without one. Limit: one submission a day and three in the queue per owner. Automatic review approves supported low-risk MCP listings; uncertain cases wait for a person. Poll `status_api` (`GET /api/listings/:id/status`, no credential) to learn the decision. A person or agent can submit without an account for US$ 0.10, paid through x402 or prepaid credit; with an account, it is free. Each owner can submit once a day and keep up to three submissions in the queue. For a skill, provide its SKILL.md URL. The service checks the body and quota before charging. An invalid body returns 400; an exhausted quota returns 429.

    mcp-tool

    {
      "type": "object",
      "required": [
        "kind",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "MCP endpoint, SKILL.md URL, the plugin's repository or the OKF bundle's `index.md`. For an OKF bundle on a domain you control, `POST /api/okf/ping` is free."
        },
        "body": {
          "type": "string",
          "description": "Long description, optional."
        },
        "kind": {
          "enum": [
            "mcp",
            "skill",
            "plugin",
            "okf"
          ],
          "type": "string",
          "description": "What is being registered."
        },
        "name": {
          "type": "string",
          "description": "Display name; without it, taken from the source."
        },
        "tagline": {
          "type": "string",
          "description": "One line saying what it is for."
        },
        "category": {
          "type": "string",
          "description": "Category so the listing shows up under the right filter."
        }
      }
    }
    arguments 39 lines
  • api_access reads unknown never probed

    Monthly data package and private purchase status, without charging. MAT-only balance; pass prefix mat_. Catalog discovery and ordinary browsing are free. GPTBot, ClaudeBot, CCBot, Meta-ExternalAgent, Amazonbot, AhrefsBot and MJ12bot share a daily allowance of 1,000 reads per crawler family; over it the answer is 402 with the MAT reads package: US$ 1 for 1,000 reads for 30 days, with no automatic renewal. Buy it at POST /api/acesso and send its pass in X-API-Pass. The MAT allowance is separate from the company, address and procurement indexes.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        }
      },
      "additionalProperties": false
    }
    arguments 10 lines
  • api_usage reads unknown never probed

    Remaining MAT read credits, without consuming credit.

    mcp-tool

    {
      "type": "object",
      "required": [
        "api_pass"
      ],
      "properties": {
        "api_pass": {
          "type": "string",
          "description": "MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • get_api_x402_check unknown never probed

    Checks an MCP server address for an agent, paid per call: what we measured, the catalog listings and the domain facts. The answer of `GET /api/check`, sold per call to agents, with no account and no allowance before. A request without payment gets the 402 with the price; a paid one gets the check in the same response, with the payment in `cobranca`. The check never visits the address. When the check is unavailable, the answer is 503 and nothing is charged.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The http(s) endpoint of the MCP server, without credentials."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • pricing reads unknown never probed

    x402 configuration in force and the agent prices for contact and publishing.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
_ try it over mcp through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id adf8c005b8c11e98.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/adf8c005b8c11e98/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/adf8c005b8c11e98/badge.svg)](https://brick.blue/agent/adf8c005b8c11e98?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we knowoff the mcp door
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.