Anakin
Official@anakin-io/mcp
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.
Quick install (recommended)
One command configures every detected agent client:
npx -y @anakin-io/mcp@latest init --allYou'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: Deep Research MCP Server
Manual install
If you prefer to edit config files yourself, see Manual setup per client.
What's exposed
Tool | Purpose |
| Fetch one URL → markdown (or AI-extracted JSON with |
| AI web search with citations. Synchronous. |
| Discover all URLs on a domain. |
| Bulk-fetch markdown across a site. |
| Multi-source deep research (1–5 min). |
| Find a Wire action for a task by natural-language intent. |
| Browse supported sites and a site's actions + param schemas. |
| Run a Wire read action (extracts data, no state change). |
| Run a Wire write action (state-changing; never payments). |
| List saved accounts/credentials for auth-required actions. |
| Sign in to a credentials-mode site → |
| Request a brand-new action for a site not yet in the catalog. |
| Check a |
| Watch a page/site/Wire action on a schedule; alert on change. |
| List your monitors (or fetch one by id). |
| Detected changes for a monitor. |
| Pause / resume / run-now / delete a monitor. |
| Ask ChatGPT/Gemini/Google AI Overview the same question, compare answers. |
| List available AI answer engines. |
| List saved browser login sessions (ids for |
| Permanently delete a saved session. |
| 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 updateThen restart your client. Confirm the version with:
npx -y @anakin-io/mcp@latest --versionManual 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 |
|
Linux |
|
Windows |
|
{
"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:
MCP (this package) — for clients that support it. Tools are typed and called natively. This is the high-quality path.
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 serverFor 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-..." }
}
}
}Related
@anakin-io/sdk— Node.js / TypeScript SDKanakin— Python SDKanakin-cli— Python CLI for human terminal useSKILL.md — agent-onboarding doc for non-MCP agents
License
Available Tools
22 toolsagentic_searchARead-only
Run multi-source deep research. The pipeline searches the web, scrapes the most relevant citations, and uses an LLM to structure the combined data into a unified answer. Async — typically 1–5 minutes. Use this when one URL or a flat search result will not answer the question (comparative analysis, multi-jurisdictional research, market intelligence). Returns a summary plus structured_data conforming to the inferred or supplied schema.
Inputs: prompt (required), schema, useBrowser. Returns: id, cached, status, summary, +2 more
ai_visibility_searchARead-only
Ask multiple AI answer engines (ChatGPT, Gemini, Google AI Overview) the same question and compare their answers. Returns one result per engine — status, an answer summary, latency, credits used, and a consensus/outlier verdict — plus an AI-generated synthesis of where the engines agree and diverge. Async; typically completes within 1–2 minutes and this tool polls to completion. Use for brand/AI-SEO visibility checks ("what do AI engines say about X"), answer comparison, and geo-specific AI answers (set country). Billed per source at that Wire action's rate; failed sources are free. Set include_full_content=true only when you need each engine's raw full answer — it is large.
Inputs: query (required), country, sources, include_full_content. Returns: status, country, results, search_id, +1 more
ai_visibility_sourcesARead-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.
Inputs: no named parameters. Returns: sources
browser_taskADestructive
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).
Inputs: prompt (required), url, max_steps, session_id, +2 more. Returns: cached, result, run_id, success, +3 more
crawlARead-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.
Inputs: url (required), depth, country, maxPages, +5 more. Returns: url, pages, durationMs, totalPages, +1 more
mapARead-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.
Inputs: url (required), depth, limit, search, +4 more. Returns: url, links, durationMs, totalLinks, +2 more
monitor_changesARead-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.
Inputs: id (required). Returns: Detected changes for the monitor — typically { changes: [...] }, each entry rec…
monitor_controlADestructive
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.
Inputs: id (required), action (required). Returns: Confirmation of the requested monitor state change.
monitor_createADestructive
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.
Inputs: url (required), intervalMinutes (required), scope, aiGoal, +20 more. Returns: id, url, scope, isActive, +4 more
monitor_listARead-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.
Inputs: id. Returns: A single monitor (when id is given) or the full list wrapped as { monitors: [..…
scrapeARead-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.
Inputs: url (required), country, sessionId, forceFresh, +3 more. Returns: The extracted page. markdown is always present; generatedJson is present only w…
searchARead-only
Run an AI web search and return result URLs, titles, and snippets. Synchronous — returns immediately, no polling. Use this when the agent needs to discover pages relevant to a query before scraping. Returns a results array with url/title/snippet/date for each hit.
Inputs: prompt (required), limit. Returns: count, results
session_deleteADestructive
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.
Inputs: id (required). Returns: Confirmation of deletion.
session_listARead-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.
Inputs: domain. Returns: sessions
wire_buildADestructive
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.
Inputs: goal (required), website_url (required), force, actions, +4 more. Returns: status, build_request
wire_build_statusARead-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.
Inputs: id, page, limit, status, +1 more. Returns: With `id`: { build_request, actions, skipped inside build_request, catalog_slug…
wire_catalogARead-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.
Inputs: slug. Returns: With no slug: every supported catalog and its action count. With a slug: that c…
wire_discoverARead-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").
Inputs: q (required), limit. Returns: Ranked candidate Wire actions for the given intent.
wire_identitiesARead-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").
Inputs: catalog_id. Returns: Your saved Wire identities and their credentials (id, status, catalog).
wire_loginADestructive
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.
Inputs: catalog_slug (required), params, source_id, source_ref, +1 more. Returns: The resulting identity and credential.
wire_read_actionARead-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.
Inputs: action_id (required), params, identity_id, credential_id. Returns: data, status, credits_used, execution_ms, +1 more
wire_write_actionADestructive
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.
Inputs: action_id (required), params, identity_id, credential_id. Returns: data, status, credits_used, execution_ms, +1 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 22 tools
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.
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.
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.
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
Related MCP Connectors
Web scraping, search, crawling, structured extraction and research for AI agents.
Scrape any website, extract structured data, and collect web content at scale with AI agents
Turn the web into structured, reliable, actionable enterprise data for AI Agents
Web scraping for AI agents. Extract text and metadata from any URL worldwide. $0.005/page.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceThe 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 npm12AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceWeb search, clean page reading & one-call research dossiers for AI agents. No API key — your agent does the synthesis.81 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides AI agents and assistants with advanced web crawling and RAG capabilities, enabling them to scrape websites and perform semantic search over crawled content.1MIT
- AlicenseBqualityBmaintenanceWeb scraping for AI agents: scrape, map, crawl and batch public pages into Markdown, tables and JSON, with an Evidence Record on every page. Blocked, empty and wrong pages come back as such, with the reason.396AGPL 3.0