Skip to content

Agentalog — Agent Auto Log

by agentalog.com · remote · no sign-in to list tools · v1.0.2 · published by com.agentalog

Agent Auto Log: MCP servers, skills and plugins, with an automatic log of every change.

Deletes · 1Changes · 20

35 tools: 1 can delete or cancel things, 20 change things and 14 only read.

Scanned Oct 21, 2026

9 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http meta-agent-tools https://agentalog.com/mcp

Findings

Matches of fixed checks, with the text they matched.

4 warn5 info
  • The server marks "feed_posts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "feed_posts" says "post": a word for a change.

    What this check looks for
  • The server marks "feed_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "feed_post" says "post": a word for a change.

    What this check looks for
  • The server marks "briefings_links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "briefings_links" says "link": a word for a change.

    What this check looks for
  • The server marks "list_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "list_comments" says "list": a word for reading.

    What this check looks for
  • The input schema at properties.url.description mentions "credentials".

    Matched text

    inputSchema.properties.url.description: "...(s) endpoint of the MCP server, without credentials."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...`initialize` and `tools/list`, without credentials or tool calls, again 7 days after a suc..."

    What this check looks for
Show 3 more findings

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

35 tools

Deletes or cancels 1Claude Code: deny
  • unwatch_toolStop watching a server; its slot becomes free.No findings

    Why it is in this group

    • The description's first verb is "stop": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Stop watching a server; its slot becomes free.

    Annotations the server declares

    • title: Unwatch tool
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
Changes things 20Claude Code: ask
  • api_indexSelf-describing index: the whole API surface, with quota and quickstart.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Self-describing index: the whole API surface, with quota and quickstart.

    Annotations the server declares

    • title: API index
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • briefings_topicsWhich engineering topics have curated briefings, how many links each has and the newest links across all of them.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Briefings topics
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • check_toolBefore 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 securi…1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The input schema at properties.url.description mentions "credentials".

      Matched text

      inputSchema.properties.url.description: "...(s) endpoint of the MCP server, without credentials."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Check tool
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • claude_code_allowlistThe watch list as Claude Code managed settings (allowedMcpServers, deniedMcpServers) and claude mcp add commands.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Claude Code allowlist
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • contactWrite to the people behind the product: a question, or a sponsorship/partnership/advertising proposal.No findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    Description, as the server wrote it
    Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. One route for a question and for a sponsorship, partnership or ad proposal (`type`, with the placements of `GET /api/partners`). 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.

    Annotations the server declares

    • title: Contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • create_guestCreates a guest mr_… Asks for no e-mail.No findings

    Why it is in this group

    • The name "create_guest" says "create": a word for a change.
    Description, as the server wrote it
    Creates a guest mr_… Asks for no e-mail. At most 20 new guests per network per hour; a browser that already has one gets it back from the `mr_guest` cookie.

    Annotations the server declares

    • title: Create guest
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • create_listingSubmit an MCP server, skill or plugin for review.1 finding

    Why it is in this group

    • The name "create_listing" says "create": a word for a change.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...pi` (`GET /api/listings/:id/status`, no credential) to learn the decision. A person or age..."

      What this check looks for
    Description, as the server wrote it
    Submit an MCP server, skill or plugin for review. 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. Each owner can submit once a day and keep up to three submissions in the queue. For a skill, provide its SKILL.md URL. An invalid body returns 400; an exhausted quota returns 429.

    Annotations the server declares

    • title: Create listing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • feed_postRead one post whole: the body in Markdown (`content`) and the author's formatting as safe HTML (`content_html`), plus the link to the original.1 finding

    Why it is in this group

    • The name "feed_post" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "feed_post" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "feed_post" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Feed post
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • feed_postsWhat has this feed published?1 finding

    Why it is in this group

    • The name "feed_posts" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "feed_posts" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "feed_posts" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Feed posts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • go_listing302 hop to the listing's origin (counts a visit).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Go listing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • healthLiveness and the commit deployed right now — it is how the smoke waits for its own deploy.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Liveness and the commit deployed right now — it is how the smoke waits for its own deploy.

    Annotations the server declares

    • title: Health
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • index_statsSize of the index by provenance and when it last changed.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Size of the index by provenance and when it last changed.

    Annotations the server declares

    • title: Index stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • like_listingLikes the listing; DELETE undoes it.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Likes the listing; DELETE undoes it. Calling again does not add up: the counter counts people.

    Annotations the server declares

    • title: Like listing
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • list_commentsComments on a live listing.2 findings

    Why it is in this group

    • The name "list_comments" says "list": a word for reading.
    • The description's first verb is "comment": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "Comments on a live listing. With a credential on the call, each comment of yours come..."

      What this check looks for
    • Warn

      The server marks "list_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "list_comments" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Comments on a live listing. With a credential on the call, each comment of yours comes with `mine: true`.

    Annotations the server declares

    • title: List comments
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • listing_historyTimeline of the listing's repository: last events (abandono = no push for 12 months, sumiu, renomeado, readme_mudou, manifesto_mudou), newest first; empty when nothing changed sinc…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Timeline of the listing's repository: last events (abandono = no push for 12 months, sumiu, renomeado, readme_mudou, manifesto_mudou), newest first; empty when nothing changed since the series began. The listing page carries the same list as `history`; updates may be cached for up to 15 minutes. An empty list means no change since the series began — the listing still exists. Stale means no push for 12 months. Reading this endpoint does not refresh the record.

    Annotations the server declares

    • title: Listing history
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • listing_toolsThe tools and instructions a remote MCP server announced at its last check, with what they mention doing and any suspicious text.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Listing tools
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • mcp_index_signalsDoes this MCP server still answer, with which access, and is its repository alive?No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: MCP index signals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • submit_okfSubmits OKF bundles from a host you control (IndexNow protocol: a key file proves ownership, with no account).No findings

    Why it is in this group

    • The name "submit_okf" says "submit": a word for a change.
    Description, as the server wrote it
    Submits OKF bundles from a host you control (IndexNow protocol: a key file proves ownership, with no account). Answers 202 — the key is checked by the collector before anything is read. 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.

    Annotations the server declares

    • title: Submit OKF
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • watch_toolWatch a remote MCP or supported SKILL.md.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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. Choose a live remote MCP or a skill with a supported public raw.githubusercontent.com SKILL.md, after skill collection is enabled. Watching again is a no-op (`already_watched`). Slots last 30 days with no automatic renewal. Skills do not enter the Claude Code MCP allowlist.

    Annotations the server declares

    • title: Watch tool
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
Only reads 14Claude Code: allow
  • a2a_agentRead one A2A agent: every skill its card declares, capabilities, protocol version, health, documentation and the registries that list it, with their licenses.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: A2a agent
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • feed_findDoes this site publish a feed?No findings

    Why it is in this group

    • The name "feed_find" says "find": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Feed find
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • get_bundleOne bundle's card: root index.md URL, version, concept count, provenance and repository signal.No findings

    Why it is in this group

    • The name "get_bundle" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get bundle
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • get_listingOne listing's page.No findings

    Why it is in this group

    • The name "get_listing" says "get": a word for reading.
    Description, as the server wrote it
    One listing's page. The owner sees their own even when pending or hidden.

    Annotations the server declares

    • title: Get listing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • get_listing_readmeCollected project documentation.No findings

    Why it is in this group

    • The name "get_listing_readme" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get listing readme
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • list_listingsPublic mosaic of live MCP servers, skills, plugins and OKF knowledge bundles.No findings

    Why it is in this group

    • The name "list_listings" says "list": a word for reading.
    Description, as the server wrote it
    Public mosaic of live MCP servers, skills, plugins and OKF knowledge bundles. `live` listings first 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`.

    Annotations the server declares

    • title: List listings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • list_mcp_serversMCP subregistry (GET /v0.1/servers).No findings

    Why it is in this group

    • The name "list_mcp_servers" says "list": a word for reading.
    Description, as the server wrote it
    MCP subregistry (GET /v0.1/servers). Only live kind=mcp. Only `kind=mcp` and only `live`. It is the route a generic MCP client knows how to read 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.

    Annotations the server declares

    • title: List MCP servers
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • list_watched_toolsThe MCP servers and skills the account watches, with their review level, slots and plans.No findings

    Why it is in this group

    • The name "list_watched_tools" says "list": a word for reading.
    Description, as the server wrote it
    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 follow changes through the API.

    Annotations the server declares

    • title: List watched tools
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • listing_securityRead a remote MCP server or SKILL.md review before installing.1 finding

    Why it is in this group

    • The description's first verb is "read": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...`initialize` and `tools/list`, without credentials or tool calls, again 7 days after a suc..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Listing security
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • listing_statusModeration state of a listing (pending / live / low / hidden / blocked) — poll it after create_listing.1 finding

    Why it is in this group

    • The name "listing_status" says "status": a word for reading.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...ked) — poll it after create_listing. No credential; only the decision comes back. Every su..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Listing status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
  • search_bundlesSearch 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 co…No findings

    Why it is in this group

    • The name "search_bundles" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search bundles
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.2. Values in angle brackets are yours to fill in.

claude mcp add --transport http meta-agent-tools https://agentalog.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__meta-agent-tools__search_bundles",
      "mcp__meta-agent-tools__get_bundle",
      "mcp__meta-agent-tools__feed_find",
      "mcp__meta-agent-tools__feed_search",
      "mcp__meta-agent-tools__mcp_index_search",
      "mcp__meta-agent-tools__listing_security",
      "mcp__meta-agent-tools__list_watched_tools",
      "mcp__meta-agent-tools__a2a_agent_search",
      "mcp__meta-agent-tools__a2a_agent",
      "mcp__meta-agent-tools__list_listings",
      "mcp__meta-agent-tools__list_mcp_servers",
      "mcp__meta-agent-tools__get_listing",
      "mcp__meta-agent-tools__get_listing_readme",
      "mcp__meta-agent-tools__listing_status"
    ],
    "ask": [
      "mcp__meta-agent-tools__index_stats",
      "mcp__meta-agent-tools__feed_posts",
      "mcp__meta-agent-tools__feed_post",
      "mcp__meta-agent-tools__mcp_index_signals",
      "mcp__meta-agent-tools__check_tool",
      "mcp__meta-agent-tools__listing_tools",
      "mcp__meta-agent-tools__watch_tool",
      "mcp__meta-agent-tools__claude_code_allowlist",
      "mcp__meta-agent-tools__briefings_topics",
      "mcp__meta-agent-tools__briefings_links",
      "mcp__meta-agent-tools__api_index",
      "mcp__meta-agent-tools__health",
      "mcp__meta-agent-tools__create_guest",
      "mcp__meta-agent-tools__listing_history",
      "mcp__meta-agent-tools__go_listing",
      "mcp__meta-agent-tools__like_listing",
      "mcp__meta-agent-tools__list_comments",
      "mcp__meta-agent-tools__create_listing",
      "mcp__meta-agent-tools__submit_okf",
      "mcp__meta-agent-tools__contact"
    ],
    "deny": [
      "mcp__meta-agent-tools__unwatch_tool"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as meta-agent-tools. Review it before you use it.