{
  "data": {
    "tool": {
      "category": "guardrails",
      "endpoint": "https://overwing.ai/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/overwing-mcp.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/overwing-mcp.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/overwing-mcp.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 6650,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 12
          },
          "findings": [
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "atlas_agents",
              "message": "2 parameters without a description: limit, operator",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "atlas_register_agent",
              "message": "3 parameters without a description: description, follows_robots_txt, purpose",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "create_rule_set",
              "message": "none of its 4 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "evaluate_batch",
              "message": "none of its 4 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "get_evaluation",
              "message": "its one parameter, id, has no description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "get_rule_set",
              "message": "its one parameter, slug, has no description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "get_usage",
              "message": "its one parameter, days, has no description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "list_evaluations",
              "message": "none of its 4 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "list_rule_sets",
              "message": "its one parameter, include_inactive, has no description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "tower_decide",
              "message": "1 parameter without a description: operation",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "tower_submit_action",
              "message": "2 parameters without a description: dry_run, operation",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "tower_verify_receipts",
              "message": "none of its 2 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "34 of 34 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:20:29Z",
        "count": 34,
        "schemaTokens": 6650,
        "status": "ok",
        "tools": [
          {
            "name": "evaluate",
            "title": "Evaluate text",
            "description": "Works with no API key: 10 evaluations a day, inputs up to 2,000 characters, and the text is not stored. With a key: 250 a day and up, inputs up to 100,000 characters, and your own rule sets. Score any text (typically an LLM's output) against an Overwing rule set. The text can be in any language; tested in Spanish, Portuguese, French, German, Japanese, Chinese, Korean, Arabic and Hindi. Results come back in English. Returns an aggregate verdict of pass, fail, or review, a recommended_action (block, redact, review, or allow), and per-rule answers with probability, confidence, and the rule's action. Act on recommended_action: block means do not send, redact means remove the flagged content and resend, review means ask a human or a slower model, allow means proceed. Prebuilt sets: 'content-safety' (toxicity, PII, self-harm, sexual content, severity) and 'outbound-message', which also takes a context object (recipient, channel, owns_contact_info) so PII that the recipient already owns is not flagged.",
            "inputSchema": {
              "properties": {
                "context": {
                  "additionalProperties": {},
                  "description": "Facts the rules may reference: recipient, channel, whether you own the data, sender, purpose. Sent to the model alongside the text (max 8 KB). Use the 'outbound-message' rule set to have it honoured.",
                  "type": "object"
                },
                "input": {
                  "description": "The text to evaluate, in any language",
                  "maxLength": 100000,
                  "minLength": 1,
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {},
                  "description": "Opaque data stored with the evaluation and echoed in webhooks (max 8 KB)",
                  "type": "object"
                },
                "rule_set": {
                  "default": "content-safety",
                  "description": "Rule set slug",
                  "type": "string"
                },
                "store": {
                  "description": "With a key: false runs the check without keeping the input text or the context (the verdict and metadata are still recorded). Without a key the text is never stored.",
                  "type": "boolean"
                }
              },
              "required": [
                "input"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": false,
              "title": "Evaluate text"
            }
          },
          {
            "name": "evaluate_batch",
            "title": "Evaluate many texts",
            "description": "Score up to 50 texts against one rule set in a single call. Each item counts as one evaluation. Returns a summary plus per-item verdicts; items can fail independently. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "context": {
                  "additionalProperties": {},
                  "description": "Facts the rules may reference: recipient, channel, whether you own the data, sender, purpose. Sent to the model alongside the text (max 8 KB). Use the 'outbound-message' rule set to have it honoured.",
                  "type": "object"
                },
                "items": {
                  "items": {
                    "properties": {
                      "context": {
                        "additionalProperties": {},
                        "description": "Per-item context; overrides the batch-level context",
                        "type": "object"
                      },
                      "id": {
                        "maxLength": 128,
                        "type": "string"
                      },
                      "input": {
                        "maxLength": 100000,
                        "minLength": 1,
                        "type": "string"
                      },
                      "metadata": {
                        "additionalProperties": {},
                        "type": "object"
                      }
                    },
                    "required": [
                      "input"
                    ],
                    "type": "object"
                  },
                  "maxItems": 50,
                  "minItems": 1,
                  "type": "array"
                },
                "rule_set": {
                  "default": "content-safety",
                  "type": "string"
                },
                "store": {
                  "description": "False runs every item without keeping its input text or context",
                  "type": "boolean"
                }
              },
              "required": [
                "items"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": false,
              "title": "Evaluate many texts"
            }
          },
          {
            "name": "list_rule_sets",
            "title": "List rule sets",
            "description": "List the prebuilt and custom rule sets available to this organization. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "include_inactive": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List rule sets"
            }
          },
          {
            "name": "get_rule_set",
            "title": "Get rule set",
            "description": "Fetch a rule set with its full rule definitions. Use 'content-safety' as a worked example when writing your own. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "slug": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "slug"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get rule set"
            }
          },
          {
            "name": "create_rule_set",
            "title": "Create rule set",
            "description": "Create a custom rule set with 1 to 25 rules. Each rule is a choice (pick one option), score (position on an ordered scale), or noul (yes/no) question with a fail condition, optional review threshold, weight, and action (block, redact, or review) that callers should take when it fails. Rule instructions may reference `context.*` fields that callers pass with each evaluation. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "description": {
                  "type": "string"
                },
                "name": {
                  "maxLength": 100,
                  "type": "string"
                },
                "rules": {
                  "items": {
                    "properties": {
                      "action": {
                        "description": "What a caller should do when this rule fails: block (default), redact, or review",
                        "enum": [
                          "block",
                          "redact",
                          "review"
                        ],
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "fail_condition": {
                        "additionalProperties": {},
                        "description": "choice: {failOn: [options]}; noul: {failOn: boolean}; score: {failAbove: levelIndex}",
                        "type": "object"
                      },
                      "name": {
                        "maxLength": 100,
                        "type": "string"
                      },
                      "question_config": {
                        "additionalProperties": {},
                        "description": "choice: {options[], instructions}; score: {levels[], instructions}; noul: {question}",
                        "type": "object"
                      },
                      "question_type": {
                        "enum": [
                          "choice",
                          "score",
                          "noul"
                        ],
                        "type": "string"
                      },
                      "review_condition": {
                        "properties": {
                          "confidenceBelow": {
                            "exclusiveMinimum": 0,
                            "maximum": 1,
                            "type": "number"
                          }
                        },
                        "required": [
                          "confidenceBelow"
                        ],
                        "type": "object"
                      },
                      "weight": {
                        "exclusiveMinimum": 0,
                        "maximum": 100,
                        "type": "number"
                      }
                    },
                    "required": [
                      "name",
                      "question_type",
                      "question_config",
                      "fail_condition"
                    ],
                    "type": "object"
                  },
                  "maxItems": 25,
                  "minItems": 1,
                  "type": "array"
                },
                "slug": {
                  "maxLength": 100,
                  "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "slug",
                "rules"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": false,
              "title": "Create rule set"
            }
          },
          {
            "name": "get_evaluation",
            "title": "Get evaluation",
            "description": "Fetch a stored evaluation by id, including the original input and per-rule results. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "id": {
                  "maxLength": 128,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get evaluation"
            }
          },
          {
            "name": "list_evaluations",
            "title": "List evaluations",
            "description": "List recent evaluations, newest first, with optional verdict and rule set filters. Use next_cursor to page. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "cursor": {
                  "type": "string"
                },
                "limit": {
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "rule_set": {
                  "type": "string"
                },
                "verdict": {
                  "enum": [
                    "pass",
                    "fail",
                    "review"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List evaluations"
            }
          },
          {
            "name": "get_usage",
            "title": "Get usage",
            "description": "Daily usage, remaining quota for today, and plan limits. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "days": {
                  "maximum": 90,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get usage"
            }
          },
          {
            "name": "whoami",
            "title": "Who am I",
            "description": "Identify the organization and plan behind the API key on this request, the key's scope, the organization's data settings (store_inputs, retention_days), and whether billing is set up. Needs an organization key.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Who am I"
            }
          },
          {
            "name": "create_account",
            "title": "Create your own account (no email)",
            "description": "Create an Overwing account for yourself, with no email: an organization and an API key, returned once. Nothing is sent to anyone. Use it when you have no key and nobody has given you one; do not create a second account if you already have a key (whoami says which account a key belongs to). The key is the account, so store it at once: with no email there is no reset link. It starts at 50 evaluations a day with Beacon summaries; proving a domain (prove_domain, verify_domain) raises that to the normal free limits and full Beacon reports, and makes a lost key recoverable. This server does not keep the key: send it as Authorization: Bearer on the MCP connection for the tools that need one. Tell the person you work for that you made the account and where the key is kept. No key needed.",
            "inputSchema": {
              "properties": {
                "org_name": {
                  "description": "A name for the account, e.g. the agent's name",
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "use_for_session": {
                  "description": "Ignored here. The hosted server has no session and never holds a key; it exists so calls written for the npm package still validate.",
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": false,
              "title": "Create your own account (no email)"
            }
          },
          {
            "name": "prove_domain",
            "title": "Prove a domain for your account",
            "description": "Begin proving that your account controls a domain. For an account with no email the domain stands in for one: it raises the limits to the normal free tier, opens full Beacon reports, and lets a lost key be replaced. Returns one value to publish at the domain, as a DNS TXT record or as a file under /.well-known; then call verify_domain. One domain belongs to one account. Calling again for the same domain returns the same value. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "domain": {
                  "description": "A domain you or your operator controls, e.g. acme.com",
                  "maxLength": 255,
                  "minLength": 4,
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            },
            "annotations": {
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Prove a domain for your account"
            }
          },
          {
            "name": "verify_domain",
            "title": "Verify the domain proof",
            "description": "Look for the value prove_domain asked for, at the domain. Found: the domain is the account's. Not found: an error saying what was looked for; DNS changes can take a few minutes, and calling again is safe. Needs an organization key.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Verify the domain proof"
            }
          },
          {
            "name": "list_plans",
            "title": "List plans",
            "description": "Public plan catalog: prices, daily limits, and per-minute burst limits. No API key needed.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List plans"
            }
          },
          {
            "name": "atlas_lookup",
            "title": "Identify a user agent (Overwing Atlas)",
            "description": "Say what a User-Agent string claims to be and whether the claim can be trusted, from the Overwing Atlas registry of AI crawlers, fetchers and browser agents. Returns the claimed agent, operator, purpose class, verification method (Web Bot Auth signature, user-agent string only, or unattributable) and a trust note. Works with no API key: 10 lookups a day. With a key, metered per day by Atlas tier: free 100, Pro 10,000, Team 100,000. Use it when deciding whether to serve, block, or pay-gate a request, or to understand who is hitting a site.",
            "inputSchema": {
              "properties": {
                "user_agent": {
                  "description": "The User-Agent header value to identify",
                  "maxLength": 2000,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "user_agent"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Identify a user agent (Overwing Atlas)"
            }
          },
          {
            "name": "atlas_agents",
            "title": "Search the agent registry (Overwing Atlas)",
            "description": "Browse or search Overwing Atlas, the registry of AI crawlers, fetchers and browser agents: name, operator, user-agent tokens, Web Bot Auth key directory, robots.txt behaviour, and (with Atlas Pro or Team) purpose class, verification, evasion flags and traffic shares. Filter by free text, purpose (training, search, browser, coding), operator, or verification. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "default": 20,
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "operator": {
                  "maxLength": 100,
                  "type": "string"
                },
                "purpose": {
                  "description": "Purpose substring, e.g. training, search, browser, fetcher, coding",
                  "maxLength": 60,
                  "type": "string"
                },
                "q": {
                  "description": "Free text over name, operator, user agents, description",
                  "maxLength": 200,
                  "type": "string"
                },
                "verification": {
                  "description": "e.g. 'Web Bot Auth', 'spoofable', 'Unattributable'",
                  "maxLength": 60,
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Search the agent registry (Overwing Atlas)"
            }
          },
          {
            "name": "atlas_register_agent",
            "title": "Register your agent (Overwing Atlas)",
            "description": "Add an agent or crawler you operate to the Overwing Atlas registry, free, so a site that looks up its User-Agent learns who runs it. Give the agent's name, the operator (the company or person running it), the operator's domain, and the token the User-Agent carries (the product name, such as AcmeBot). The answer carries one value to publish at that domain, as a DNS TXT record or as a file under /.well-known, to prove control of it; then call atlas_verify_registration. A token may not match, contain, or sit inside one already in the registry. This proves control of the domain, not that any given request is yours: the entry is listed as user-agent only unless key_directory_url is a Web Bot Auth key directory on that domain. Only register agents you or your operator actually run. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "description": {
                  "maxLength": 600,
                  "type": "string"
                },
                "domain": {
                  "description": "The operator's domain, e.g. acme.com. Control of it must be proved",
                  "maxLength": 255,
                  "minLength": 4,
                  "type": "string"
                },
                "follows_robots_txt": {
                  "type": "boolean"
                },
                "key_directory_url": {
                  "description": "A Web Bot Auth key directory on the operator's domain",
                  "maxLength": 500,
                  "type": "string"
                },
                "name": {
                  "description": "The agent's name, e.g. AcmeBot",
                  "maxLength": 80,
                  "minLength": 3,
                  "type": "string"
                },
                "operator": {
                  "description": "The company or person that runs the agent",
                  "maxLength": 120,
                  "minLength": 2,
                  "type": "string"
                },
                "policy_url": {
                  "description": "An https page describing the agent",
                  "maxLength": 500,
                  "type": "string"
                },
                "purpose": {
                  "default": "other",
                  "enum": [
                    "training_crawl",
                    "search_index",
                    "user_fetch",
                    "browser_agent",
                    "coding_agent",
                    "api_agent",
                    "other"
                  ],
                  "type": "string"
                },
                "tokens": {
                  "description": "The product name the User-Agent carries, e.g. [\"AcmeBot\"]",
                  "items": {
                    "maxLength": 60,
                    "minLength": 5,
                    "type": "string"
                  },
                  "maxItems": 3,
                  "minItems": 1,
                  "type": "array"
                },
                "user_agent": {
                  "description": "The full User-Agent string the agent sends; it must contain a token",
                  "maxLength": 500,
                  "type": "string"
                }
              },
              "required": [
                "name",
                "operator",
                "domain",
                "tokens"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": false,
              "title": "Register your agent (Overwing Atlas)"
            }
          },
          {
            "name": "atlas_verify_registration",
            "title": "Verify and publish a registration (Overwing Atlas)",
            "description": "Look for the proof at the operator's domain: the DNS TXT record or the file that atlas_register_agent asked for. Found: the entry is published in the registry, or held for a person when the operator name already belongs to someone. Not found: an error saying what was looked for; DNS changes can take a few minutes, and calling again is safe. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "id": {
                  "description": "The registration id from atlas_register_agent",
                  "pattern": "^areg_[A-Za-z0-9_-]{16}$",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "annotations": {
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Verify and publish a registration (Overwing Atlas)"
            }
          },
          {
            "name": "atlas_list_registrations",
            "title": "List your registered agents (Overwing Atlas)",
            "description": "The agents this organization has registered in Overwing Atlas, newest first, each with its status (pending_verification, pending_review, published, rejected) and, while unverified, the value to publish at the domain. Needs an organization key.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List your registered agents (Overwing Atlas)"
            }
          },
          {
            "name": "atlas_withdraw_registration",
            "title": "Withdraw a registration (Overwing Atlas)",
            "description": "Withdraw a registration. A published entry leaves the registry, so lookups stop naming the agent; an unfinished request is abandoned. This cannot be undone: register again to put it back. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "id": {
                  "description": "The registration id from atlas_register_agent",
                  "pattern": "^areg_[A-Za-z0-9_-]{16}$",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Withdraw a registration (Overwing Atlas)"
            }
          },
          {
            "name": "atlas_summary",
            "title": "Agent traffic and spending summary (Overwing Atlas)",
            "description": "Public numbers from Overwing Atlas: registry counts by purpose and verification, published browser-agent traffic shares, sector field-scan headlines (e.g. how many OSINT sites carry AI-crawler rules or any agent-payable surface), and the summary of the Agent Consumers report on what agents actually spend. No key needed.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Agent traffic and spending summary (Overwing Atlas)"
            }
          },
          {
            "name": "beacon_start",
            "title": "Start a reachability check (Overwing Beacon)",
            "description": "Overwing Beacon answers one question about a site: is this product reachable by agents? It checks robots.txt rules for AI agents, llms.txt, the sitemap, the MCP server card, hosted MCP endpoint and MCP Registry listing, the A2A agent card, OpenAPI discovery, and how the home page reads to a model, then returns three answers (find, read, use), a score and the fixes worth making. This tool starts a check and returns its id; it is free. Then call beacon_report with the id, which runs the check (about twenty seconds). With an Overwing key on the connection beacon_report returns the full report and the check is saved to that dashboard; with no key it returns the summary: the score, the three answers and the first fix. A key is free (POST /api/v1/signup). An agent with a wallet and no account can instead pay $1 in USDC over x402 and get the full report in one call: GET /api/x402/beacon?url=\u003csite\u003e. Call beacon_sample to see a real report in full. No key needed.",
            "inputSchema": {
              "properties": {
                "url": {
                  "description": "The site to check: a domain (example.com) or an https URL. Public sites only.",
                  "maxLength": 500,
                  "minLength": 3,
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": false,
              "title": "Start a reachability check (Overwing Beacon)"
            }
          },
          {
            "name": "beacon_report",
            "title": "Read a reachability report (Overwing Beacon)",
            "description": "The report for a check started with beacon_start. The first call runs the check. With an Overwing key on the connection: score (0 to 100), verdict (yes, partly, no), the find / read / use answers, every check with what was found and a fix when it did not pass, and top_fixes ranked by value. With no key, the summary of the same report: score, verdict, the three answers and the first fix (access=summary). Answers 202 while the check is running (ask again in a few seconds). No key needed for the summary.",
            "inputSchema": {
              "properties": {
                "id": {
                  "description": "The check id from beacon_start",
                  "pattern": "^bcn_[A-Za-z0-9_-]{16}$",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Read a reachability report (Overwing Beacon)"
            }
          },
          {
            "name": "beacon_sample",
            "title": "Sample reachability report (Overwing Beacon)",
            "description": "A real Overwing Beacon report, free: the check of overwing.ai itself, refreshed daily. Read it to see exactly what a full report holds before starting a check. No key needed.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Sample reachability report (Overwing Beacon)"
            }
          },
          {
            "name": "tower_load_template",
            "title": "Load the starter workflow (Overwing Tower)",
            "description": "Set up Overwing Tower for this organization by loading the starter workflow: email purchase order to order entry, with create_order, update_order and cancel_order against a mock IBM i system, and a starter policy. Idempotent. Needs an organization key. Returns a sample input you can submit. Next: tower_create_agent.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Load the starter workflow (Overwing Tower)"
            }
          },
          {
            "name": "tower_create_agent",
            "title": "Create an agent identity (Overwing Tower)",
            "description": "Create a scoped agent identity and its key. Needs an organization key. Scope it to the operations the agent needs (for example create_order) rather than * where you can. The key (ow_agent_...) is returned once, in this result, and this server does not keep it: store it, and send it as the Authorization bearer on a connection used for the agent tools (tower_capabilities, tower_decide, tower_submit_action, tower_get_action, tower_compensate, tower_get_receipt, tower_verify_receipts). Revoke with tower_revoke_agent.",
            "inputSchema": {
              "properties": {
                "name": {
                  "description": "A name a person will recognise in the review queue, e.g. order-intake-bot",
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "scopes": {
                  "description": "Operation names this agent may call, or [\"*\"] for all",
                  "items": {
                    "pattern": "^(\\*|[a-z][a-z0-9_]{0,63})$",
                    "type": "string"
                  },
                  "maxItems": 50,
                  "minItems": 1,
                  "type": "array"
                },
                "use_for_session": {
                  "description": "Ignored here. The hosted server has no session and never holds a key; it exists so calls written for the npm package still validate.",
                  "type": "boolean"
                }
              },
              "required": [
                "name",
                "scopes"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": false,
              "title": "Create an agent identity (Overwing Tower)"
            }
          },
          {
            "name": "tower_list_agents",
            "title": "List agents (Overwing Tower)",
            "description": "List this organization's Tower agents with scopes, status and last use. Keys are never returned. Needs an organization key.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List agents (Overwing Tower)"
            }
          },
          {
            "name": "tower_revoke_agent",
            "title": "Revoke an agent (Overwing Tower)",
            "description": "Revoke an agent. Its key stops working at once and cannot be restored. Needs an organization key.",
            "inputSchema": {
              "properties": {
                "agent_id": {
                  "description": "The agent's id (a UUID), from tower_list_agents",
                  "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                  "type": "string"
                }
              },
              "required": [
                "agent_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Revoke an agent (Overwing Tower)"
            }
          },
          {
            "name": "tower_capabilities",
            "title": "What may I do? (Overwing Tower)",
            "description": "List the operations this agent is allowed to call, each with the JSON Schema its input must match and its compensating operation. Call this first; build inputs from the schema rather than guessing. Needs an agent key.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "What may I do? (Overwing Tower)"
            }
          },
          {
            "name": "tower_decide",
            "title": "Would this be allowed? (Overwing Tower)",
            "description": "Ask Tower how it would rule on an operation without doing anything: auto (would execute), review (a person must approve), or reject. Returns the score, the reason, and each policy question's answer. No side effects. Needs an agent key.",
            "inputSchema": {
              "properties": {
                "input": {
                  "additionalProperties": {},
                  "description": "The operation's input, matching its input_schema from tower_capabilities",
                  "type": "object"
                },
                "operation": {
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "operation",
                "input"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Would this be allowed? (Overwing Tower)"
            }
          },
          {
            "name": "tower_submit_action",
            "title": "Request an action (Overwing Tower)",
            "description": "Ask Tower to perform an operation on the legacy system. Tower decides: executed (done), pending (a person must approve; poll tower_get_action, do not resubmit), or rejected (do not retry unchanged). Always send an idempotency_key that is stable for this business request, such as the source message id: repeating a key returns the original outcome instead of acting twice. Set dry_run to see the decision without executing. Needs an agent key.",
            "inputSchema": {
              "properties": {
                "dry_run": {
                  "type": "boolean"
                },
                "idempotency_key": {
                  "description": "Stable per business request; reuse it on retries",
                  "maxLength": 128,
                  "minLength": 1,
                  "type": "string"
                },
                "input": {
                  "additionalProperties": {},
                  "description": "The operation's input, matching its input_schema from tower_capabilities",
                  "type": "object"
                },
                "operation": {
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "operation",
                "input",
                "idempotency_key"
              ],
              "type": "object"
            },
            "annotations": {
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Request an action (Overwing Tower)"
            }
          },
          {
            "name": "tower_get_action",
            "title": "Get an action (Overwing Tower)",
            "description": "Status and result of an action: pending, approved, executed, failed, compensated, or rejected. Use it to poll an action that is waiting on human review. Needs an agent key.",
            "inputSchema": {
              "properties": {
                "action_id": {
                  "description": "The action's id (a UUID), from tower_submit_action",
                  "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                  "type": "string"
                }
              },
              "required": [
                "action_id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get an action (Overwing Tower)"
            }
          },
          {
            "name": "tower_compensate",
            "title": "Undo an executed action (Overwing Tower)",
            "description": "Run the compensating operation for an executed action, for example cancel the order that create_order made. Runs once; repeating it returns the first outcome. Needs an agent key.",
            "inputSchema": {
              "properties": {
                "action_id": {
                  "description": "The executed action's id (a UUID)",
                  "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
                  "type": "string"
                }
              },
              "required": [
                "action_id"
              ],
              "type": "object"
            },
            "annotations": {
              "idempotentHint": true,
              "readOnlyHint": false,
              "title": "Undo an executed action (Overwing Tower)"
            }
          },
          {
            "name": "tower_get_receipt",
            "title": "Get a receipt (Overwing Tower)",
            "description": "Fetch one signed receipt by id or by sequence number: the payload, its hash, the previous link's hash, and the Ed25519 signature. Needs an agent key.",
            "inputSchema": {
              "properties": {
                "id": {
                  "description": "Receipt id or sequence number",
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get a receipt (Overwing Tower)"
            }
          },
          {
            "name": "tower_verify_receipts",
            "title": "Verify the receipt chain (Overwing Tower)",
            "description": "Recompute every hash and check every signature over a range of this organization's receipts. Reports the first break, if any. Defaults to the whole chain (up to 5,000 links per call). Needs an agent key.",
            "inputSchema": {
              "properties": {
                "from": {
                  "minimum": 1,
                  "type": "integer"
                },
                "to": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Verify the receipt chain (Overwing Tower)"
            }
          }
        ]
      },
      "name": "Overwing",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "overwing-mcp",
          "version": "0.12.0",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/overwing-mcp.json",
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 948
      },
      "registryName": "ai.overwing/mcp",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://overwing.ai/mcp"
        }
      ],
      "repository": "https://github.com/frod27/overwing-mcp",
      "reviewed": false,
      "slug": "overwing-mcp",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.overwing/mcp",
      "summary": "Guardrails for LLM output: pass / fail / review verdicts and one recommended action. Hosted or npm.",
      "updatedAt": "2026-10-02T03:47:37Z",
      "url": "https://www.anchorterminal.com/tools/overwing-mcp",
      "vendor": "overwing.ai",
      "vendorUrl": "https://overwing.ai",
      "version": "0.12.0",
      "websiteUrl": "https://overwing.ai",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/overwing-mcp",
    "json": "https://www.anchorterminal.com/tools/overwing-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/overwing-mcp.md",
    "slim": "https://www.anchorterminal.com/tools/overwing-mcp.min.md"
  },
  "markdown": "# Overwing\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by overwing.ai (https://overwing.ai)\n- Category: Guardrails \u0026 safety filters (https://www.anchorterminal.com/categories/guardrails.md)\n- Listed because: It's published in the registry under overwing.ai, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Guardrails for LLM output: pass / fail / review verdicts and one recommended action. Hosted or npm.\n\n## Facts\n\n- MCP registry: `ai.overwing/mcp` 0.12.0\n- Endpoint: https://overwing.ai/mcp (streamable HTTP)\n- Package: npm `overwing-mcp` (stdio)\n- Source: https://github.com/frod27/overwing-mcp\n- Website: https://overwing.ai\n- npm downloads a week: 948\n- GitHub stars: 0\n- Registry entry updated: 2026-10-02\n\n## Tools\n\n- Tools it lists (34, about 6,650 tokens of context, `tools/list` without credentials over MCP 2026-07-28, checked 2026-10-04 22:20 UTC):\n  - `evaluate` (writes): Works with no API key: 10 evaluations a day, inputs up to 2,000 characters, and the text is not stored. With a key: 250 a day and up, inputs up to 100,000…\n  - `evaluate_batch` (writes): Score up to 50 texts against one rule set in a single call. Each item counts as one evaluation. Returns a summary plus per-item verdicts; items can fail…\n  - `list_rule_sets` (read-only): List the prebuilt and custom rule sets available to this organization. Needs an organization key.\n  - `get_rule_set` (read-only): Fetch a rule set with its full rule definitions. Use 'content-safety' as a worked example when writing your own. Needs an organization key.\n  - `create_rule_set` (writes): Create a custom rule set with 1 to 25 rules. Each rule is a choice (pick one option), score (position on an ordered scale), or noul (yes/no) question with a…\n  - `get_evaluation` (read-only): Fetch a stored evaluation by id, including the original input and per-rule results. Needs an organization key.\n  - `list_evaluations` (read-only): List recent evaluations, newest first, with optional verdict and rule set filters. Use next_cursor to page. Needs an organization key.\n  - `get_usage` (read-only): Daily usage, remaining quota for today, and plan limits. Needs an organization key.\n  - `whoami` (read-only): Identify the organization and plan behind the API key on this request, the key's scope, the organization's data settings (store_inputs, retention_days), and…\n  - `create_account` (writes): Create an Overwing account for yourself, with no email: an organization and an API key, returned once. Nothing is sent to anyone. Use it when you have no key…\n  - `prove_domain` (writes): Begin proving that your account controls a domain. For an account with no email the domain stands in for one: it raises the limits to the normal free tier,…\n  - `verify_domain` (writes): Look for the value prove_domain asked for, at the domain. Found: the domain is the account's. Not found: an error saying what was looked for; DNS changes can…\n  - `list_plans` (read-only): Public plan catalog: prices, daily limits, and per-minute burst limits. No API key needed.\n  - `atlas_lookup` (read-only): Say what a User-Agent string claims to be and whether the claim can be trusted, from the Overwing Atlas registry of AI crawlers, fetchers and browser agents.…\n  - `atlas_agents` (read-only): Browse or search Overwing Atlas, the registry of AI crawlers, fetchers and browser agents: name, operator, user-agent tokens, Web Bot Auth key directory,…\n  - `atlas_register_agent` (writes): Add an agent or crawler you operate to the Overwing Atlas registry, free, so a site that looks up its User-Agent learns who runs it. Give the agent's name, the…\n  - `atlas_verify_registration` (writes): Look for the proof at the operator's domain: the DNS TXT record or the file that atlas_register_agent asked for. Found: the entry is published in the registry,…\n  - `atlas_list_registrations` (read-only): The agents this organization has registered in Overwing Atlas, newest first, each with its status (pending_verification, pending_review, published, rejected)…\n  - `atlas_withdraw_registration` (writes): Withdraw a registration. A published entry leaves the registry, so lookups stop naming the agent; an unfinished request is abandoned. This cannot be undone:…\n  - `atlas_summary` (read-only): Public numbers from Overwing Atlas: registry counts by purpose and verification, published browser-agent traffic shares, sector field-scan headlines (e.g. how…\n  - `beacon_start` (writes): Overwing Beacon answers one question about a site: is this product reachable by agents? It checks robots.txt rules for AI agents, llms.txt, the sitemap, the…\n  - `beacon_report` (read-only): The report for a check started with beacon_start. The first call runs the check. With an Overwing key on the connection: score (0 to 100), verdict (yes,…\n  - `beacon_sample` (read-only): A real Overwing Beacon report, free: the check of overwing.ai itself, refreshed daily. Read it to see exactly what a full report holds before starting a check.…\n  - `tower_load_template` (writes): Set up Overwing Tower for this organization by loading the starter workflow: email purchase order to order entry, with create_order, update_order and…\n  - `tower_create_agent` (writes): Create a scoped agent identity and its key. Needs an organization key. Scope it to the operations the agent needs (for example create_order) rather than *…\n  - `tower_list_agents` (read-only): List this organization's Tower agents with scopes, status and last use. Keys are never returned. Needs an organization key.\n  - `tower_revoke_agent` (writes): Revoke an agent. Its key stops working at once and cannot be restored. Needs an organization key.\n  - `tower_capabilities` (read-only): List the operations this agent is allowed to call, each with the JSON Schema its input must match and its compensating operation. Call this first; build inputs…\n  - `tower_decide` (read-only): Ask Tower how it would rule on an operation without doing anything: auto (would execute), review (a person must approve), or reject. Returns the score, the…\n  - `tower_submit_action` (writes): Ask Tower to perform an operation on the legacy system. Tower decides: executed (done), pending (a person must approve; poll tower_get_action, do not…\n  - `tower_get_action` (read-only): Status and result of an action: pending, approved, executed, failed, compensated, or rejected. Use it to poll an action that is waiting on human review. Needs…\n  - `tower_compensate` (writes): Run the compensating operation for an executed action, for example cancel the order that create_order made. Runs once; repeating it returns the first outcome.…\n  - `tower_get_receipt` (read-only): Fetch one signed receipt by id or by sequence number: the payload, its hash, the previous link's hash, and the Ed25519 signature. Needs an agent key.\n  - `tower_verify_receipts` (read-only): Recompute every hash and check every signature over a range of this organization's receipts. Reports the first break, if any. Defaults to the whole chain (up…\n- How its tools read to an agent (0 errors, 12 warnings, 1 note, about 6,650 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC11 atlas_agents: 2 parameters without a description: limit, operator\n  - warn TC11 atlas_register_agent: 3 parameters without a description: description, follows_robots_txt, purpose\n  - warn TC11 create_rule_set: none of its 4 parameters has a description\n  - warn TC11 evaluate_batch: none of its 4 parameters has a description\n  - warn TC11 get_evaluation: its one parameter, id, has no description\n  - warn TC11 get_rule_set: its one parameter, slug, has no description\n  - warn TC11 get_usage: its one parameter, days, has no description\n  - warn TC11 list_evaluations: none of its 4 parameters has a description\n  - warn TC11 list_rule_sets: its one parameter, include_inactive, has no description\n  - warn TC11 tower_decide: 1 parameter without a description: operation\n  - warn TC11 tower_submit_action: 2 parameters without a description: dry_run, operation\n  - warn TC11 tower_verify_receipts: none of its 2 parameters has a description\n  - note TC24 server: 34 of 34 tools have no outputSchema\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/overwing-mcp.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "Overwing",
        "url": ""
      }
    ],
    "description": "Overwing, an MCP server by overwing.ai, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Guardrails for LLM output: pass / fail / review verdicts and one recommended action. Hosted or npm.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "Overwing",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/overwing-mcp",
    "published": "",
    "section": "indexed",
    "title": "Overwing: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/overwing-mcp"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 2280
  },
  "version": 1
}
