Skip to main content
Glama

@anakin-io/mcp

Node License Status

Model Context Protocol server for Anakin.

Gives AI agents in Claude Desktop, Cursor, Windsurf, VS Code, and any other MCP-compatible client native access to web scraping, search, crawling, mapping, agentic research, and Wire actions — without writing any glue code.

Status: alpha (v0.1.x). Tool surface and arguments may change between minor versions until v1.0.

One command configures every detected agent client:

npx -y @anakin-io/mcp@latest init --all

You'll be prompted for your API key (or set ANAKIN_API_KEY first to skip the prompt). Get one free at anakin.io/dashboard — 500 credits, no card required.

After it finishes, restart your agent client(s). The anakin MCP server will appear in the tool list, exposing the tools below.

Related MCP server: webpeel

Manual install

If you prefer to edit config files yourself, see Manual setup per client.

What's exposed

Tool

Purpose

scrape

Fetch one URL → markdown (or AI-extracted JSON with generateJson: true).

search

AI web search with citations. Synchronous.

map

Discover all URLs on a domain.

crawl

Bulk-fetch markdown across a site.

agentic_search

Multi-source deep research (1–5 min).

wire_discover

Find a Wire action for a task by natural-language intent.

wire_catalog

Browse supported sites and a site's actions + param schemas.

wire_read_action

Run a Wire read action (extracts data, no state change).

wire_write_action

Run a Wire write action (state-changing; never payments).

wire_identities

List saved accounts/credentials for auth-required actions.

wire_login

Sign in to a credentials-mode site → credential_id.

wire_build

Request a brand-new action for a site not yet in the catalog.

wire_build_status

Check a wire_build request — status, published actions, skips (or list recent builds).

monitor_create

Watch a page/site/Wire action on a schedule; alert on change.

monitor_list

List your monitors (or fetch one by id).

monitor_changes

Detected changes for a monitor.

monitor_control

Pause / resume / run-now / delete a monitor.

ai_visibility_search

Ask ChatGPT/Gemini/Google AI Overview the same question, compare answers.

ai_visibility_sources

List available AI answer engines.

session_list

List saved browser login sessions (ids for sessionId params).

session_delete

Permanently delete a saved session.

browser_task

Natural-language task in an AI-driven cloud browser (up to ~5 min).

Wire runs pre-built automation actions across hundreds of sites. Actions are read (extract listings, category products, prices, reviews, profiles, dashboard metrics) or write (log in, submit a form) — many read actions need no auth. The loop is: wire_discover (or wire_catalog) to find an action_id and its type, then wire_read_action or wire_write_action (matching the type) to run it; add a credential_id only when the action's auth mode is required. Payment execution and fund transfers are refused by policy.

Each tool is a thin wrapper around the Anakin REST API — there is no scraping logic in this package, just MCP-protocol glue. The HTTP client is self-contained (src/client.ts); no runtime dependency on the @anakin-io/sdk Node SDK.

Updating

Configs created by this package pin @anakin-io/mcp@latest, so updates are automatic — every time your client launches the server, npx runs the newest published version. Just restart your client to pick up a release.

Already set up before v0.1.4? Your config likely uses an unpinned @anakin-io/mcp, which npx keeps serving from cache. Run this once to switch it to auto-updating — it keeps your API key and never prompts:

npx -y @anakin-io/mcp@latest update

Then restart your client. Confirm the version with:

npx -y @anakin-io/mcp@latest --version

Manual setup per client

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "anakin": {
      "command": "npx",
      "args": ["-y", "@anakin-io/mcp@latest"],
      "env": {
        "ANAKIN_API_KEY": "ak-..."
      }
    }
  }
}

Restart Claude Desktop.

Claude Code (Anthropic CLI)

Edit ~/.claude/settings.json:

{
  "mcpServers": {
    "anakin": {
      "command": "npx",
      "args": ["-y", "@anakin-io/mcp@latest"],
      "env": {
        "ANAKIN_API_KEY": "ak-..."
      }
    }
  }
}

Or use Claude Code's built-in command:

claude mcp add anakin npx -y @anakin-io/mcp@latest -e ANAKIN_API_KEY=ak-...

Cursor

Edit ~/.cursor/mcp.json (user-scoped) or ./.cursor/mcp.json (project-scoped):

{
  "mcpServers": {
    "anakin": {
      "command": "npx",
      "args": ["-y", "@anakin-io/mcp@latest"],
      "env": {
        "ANAKIN_API_KEY": "ak-..."
      }
    }
  }
}

Restart Cursor.

Cline (VS Code extension — "Claude Dev")

Edit Cline's settings file inside VS Code's globalStorage:

Platform

Path

macOS

~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Linux

~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Windows

%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

{
  "mcpServers": {
    "anakin": {
      "command": "npx",
      "args": ["-y", "@anakin-io/mcp@latest"],
      "env": {
        "ANAKIN_API_KEY": "ak-..."
      }
    }
  }
}

Reload the Cline VS Code extension (or restart VS Code).

Continue (IDE extension)

Edit ~/.continue/config.json:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "name": "anakin",
        "command": "npx",
        "args": ["-y", "@anakin-io/mcp@latest"],
        "env": {
          "ANAKIN_API_KEY": "ak-..."
        }
      }
    ]
  }
}

If you have other entries under experimental.modelContextProtocolServers, append the anakin object to the existing array — don't overwrite. Reload the Continue extension.

Zed

Edit ~/.config/zed/settings.json (macOS / Linux) or %APPDATA%/Zed/settings.json (Windows):

{
  "context_servers": {
    "anakin": {
      "command": "npx",
      "args": ["-y", "@anakin-io/mcp@latest"],
      "env": {
        "ANAKIN_API_KEY": "ak-..."
      }
    }
  }
}

Reload Zed.

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "anakin": {
      "command": "npx",
      "args": ["-y", "@anakin-io/mcp@latest"],
      "env": {
        "ANAKIN_API_KEY": "ak-..."
      }
    }
  }
}

Restart Windsurf.

VS Code (with the MCP extension)

Edit .vscode/mcp.json in your workspace:

{
  "servers": {
    "anakin": {
      "command": "npx",
      "args": ["-y", "@anakin-io/mcp@latest"],
      "env": {
        "ANAKIN_API_KEY": "ak-..."
      }
    }
  }
}

Reload VS Code.

Verify it's working

In Claude Desktop / Cursor / etc., ask the agent something like:

Scrape https://example.com using anakin and return the markdown.

The agent should call the scrape tool, return the page contents, and cite the call in its trace.

CLI reference

anakin-mcp                       Run the MCP server (default — clients spawn this).
anakin-mcp init                  Interactive client config.
anakin-mcp init --all            Configure every detected client, no prompts.
anakin-mcp init --client=cursor  Only configure one client.
anakin-mcp --version             Print version.
anakin-mcp --help                Print usage.

How agents discover Anakin

Two complementary paths:

  1. MCP (this package) — for clients that support it. Tools are typed and called natively. This is the high-quality path.

  2. SKILL.md — for any agent that can fetch a URL. The markdown describes the API end-to-end so an agent can use it via plain HTTP calls.

Most users on Claude Desktop / Cursor / Windsurf / VS Code will want option 1.

Development

git clone https://github.com/Anakin-Inc/anakin-mcp.git
cd anakin-mcp
npm install
npm run build
ANAKIN_API_KEY=ak-... node dist/cli.js  # smoke-test the server

For local end-to-end testing with an actual MCP client, point the client at the absolute path of dist/cli.js:

{
  "mcpServers": {
    "anakin-dev": {
      "command": "node",
      "args": ["/absolute/path/to/anakin-mcp/dist/cli.js"],
      "env": { "ANAKIN_API_KEY": "ak-..." }
    }
  }
}

License

Apache 2.0

Available Tools

22 tools
ai_visibility_sourcesA
Read-only

List the AI answer engines available to ai_visibility_search — each with its slug (what you pass as sources) and display label. Call this when you need to query a subset of engines or check what is currently enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourcesYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation. The description adds value by disclosing that results represent enabled engines and that slugs are the values to pass as `sources`, which is useful behavioral context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states what the tool returns, and the second states when to call it. Information is front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list tool with an output schema available, the description is complete: it defines the resource, the output fields, how they relate to a sibling tool, and the call context. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty, so the description carries the full burden. It explains the semantic relationship between the output slugs and the `sources` parameter of ai_visibility_search, giving an agent actionable meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List'), names the exact resource ('AI answer engines available to ai_visibility_search'), and clarifies what each entry contains (slug and display label). It clearly distinguishes this tool from sibling ai_visibility_search, which performs the actual search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to call this tool: when needing to query a subset of engines or check what is currently enabled. This gives an agent concrete decision criteria without requiring inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browser_taskA
Destructive

Run a natural-language task in a real cloud browser driven by an AI agent: it navigates, clicks, types, scrolls, and extracts on your behalf ("find the cheapest 65-inch TV on this site and list its specs", "fill the contact form with …"). Use when scrape cannot do the job (multi-step flows, interactions, complex navigation) and no Wire action covers the site (check wire_discover first — Wire actions are faster and cheaper). Async; runs up to ~5 minutes and this tool polls to completion. For login-protected tasks pass session_id from session_list — never put passwords in the prompt. Supply output_schema to get structured JSON back. It does not execute payments or transfer funds; such tasks are refused. Returns the task result plus run metadata (steps taken, duration, run_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoNavigate here before starting. Omit to let the agent follow URLs named in the prompt.
promptYesThe task in natural language. Be specific about the goal and what to return. Never include passwords or secrets — use session_id for authenticated sites.
max_stepsNoCap on agent steps (navigation/click/type actions).
session_idNoSaved browser-session ID (from session_list) so the task runs logged in.
timeout_msNoTask timeout in milliseconds (server caps runs at ~330s regardless).
output_schemaNoJSON Schema for the result — the agent returns structured data conforming to it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNo
resultNoThe task result — structured JSON matching output_schema if it was supplied, otherwise a free-form value.
run_idNo
successNo
iterationsNo
duration_msNo
steps_takenNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal openWorldHint and destructiveHint, so the description doesn't need to restate those, but it adds important behavioral context: async polling up to ~5 minutes, refusal to execute payments or transfer funds, and the use of session_id for login without exposing secrets. It also notes the output includes run metadata. This goes beyond the annotations and clarifies limitations and operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently packed, with each sentence earning its place. It front-loads the core purpose and examples, then systematically covers usage conditions, async behavior, authentication, output schema, restrictions, and return format. No filler or redundancy; it reads well and is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (six parameters, async behavior, security constraints, output schema), the description is remarkably complete. It covers purpose, selection criteria, operational details (timeout, polling), authentication, structured output, limitations (no payments), and the return payload. An agent has everything needed to invoke it correctly without further research.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all six parameters, so the baseline is 3. The description adds practical value beyond the schema: it explains how to use session_id (from session_list) for authenticated sites, advises against putting passwords in the prompt, mentions that url can be omitted to let the agent follow URLs from the prompt, and notes that output_schema yields structured JSON. These enrich the parameter meaning and guide correct usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear statement of what the tool does: 'Run a natural-language task in a real cloud browser driven by an AI agent' followed by a concrete list of actions (navigates, clicks, types, scrolls, extracts) and two illustrative examples. It distinguishes itself from siblings by explicitly contrasting with scrape and Wire actions, so an agent knows exactly when this tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Use when scrape cannot do the job (multi-step flows, interactions, complex navigation) and no Wire action covers the site (check wire_discover first — Wire actions are faster and cheaper).' It also instructs to pass session_id for authenticated tasks and warns against putting passwords in the prompt. This fully covers selection criteria and prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crawlA
Read-only

Bulk-fetch markdown across a site. Use this when an agent needs the contents of many pages at once (catalog ingestion, site-wide RAG corpus). Pair with includePatterns / excludePatterns to scope which URLs are fetched. Returns an array of pages each with markdown and per-page status.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesStarting URL.
depthNoLink-hops from the starting URL to follow.
countryNoTwo-letter proxy egress country code.us
maxPagesNoHard cap on pages fetched. Defaults to 10.
sessionIdNoOptional saved-browser-session ID for login-protected sites.
useBrowserNoRender each page in a headless browser (for SPAs).
sessionNameNoOptional saved-browser-session name.
excludePatternsNoGlob/regex patterns. URLs matching any pattern are skipped.
includePatternsNoGlob/regex patterns. Only URLs matching at least one pattern are fetched.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
pagesYes
durationMsYes
totalPagesYes
completedPagesYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds value by disclosing the return format ('array of pages each with markdown and per-page status') and hinting at scoping behavior, which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact—two sentences plus a clause—and front-loads the core purpose and when to use it. Every sentence earns its place: purpose, usage scenario, scoping advice, and return format are all covered without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters and an output schema, the description covers the key aspects: purpose, bulk use case, scoping advice, and return format. It doesn't mention performance or rate limits, but those are not critical given the annotations and output schema. It is sufficient for an agent to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds meaningful guidance on how to use includePatterns/excludePatterns to scope URLs, which is not fully captured by the schema's individual descriptions. This elevates it slightly above baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Bulk-fetch markdown across a site') and clearly distinguishes it from single-page tools like 'scrape' by emphasizing bulk use cases. The mention of 'catalog ingestion, site-wide RAG corpus' makes the intended scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Use this when an agent needs the contents of many pages at once' and advises pairing with include/exclude patterns, which gives clear operational context. It doesn't explicitly contrast with alternatives, but the bulk-vs-single distinction is enough to guide an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mapA
Read-only

Discover all reachable URLs under a given site. Useful for understanding a domain's structure before crawling, or finding the sub-pages an agent should scrape. Returns lists of internal links, external links, and counts. Honors depth and limit parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe starting URL for discovery (typically a homepage or section root).
depthNoHow many link-hops from the starting URL to follow.
limitNoMaximum number of URLs to return overall.
searchNoOptional keyword filter — only return URLs whose path/title matches.
useBrowserNoRender with a headless browser (for SPAs).
limitPerLevelNoMaximum URLs collected per depth level (controls breadth).
includeSubdomainsNoInclude URLs on subdomains of the starting host.
includeExternalLinksNoAlso collect (but do not follow) external links.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
linksYes
durationMsYes
totalLinksYes
externalLinksYes
totalExternalLinksYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful behavioral context beyond the readOnlyHint and openWorldHint annotations: it returns internal/external link lists and counts, and it honors depth/limit parameters. However, 'Returns lists of ... external links' is slightly imprecise because includeExternalLinks defaults to false, so the tool only collects external links when explicitly enabled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler: the first states what it does, the second says when it is useful, and the third describes output and parameter behavior. The key purpose is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with full schema coverage, annotations, and an output schema, the description provides enough high-level orientation for an agent to select and invoke it. It does not mention SPA handling or subdomain options, but those are fully described in the input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 8 parameters. The description only reinforces depth and limit, which adds no new meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Discover all reachable URLs under a given site.' It also distinguishes itself from sibling tools by framing the tool as pre-crawl reconnaissance and as a way to find sub-pages to scrape, which separates it from crawl/scrape tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete use contexts: understanding a domain's structure before crawling, and finding sub-pages an agent should scrape. This makes when-to-use fairly clear, but it does not explicitly name alternatives or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitor_changesA
Read-only

Get the detected changes for a monitor — each entry records when the watched content differed from the previous check, with a diff/summary (and the AI change summary when aiMode is on). Use monitor_list first to find the monitor id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe monitor ID (from monitor_list or monitor_create).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag readOnlyHint=true, so the safety profile is known. The description adds meaningful behavior: entries represent differences from the previous check and include a diff/summary, plus an AI summary when aiMode is on. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the tool's purpose, then detail about entries and the prerequisite. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter, rich annotations, and an output schema, the description covers the essential workflow (monitor_list first) and the meaning of entries. Minor missing details like pagination or error behavior are not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the id parameter (coverage 100%), including its source. The description only reiterates the need to get the id from monitor_list first, which is more usage guidance than new parameter semantics. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Get', a resource 'changes for a monitor', and defines entries as recordings of content differences from previous checks. It clearly differentiates from sibling monitor_list/monitor_create by focusing on change history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call monitor_list first to obtain the monitor id, giving a clear prerequisite. It doesn't explicitly exclude alternatives, but the context is unambiguous for a read-only retrieval tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitor_controlA
Destructive

Control an existing website monitor: "pause" stops scheduled checks, "resume" restarts them (may hit the plan's active-monitor cap), "run_now" triggers an immediate out-of-schedule check (billed like a normal check), and "delete" permanently removes the monitor and its history. Use monitor_list to find the id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe monitor ID (from monitor_list or monitor_create).
actionYesWhat to do with the monitor.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by disclosing concrete side effects: pause stops scheduled checks, resume may hit the active-monitor cap, run_now is billed like a normal check, and delete permanently removes the monitor and history. The destructiveHint annotation is fully supported and enriched by the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense and front-loads the core purpose, but the single paragraph with multiple quoted actions and side-effect clauses is slightly harder to scan. Each phrase earns its place, though structured bullets would improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations declare destructive behavior, the description covers everything needed to choose and invoke the tool correctly: action semantics, consequences, billing, cap risks, and id sourcing. There are no meaningful gaps for correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds substantial meaning to the action parameter by explaining the behavior and consequences of every enum value. It also reinforces the id parameter's source by telling the agent to use monitor_list, complementing the schema's brief reference to monitor_list or monitor_create.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Control an existing website monitor' and enumerates the four concrete actions (pause, resume, run_now, delete), making the operation unmistakable. It also distinguishes itself from siblings by emphasizing 'existing' and pointing to monitor_list for finding the id, which separates it from monitor_create and monitor_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear operational context for each action and explicitly instructs the agent to 'Use monitor_list to find the id.' It does not explicitly name monitor_create or monitor_changes as alternatives, but the 'existing monitor' qualifier and the listed actions imply when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitor_createA
Destructive

Create a scheduled website monitor that checks a URL every intervalMinutes (min 15) and records a change when the content differs — optionally alerting a webhook or email. scope "page" (default) watches one URL; "site" crawls the site each run and tracks pages added/removed/changed; "wire" runs a Wire action each check and diffs its JSON. watchMode "full_page" (2 credits/check) compares the whole page; "specific_data" (3 credits/check) extracts only the fields in outputSchema with AI — ideal for price/stock/status tracking. aiMode (+1 credit/check) filters out trivial noise and summarizes real changes. Active-monitor caps per plan: Free 5, Pro 20, Scale 100.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to watch (root URL for site scope; the Wire site's URL for wire scope).
scopeNoWhat to monitor: one page (default), a whole site, or a Wire action.page
aiGoalNoNatural-language description of which changes count as meaningful (used with aiMode), e.g. "only when the price drops or it goes out of stock".
aiModeNoAI meaningful-change filtering: ignores trivial noise (ads, timestamps) and summarizes real changes. +1 credit per check.
countryNoTwo-letter proxy country code. Defaults to "us".us
isActiveNoStart running immediately. Defaults to true.
maxDepthNoSite scope: crawl depth (1–5). Defaults to 2.
maxPagesNoSite scope: max pages crawled per run.
expiresAtNoOptional end date (ISO 8601 timestamp or YYYY-MM-DD); the monitor auto-pauses when it passes.
sessionIdNoSaved browser-session ID for monitoring login-protected pages (see session_list).
watchModeNoCompare the whole page (default) or only the fields in outputSchema, extracted with AI.full_page
useBrowserNoRender checks with a stealth headless browser (needed for JS-heavy pages). Forced true when sessionId is set.
wireParamsNoWire scope: parameters passed to the action each check.
alertEmailsNoComma-separated email recipients for change alerts.
watchFormatNoFormat compared in full_page mode. Defaults to markdown.markdown
outputSchemaNoJSON Schema of the fields to track. Required when watchMode is "specific_data".
wireActionIdNoWire scope (required there): the Wire action run each check, e.g. "amazon.search_products" (see wire_discover).
wireWatchPathsNoWire scope: JSON paths to diff instead of the whole response.
alertWebhookUrlNoWebhook URL that receives signed change alerts.
excludePatternsNoSite scope: glob patterns to skip.
includePatternsNoSite scope: glob patterns or hand-picked same-site URLs to track.
intervalMinutesYesCheck frequency in minutes. Minimum 15.
wireCatalogSlugNoWire scope: catalogue slug of the Wire site.
wireCredentialIdNoWire scope: credential ID when the action needs auth (see wire_identities).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
scopeNo
isActiveNo
watchModeNo
watchFormatNo
intervalMinutesNo
alertWebhookSecretNoAlways redacted before being returned — retrieve the real value from the Anakin dashboard.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint, openWorldHint), the description discloses per-check credit costs, active-monitor plan caps (Free 5, Pro 20, Scale 100), auto-pause on expiresAt, and the forced useBrowser=true when sessionId is set. This is substantial behavioral context that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but for a 24-parameter tool with three scopes and two watch modes, it is tightly packed and front-loaded with the core behavior. Every sentence contributes either a definition, a constraint, a cost, or a cross-reference; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description covers the essential behavior, scopes, modes, costs, plan limits, required-parameter relationships, and related tools. An output schema exists, so return-value documentation is unnecessary, and the description fully equips an agent to configure a correct monitor creation call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even with 100% schema description coverage, the description adds cross-parameter constraints and semantics: outputSchema is required when watchMode='specific_data', wireActionId is required in wire scope, useBrowser is forced true with sessionId, and credit costs differentiate watchMode/aiMode. These relationships are not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Create a scheduled website monitor that checks a URL every intervalMinutes...'. It clearly differentiates this from one-off fetching tools like scrape or crawl by emphasizing scheduled/recurring behavior, and the scope/watchMode variants are all explained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides strong contextual guidance: scope options, watchMode selection criteria ('ideal for price/stock/status tracking'), and when a browser is needed ('JS-heavy pages'). It references related tools (session_list, wire_discover, wire_identities), though it stops short of explicitly saying when NOT to use monitor_create in favor of a sibling like scrape.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitor_listA
Read-only

List your website monitors, or pass id to fetch one monitor's full configuration and status (next/last check time, active state, per-check credit cost, alert settings). Use this to find a monitor's id before monitor_changes or monitor_control.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoMonitor ID — fetch just this monitor instead of the full list.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
scopeNo
isActiveNo
monitorsNoPresent when id was omitted — every monitor, each shaped like the fields above.
watchModeNo
watchFormatNo
intervalMinutesNo
alertWebhookSecretNoAlways redacted before being returned — retrieve the real value from the Anakin dashboard.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description complements this by disclosing the dual list/fetch behavior and the type of data returned (next/last check time, active state, credit cost, alert settings). No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core behavior is stated first, followed by the optional parameter behavior and a practical usage hint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool returns, how the single optional parameter changes behavior, and why an agent would use it. An output schema exists, so detailed return-value documentation is not required here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the `id` parameter clearly. The description adds some context about the single-monitor result being 'full configuration and status', but does not add substantial parameter-level meaning beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('website monitors'), and additionally covers the single-monitor variant when an `id` is passed. This distinguishes it from related siblings like monitor_control and monitor_changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to use this tool to find a monitor's id before calling monitor_changes or monitor_control. This provides clear routing context for when the tool should be used relative to its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeA
Read-only

Fetch a single URL and return clean markdown by default. Set generateJson=true to also extract structured data with AI. Set useBrowser=true for SPAs and JS-heavy sites (slower and more expensive — only when needed). Returns markdown unless generateJson is true, in which case it returns the structured JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to scrape.
countryNoTwo-letter country code for the proxy egress location (e.g. "us", "de", "in"). Defaults to "us".us
sessionIdNoOptional saved-browser-session ID for login-protected pages. Pair with useBrowser=true.
forceFreshNoSkip the cache and refetch. Defaults to false; cached results are typically good for 24h.
useBrowserNoRender the page with a stealth headless browser. Required for SPAs and dynamic content; otherwise prefer the default (fetch-based) for speed and lower cost.
sessionNameNoOptional saved-browser-session name (alternative to sessionId).
generateJsonNoHave AI extract structured JSON from the page in addition to / instead of markdown. Use for product pages, listings, articles, anywhere the caller wants typed fields.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
cachedYesWhether this result was served from cache.
markdownYesClean markdown of the page.
durationMsYes
generatedJsonNoAI-extracted structured JSON — present only when generateJson was true.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context: output type depends on generateJson, browser rendering is slower and more expensive, and the default path is the fetch-based approach. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: default behavior, optional structured output, and browser-mode guidance. The most important fact ('fetch a single URL... markdown by default') is front-loaded, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 100% schema coverage, existing output schema, and readOnly/openWorld annotations, the description is complete enough for an agent to select and invoke the tool correctly. The description covers the main behavioral branches (markdown vs. JSON, fetch vs. browser), while the schema handles the remaining parameter details like country, session, and caching.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description references generateJson and useBrowser, but the parameter descriptions in the schema already explain those fields with comparable detail ('Have AI extract structured JSON...' and 'Required for SPAs and dynamic content'). The description adds only mild extra meaning by tying generateJson to the return format and useBrowser to cost/expense.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb + resource: 'Fetch a single URL and return clean markdown by default.' It also distinguishes itself from likely siblings by emphasizing 'single URL' and by explaining the two key modes (default fetch vs. useBrowser, markdown vs. generateJson). This makes it easy for an agent to separate scrape from crawl, search, or browser_task.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear conditional guidance: use useBrowser=true for SPAs and JS-heavy sites, and only when needed due to cost/speed; use generateJson=true for structured data. It doesn't explicitly compare against sibling tools like search or crawl, but 'Fetch a single URL' provides enough scoping to imply the tool is for one-off page fetches rather than site-wide operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_deleteA
Destructive

Permanently delete a saved browser session and its encrypted login data. Irreversible — the user must log in again through the dashboard to recreate it, and any monitors or requests referencing this sessionId will lose authenticated access. Find ids with session_list.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe session ID to delete (from session_list).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, but the description adds substantial context: it deletes encrypted login data, is irreversible, requires re-login, and breaks references from monitors/requests. This goes well beyond the annotation and fully discloses the impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: the action, the irreversible consequence with impact, and the id source. It is front-loaded and contains no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive one-parameter tool with annotations and an output schema, the description covers the essential warnings, the impact on other entities, and how to obtain the id. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the id parameter as 'The session ID to delete (from session_list).' The description repeats the source of the id without adding new details about format or constraints. With 100% schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Permanently delete a saved browser session and its encrypted login data.' It names the specific resource and the verb, and it distinguishes from siblings like session_list (which lists sessions) by specifying deletion. The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the irreversible nature and the consequence that monitors/requests lose authenticated access, implying caution. It also directs the user to session_list for finding ids. However, it does not explicitly state when not to use the tool (e.g., if a session is needed later), but the destructive warning makes the intended usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_listA
Read-only

List your saved browser sessions — encrypted login states captured via the Anakin dashboard or Browser API. Each session's id is what you pass as sessionId to scrape/crawl, monitor_create, or browser_task to work with login-protected pages. Optionally filter by the website domain the session belongs to. If no session exists for a site, the user must create one interactively in the dashboard (log in once; 2FA/captchas included) — that flow cannot run from here.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoFilter to sessions for one website domain, e.g. "amazon.com".

Output Schema

ParametersJSON Schema
NameRequiredDescription
sessionsYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds that sessions are encrypted login states and that creation must happen interactively, which is useful. It does not contradict annotations and provides modest additional context beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the purpose, then explains the id usage and limitation. A few sentences but each earns its place; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool, the description covers the main use case, filtering, and the creation limitation. An output schema exists, so return values are covered elsewhere. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter, domain, is fully described in the schema (100% coverage). The description restates the filtering behavior but adds no new semantics; it's essentially redundant. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists saved browser sessions and immediately ties the session id to usage in scrape/crawl, monitor_create, and browser_task, distinguishing it from siblings. The verb 'list' and resource are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use the tool (to obtain a sessionId for other operations) and how to filter by domain. It also notes the interactive creation flow cannot run from here, but it doesn't explicitly state when not to use it—though the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_buildA
Destructive

Request brand-new Wire actions for a website that isn't in the catalog yet — a full catalog build. Describe the site (website_url) and what to build (goal); optionally list the discrete capabilities as actions (each becomes its own action), pin the proxy exit country, and attach a login credential to build actions behind a sign-in. Wire generates and auto-tests the scrapers, then publishes them. Asynchronous — the response's build_request carries an id and status "pending"; when it completes, its skipped list names anything the build could not deliver. Charges credits (login builds cost significantly more than public builds), refunded automatically if the build fails. Track progress with wire_build_status. Only use this after wire_discover / wire_catalog confirm no existing action covers the site.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesNatural-language description of what the action should do or extract. Be specific — the builder synthesizes the scraper from this.
forceNoBuild even if similar actions already exist for the domain (otherwise the request is rejected with ACTION_EXISTS).
actionsNoOptional list of discrete capabilities to build, each as its own action (e.g. ["search products", "get product details"]). Omit to let the builder infer them from `goal`.
countryNoOptional 2-letter country code (e.g. "US") — the scraper is built and tested through an exit IP in that country. Use when the site geo-gates its content.
catalog_idNoOptional — attach to an existing catalog instead of creating one.
credentialNoOptional login credential, for building actions behind a sign-in (a login build — costs significantly more credits than a public build). Plain shape: { type: "plain", username, password }. Vault shape (an entry in a connected 1Password/Azure identity source): { type: "vault", source_id, source_ref }. Either shape may add `login_url` when the login form lives somewhere other than website_url. The password is used once by the builder to sign in and is never stored.
visibilityNoAction visibility. Defaults to private.private
website_urlYesThe site to build an action for. The domain is extracted automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo"ok" on acceptance.
build_requestNoThe created build request — its `id` and `status` ("pending") track the asynchronous build; once finished, `skipped` names anything the build could not deliver.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint, openWorldHint), the description reveals critical behaviors: it is asynchronous, returns a build_request with an id and 'pending' status, lists skipped items on completion, and mentions credit charges with automatic refunds on failure. It also discloses that login builds cost more. This is rich, non-obvious information that annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but earns its length given the tool's complexity (8 parameters, nested credential object). It front-loads the primary purpose and then logically covers parameters, async behavior, cost, and usage condition. Each sentence adds information; there is no redundancy. A slightly tighter structure would be ideal, but it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values are already specified. The description covers the essential context: when to use (after discovery), async nature, tracking via build_status, credit implications, refund policy, and the skipped list on failure. It also explains the credential variations and the force flag. Nothing an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds meaningful semantics: for goal it notes 'the builder synthesizes the scraper from this,' for actions it says 'each becomes its own action,' for country it explains 'built and tested through an exit IP in that country,' and for credential it details the plain/vault distinction and that passwords are never stored. This goes beyond the schema, though the schema already carries the definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise purpose: 'Request brand-new Wire actions for a website that isn't in the catalog yet — a full catalog build.' It names the verb (request/build), the resource (Wire actions), and the condition (not in catalog). It explicitly distinguishes itself from siblings by referencing wire_discover / wire_catalog as prerequisites, making the tool's role unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Only use this after wire_discover / wire_catalog confirm no existing action covers the site.' It also directs the agent to track progress with wire_build_status and notes that similar existing actions cause rejection unless force is set. This provides clear context for choosing this tool over alternatives like wire_discover or wire_read_action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_build_statusA
Read-only

Check on Wire builds started with wire_build. Pass the id from wire_build's build_request to get that build's full detail: its status ("pending"/"processing" → still running, poll again after ~30s), the published actions (each with the action_id to run it via wire_read_action / wire_write_action), the skipped list (capabilities the build could not deliver — always check it, delivery may be partial), and the catalog_slug once an action has published. Omit id to list your recent build requests instead (optionally filtered by status). Read-only; spends no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoA build request id (from wire_build's response). Omit to list recent builds.
pageNoList mode only — 1-based page number, for paging past the first `limit` builds (see `pagination.total` in the result).
limitNoList mode only — maximum builds to return per page.
statusNoList mode only — filter by status (e.g. "pending", "processing", "success", "failed").
include_eventsNoDetail mode only — include the build's step-by-step event log (verbose; default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, destructiveHint), the description reveals that the tool is read-only and spends no credits, that pending/processing statuses require polling, that delivery may be partial (skipped list must always be checked), and that include_events produces a verbose log. This is significant behavioral context not found in the annotations. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A compact three-sentence paragraph front-loads the core purpose and mode distinction before detailing output fields and caveats. Every sentence adds information—no filler, and the structure makes the detail/list branching easy to follow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with a full output schema and annotations, covers both operation modes, status polling behavior, the skipped-list caveat, and the next-step routing to action execution tools. Nothing an agent needs to call it correctly is missing, even though page/limit details are left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's mention of id provenance ('from wire_build's build_request') largely duplicates the schema's 'from wire_build's response,' and status examples mirror the schema. It adds little beyond the schema for parameters like page, limit, and include_events, though it does contextualize the output statuses.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Check on') and resource ('Wire builds started with wire_build'), and clearly separates detail mode (pass id) from list mode (omit id). It names related sibling tools (wire_read_action/wire_write_action) and disambiguates by stating the tool only checks status, not runs actions. This is unambiguous and distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit conditions: pass the id from wire_build's build_request for detail; omit id to list recent builds; poll after ~30s while pending/processing; always check the skipped list. It also points to wire_read_action/wire_write_action as the correct tools for running published actions, signaling what this tool is not for. However, it does not explicitly state 'use wire_build to start a new build instead,' so the exclusion is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_catalogA
Read-only

Browse the Wire catalog. With no arguments, lists every supported website and its action count. Pass a catalog slug (e.g. "walmart", "amazon", "linkedin") to get that site's full action list with exact parameter schemas, each action's type (read/write), auth mode (none/optional/required), and credit cost — plus the login fields for credentials-mode sites. Use this to see everything a specific site can do (e.g. which read actions exist for fetching category products) before running one with wire_read_action or wire_write_action.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoCatalog slug to inspect (e.g. "walmart"). Omit to list all catalogs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true, and the description aligns by describing read-only operations ('Browse', 'list'). It adds value by detailing the returned content: action lists, schemas, types, auth modes, credit costs, and login fields. No contradictions; it enriches the read-only annotation with specifics about what the agent will receive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose, then detailing the behavior with a slug and the use case. It's dense but not bloated; every sentence contributes. The structure is logical and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool does, what it returns, how to invoke it (with and without slug), and how it fits with sibling tools. Since an output schema exists (as per context), return details are already structured. No critical gaps remain for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single parameter 'slug' with the same semantics (omit to list all). The description repeats the examples but adds no new meaning beyond the schema. Since schema coverage is 100%, a baseline of 3 is appropriate; the description doesn't fail to compensate because nothing is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: browse the Wire catalog, listing all sites with no args, or a specific site's actions with a slug. It uses specific verbs like 'Browse' and 'list' and distinguishes itself from execution tools by explicitly noting it's used 'before running' wire_read_action or wire_write_action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use it: to inspect a site's capabilities before executing actions. It names the alternative tools (wire_read_action, wire_write_action) and frames the catalog as a precursor. It doesn't explicitly state exclusions, but the context is clear that this is for discovery, not execution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_discoverA
Read-only

Find Wire actions for a task from a natural-language intent. Wire is a catalog of pre-built automation actions across hundreds of websites (Amazon, Walmart, LinkedIn, Airbnb, Zillow, and others). Actions are of two kinds: READ actions that extract data (search listings, fetch a category's products, get a product's price/specs/reviews, read a profile, pull dashboard metrics) and WRITE actions that perform interactions (log in, submit a form). Many read actions need no authentication. Applicable when a task may be achievable on a specific known site, for data extraction as well as interactions. Returns ranked candidate actions, each with its action_id, type ("read" or "write"), required/optional params, credit cost, and whether auth is needed. Run a returned action with wire_read_action (when its type is "read") or wire_write_action (when its type is "write").

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesThe intent in natural language, e.g. "top phones on walmart", "search airbnb listings in Lisbon", "a linkedin profile's work history".
limitNoMaximum number of candidate actions to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNoSuggested next call.
resultsNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses valuable behavioral details: results are ranked, each candidate includes action_id, type, params, credit cost, and auth requirement, and the read/write distinction is explained with concrete examples. This gives the agent an accurate model of what the tool returns and how the results should be used.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and remains dense but well-structured: catalog context, read/write taxonomy, auth note, applicability, return contents, and follow-up actions. Every sentence contributes useful selection or invocation guidance, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a discovery tool, the description covers purpose, when to use it, result contents, and next steps, and the presence of an output schema covers return-shape details. The only minor gap is lack of explicit differentiation from sibling discovery-related tools such as wire_catalog or agentic_search, but this does not materially hinder correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the q parameter is already described as natural-language intent with examples, while limit has a default and bound in the schema. The description reinforces the intent-based nature of q but does not add significant parameter-level meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Find Wire actions for a task from a natural-language intent.' It fully clarifies that this is a discovery tool over Wire's catalog, and the examples of READ and WRITE actions make the scope explicit without depending on the tool name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states when the tool is applicable: 'when a task may be achievable on a specific known site, for data extraction as well as interactions.' It also tells the agent how to proceed after discovery by routing to wire_read_action or wire_write_action, though it does not explicitly name discovery alternatives or when to avoid using this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_identitiesA
Read-only

List your saved Wire identities and their credentials. An identity is a named account on a site; each credential's id is the credential_id you pass to wire_read_action / wire_write_action to run actions whose auth_mode is "required". Optionally filter by catalog_id. Use this to find an existing credential before running an auth-required action (and check its status is "active", not "expired").

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_idNoOptional — restrict to identities for a single catalog.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds useful behavioral context by explaining the relationship between credential `id` and `credential_id` for auth_mode="required" actions, and by warning the agent to check for 'active' rather than 'expired' status. This is meaningful additional context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then gives necessary context about how credentials are used. It is slightly longer than strictly needed for a simple list tool, but every sentence earns its place by connecting the tool to the broader action workflow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one optional parameter, a rich description, a true output schema, and safety annotations, nothing essential is missing. The description fully explains why the tool exists, how to filter it, and how its output feeds into subsequent auth-required actions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the single optional catalog_id parameter already described in the schema as 'restrict to identities for a single catalog'. The description repeats this as 'Optionally filter by catalog_id' without adding new syntax or format details, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('List') and a clear resource ('your saved Wire identities and their credentials'), and it differentiates this tool from wire_read_action/wire_write_action by explaining that the credential `id` is the `credential_id` passed to those tools. This lets an agent immediately know what the tool returns and how it fits into the action flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: use this tool before running an auth-required action to find an existing credential and verify its status is 'active'. It also mentions the optional catalog_id filter. It does not explicitly name alternatives to avoid or when-not-to-use conditions, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_loginA
Destructive

Sign in to a credentials-mode site and get a credential_id usable immediately with wire_read_action / wire_write_action. Provide the catalog slug and login params (the fields that catalog's login schema defines, e.g. email/password — see wire_catalog's login_input_schema). The password is never stored, only the encrypted session. Only needed for actions whose auth_mode is "required", and only for catalogs that support password sign-in; cookie-based sites use the dashboard connect flow instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoLogin fields defined by the catalog (e.g. { email, password }). Use wire_catalog's login_input_schema to learn the field names.
source_idNoOptional 1Password identity-source ID (alternative to params).
source_refNoOptional 1Password item locator { vault_id, item_id, fields } (use with source_id instead of params).
catalog_slugYesThe catalog to sign in to (e.g. "neb").
identity_nameNoOptional name for the identity. Derived from params in password mode; required when using a 1Password locator.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint and openWorldHint, but the description adds valuable context beyond them: the password is never stored, only the encrypted session is kept, and the resulting credential_id is immediately usable. It doesn't exhaustively describe session lifecycle side effects, but it complements the annotation coverage well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose and outcome. Each sentence earns its place: purpose, required inputs, security behavior, and explicit usage boundaries. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 5-parameter schema, output schema, and annotations, the description covers the key operational context: when to use the tool, what to provide, how password data is handled, and which alternative flows exist. The few remaining details such as source_id/source_ref semantics are already documented in the input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline of 3 applies. The description adds meaning by explaining that `params` must follow the catalog's login_input_schema and giving a concrete example (email/password). This helps the agent understand that `params` is not arbitrary but schema-driven.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Sign in to a credentials-mode site' and names the direct outcome, 'get a credential_id usable immediately with wire_read_action / wire_write_action.' This clearly differentiates it from sibling tools like wire_catalog and the read/write action tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when this tool is needed ('Only needed for actions whose auth_mode is "required"'), and when it is not needed ('cookie-based sites use the dashboard connect flow instead'). It also directs the agent to wire_catalog's login_input_schema for the exact param shape, providing concrete routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_read_actionA
Read-only

Run a Wire READ action — one whose type is "read" (it EXTRACTS data and does not change state on the target site): search listings, fetch a category's products, get a product's price/specs/reviews, read a profile, pull dashboard metrics. Discover action_ids first with wire_discover or wire_catalog and confirm the action's type is "read"; params must match that action's parameter schema. This tool transparently polls the async job to completion and returns the extracted data. Most read actions need no auth; if the action's auth_mode is "required" (e.g. reading data behind a login), pass a credential_id from wire_identities or wire_login. For state-changing actions (type "write") use wire_write_action instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoThe action's input parameters. Shape depends on the action — use its parameter schema from discovery. Omit for actions that take none.
action_idYesThe action to run (from wire_discover / wire_catalog).
identity_idNoOptional identity selector — the server resolves a credential from it (alternative to credential_id).
credential_idNoRequired when the action's auth_mode is "required"; honored when "optional"; ignored when "none". Get one from wire_identities or wire_login.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoPresent when completed — the action's extracted/returned data.
statusYes
credits_usedNo
execution_msNo
retry_after_msNoPresent while processing — server's suggested poll delay.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations' readOnlyHint=true, the description adds that the tool EXTRACTS data and does not change state, and that it 'transparently polls the async job to completion and returns the extracted data.' It also discloses auth behavior. It does not contradict the annotations, though it omits failure or timeout behavior, so it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then flows through discovery, params, auth, and the write-action alternative. The example list is slightly long but each clause carries meaningful guidance; there is no filler, though some redundancy with the readOnly annotation could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generic action runner, the description covers discovery, type confirmation, param matching, auth, async polling, and sibling routing. With a rich output schema present, it does not need to describe return values. It omits identity_id as an alternative auth path, but the schema covers that, so this is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage and already documents action_id, params, identity_id, and credential_id with conditional auth semantics. The description adds that most read actions need no auth and that params must match the action's schema, but this largely restates the schema. Baseline 3 is appropriate because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Run a Wire READ action' and enumerates concrete examples (search listings, fetch category products, get price/specs/reviews, read profile, pull metrics), making the operation and resource unambiguous. It also distinguishes from the closest sibling by explicitly routing state-changing actions to wire_write_action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use steps: discover action_ids first with wire_discover or wire_catalog, confirm the action's type is 'read', and ensure params match the action's schema. It also directly states the when-not case—'For state-changing actions (type "write") use wire_write_action instead'—and provides auth prerequisites for actions with auth_mode 'required'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wire_write_actionA
Destructive

Run a Wire WRITE action — one whose type is "write" (it performs a state-changing interaction on the target site): submit a form, add an item to a cart, post or send content, update account settings. Discover action_ids first with wire_discover or wire_catalog and confirm the action's type is "write"; params must match that action's parameter schema. Most write actions need auth — pass a credential_id from wire_identities or wire_login. This tool transparently polls the async job to completion and returns its result. It does not execute payments or transfer funds; such actions are refused. For data extraction that does not change state (type "read") use wire_read_action instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoThe action's input parameters. Shape depends on the action — use its parameter schema from discovery. Omit for actions that take none.
action_idYesThe action to run (from wire_discover / wire_catalog).
identity_idNoOptional identity selector — the server resolves a credential from it (alternative to credential_id).
credential_idNoRequired when the action's auth_mode is "required"; honored when "optional"; ignored when "none". Get one from wire_identities or wire_login.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoPresent when completed — the action's extracted/returned data.
statusYes
credits_usedNo
execution_msNo
retry_after_msNoPresent while processing — server's suggested poll delay.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and openWorldHint=true; the description adds genuinely useful behavioral context on top: it 'transparently polls the async job to completion and returns its result' and refuses payments/transfer actions. It reinforces the state-changing nature consistently with destructiveHint, but doesn't add nuance about irreversibility or failure behavior — hence not a 5, but clearly above baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five information-dense sentences, front-loaded with the purpose and examples before moving to preconditions, auth, async behavior, and exclusions. Every sentence earns its place, though there is slight redundancy in stating the action type is 'write' both in the opening and in the discovery confirmation instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (so return values are covered), the description covers the essentials: discovery preconditions, auth handling, async polling behavior, prohibited payment actions, and sibling routing. Minor gaps remain — what 'refused' looks like at the API level and whether write actions are idempotent — but nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already has a rich description (auth_mode conditions for credential_id, identity_id as alternative, source from wire_identities/wire_login). The description mostly restates what the schema says — 'params must match that action's parameter schema' and credential sourcing — adding only the general framing that 'most write actions need auth'. Baseline 3 is appropriate since the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Run a Wire WRITE action') and clarifies what 'write' means with concrete examples (submit a form, add an item to a cart, post content, update account settings). It explicitly differentiates from its sibling wire_read_action by stating that read-type, non-state-changing extraction belongs there.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions: discover action_ids with wire_discover/wire_catalog and confirm the type is 'write'. It also states when auth is needed (pass credential_id from wire_identities or wire_login) and when to choose the alternative tool ('For data extraction that does not change state (type "read") use wire_read_action instead'). No ambiguity remains about when this tool applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv0.4.1
    • First observedagentic_search
    • First observedai_visibility_search
    • First observedai_visibility_sources
    • First observedbrowser_task
    • First observedcrawl
    • First observedmap
    • First observedmonitor_changes
    • First observedmonitor_control
    • First observedmonitor_create
    • First observedmonitor_list
    • First observedscrape
    • First observedsearch
    • First observedsession_delete
    • First observedsession_list
    • First observedwire_build
    • First observedwire_build_status
    • First observedwire_catalog
    • First observedwire_discover
    • First observedwire_identities
    • First observedwire_login
    • First observedwire_read_action
    • First observedwire_write_action

TDQS

A4.1/5.0

Scored across 22 tools

Disambiguation4/5

Tools are mostly grouped into clearly distinct domains—scraping/research, Wire actions, monitors, and sessions—with descriptions that clarify boundaries. However, search, agentic_search, and ai_visibility_search are all search-like and could be misselected without careful reading, and wire_discover vs wire_catalog both serve a discovery purpose.

Naming Consistency4/5

The naming is clean and predictable overall, with strong prefixes for grouped features (wire_, monitor_, session_) and consistent snake_case. The main inconsistency is that core tools like search, scrape, map, crawl, and browser_task don't follow the same grouped convention, but the pattern is still easy to infer.

Tool Count4/5

22 tools is on the heavier side, but the count is justified by four distinct subdomains: web research, Wire automation, monitoring, and session management. Each tool has a real purpose, though a few auxiliary tools could potentially be merged without much loss.

Completeness4/5

The surface covers the main lifecycle well: discovery, scraping, crawling, deep research, browser automation, monitoring, and credentials/sessions. Minor gaps exist—such as no way to update an existing monitor's config or delete/refresh Wire credentials—but these are workarounds rather than dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to access real-time web data through search, markdown scraping, and browser automation while bypassing anti-bot protections. It provides tools for web research, e-commerce monitoring, and data extraction from across the globe.
    4
    8,480 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    The web data platform for AI agents. Fetch, search, crawl, extract, monitor, and screenshot any URL. 55+ domain extractors, 65-98% token savings. 7 MCP tools included.
    332 npm
    12
    AGPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    Web scraping, crawling, and structured data extraction for AI agents. 5 tools: scrape (clean markdown from any URL), crawl (entire sites), map (discover URLs), extract (structured JSON), and search. 833ms avg latency, single binary, self-hostable.
    8
    1,064
    AGPL 3.0