The Anakin MCP connector routes your AI agent's tool calls to Anakin's own MCP server through Scalekit. Each user signs in to Anakin once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 22 tools.
- Tools
- 22
- What they doRead · write · destructive
- 8 · 12 · 28 read12 write2 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Anakin MCP connection
In AgentKit > Connections, create an Anakin MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Anakin MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'anakinmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Anakin MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'anakinmcp_ai_visibility_sources',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "anakinmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Anakin MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="anakinmcp_ai_visibility_sources",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolanakinmcp_ai_visibility_searchAsk multiple AI answer engines (ChatGPT, Gemini, Google AI Overview) the same question and compare their answers.Read-onlyAIVisibilitySearch
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
querystringrequired- The question to ask every engine (max 2000 characters).
countrystring- Two-letter ISO country for the search geography (proxy exit). Defaults to "us".default
us include_full_contentboolean- Include each engine's raw full answer in the results (large). Defaults to false — summaries and the synthesis are returned regardless.default
false sourcesarray- Engine slugs to query (see ai_visibility_sources). Omit to query all enabled engines.
anakinmcp_ai_visibility_sourcesList the AI answer engines available to ai_visibility_search — each with its slug (what you pass as `sources`) and display label.Read-onlyAIVisibilitySources
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
This tool takes no inputs.
anakinmcp_mapDiscover all reachable URLs under a given site.Read-onlyMap
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
urlstringrequired- The starting URL for discovery (typically a homepage or section root).
depthinteger- How many link-hops from the starting URL to follow.default
2 includeExternalLinksboolean- Also collect (but do not follow) external links.default
false includeSubdomainsboolean- Include URLs on subdomains of the starting host.default
false limitinteger- Maximum number of URLs to return overall.default
100 limitPerLevelinteger- Maximum URLs collected per depth level (controls breadth).default
100 searchstring- Optional keyword filter — only return URLs whose path/title matches.
useBrowserboolean- Render with a headless browser (for SPAs).default
false
anakinmcp_monitor_changesGet 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).Read-onlyMonitorChanges
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
idstringrequired- The monitor ID (from monitor_list or monitor_create).
anakinmcp_monitor_listList 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).Read-onlyMonitorList
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
idstring- Monitor ID — fetch just this monitor instead of the full list.
anakinmcp_scrapeFetch a single URL and return clean markdown by default.Read-onlyScrape
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
urlstringrequired- The URL to scrape.
countrystring- Two-letter country code for the proxy egress location (e.g. "us", "de", "in"). Defaults to "us".default
us forceFreshboolean- Skip the cache and refetch. Defaults to false; cached results are typically good for 24h.default
false generateJsonboolean- Have 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.default
false sessionIdstring- Optional saved-browser-session ID for login-protected pages. Pair with useBrowser=true.
sessionNamestring- Optional saved-browser-session name (alternative to sessionId).
useBrowserboolean- Render the page with a stealth headless browser. Required for SPAs and dynamic content; otherwise prefer the default (fetch-based) for speed and lower cost.default
false
anakinmcp_searchRun an AI web search and return result URLs, titles, and snippets.Read-onlySearch
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
promptstringrequired- The search query in natural language.
limitinteger- Maximum number of results to return.default
5
anakinmcp_session_listList your saved browser sessions — encrypted login states captured via the Anakin dashboard or Browser API.Read-onlySessionList
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
domainstring- Filter to sessions for one website domain, e.g. "amazon.com".
anakinmcp_agentic_searchRun multi-source deep research.WriteAgenticSearch
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
promptstringrequired- The research question or task in natural language.
schemaobject- Optional JSON Schema describing the desired output shape. If omitted, the engine infers a schema from the prompt.
useBrowserboolean- Use the headless browser when scraping cited pages (more reliable for JS-heavy sources). Defaults to true.default
true
anakinmcp_browser_taskRun 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 …").WriteBrowserTask
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
promptstringrequired- The 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_stepsinteger- Cap on agent steps (navigation/click/type actions).
output_schemaobject- JSON Schema for the result — the agent returns structured data conforming to it.
session_idstring- Saved browser-session ID (from session_list) so the task runs logged in.
timeout_msinteger- Task timeout in milliseconds (server caps runs at ~330s regardless).
urlstring- Navigate here before starting. Omit to let the agent follow URLs named in the prompt.
anakinmcp_crawlBulk-fetch markdown across a site.WriteCrawl
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
urlstringrequired- Starting URL.
countrystring- Two-letter proxy egress country code.default
us depthinteger- Link-hops from the starting URL to follow.default
1 excludePatternsarray- Glob/regex patterns. URLs matching any pattern are skipped.
includePatternsarray- Glob/regex patterns. Only URLs matching at least one pattern are fetched.
maxPagesinteger- Hard cap on pages fetched. Defaults to 10.default
10 sessionIdstring- Optional saved-browser-session ID for login-protected sites.
sessionNamestring- Optional saved-browser-session name.
useBrowserboolean- Render each page in a headless browser (for SPAs).default
false
anakinmcp_monitor_controlControl 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.WriteMonitorControl
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
actionstringrequired- What to do with the monitor.one of
pauseresumerun_nowdelete idstringrequired- The monitor ID (from monitor_list or monitor_create).
anakinmcp_monitor_createCreate 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.WriteMonitorCreate
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
intervalMinutesintegerrequired- Check frequency in minutes. Minimum 15.
urlstringrequired- The URL to watch (root URL for site scope; the Wire site's URL for wire scope).
aiGoalstring- Natural-language description of which changes count as meaningful (used with aiMode), e.g. "only when the price drops or it goes out of stock".
aiModeboolean- AI meaningful-change filtering: ignores trivial noise (ads, timestamps) and summarizes real changes. +1 credit per check.default
false alertEmailsstring- Comma-separated email recipients for change alerts.
alertWebhookUrlstring- Webhook URL that receives signed change alerts.
countrystring- Two-letter proxy country code. Defaults to "us".default
us excludePatternsarray- Site scope: glob patterns to skip.
expiresAtstring- Optional end date (ISO 8601 timestamp or YYYY-MM-DD); the monitor auto-pauses when it passes.
includePatternsarray- Site scope: glob patterns or hand-picked same-site URLs to track.
isActiveboolean- Start running immediately. Defaults to true.default
true maxDepthinteger- Site scope: crawl depth (1–5). Defaults to 2.
maxPagesinteger- Site scope: max pages crawled per run.
outputSchemaobject- JSON Schema of the fields to track. Required when watchMode is "specific_data".
scopestring- What to monitor: one page (default), a whole site, or a Wire action.one of
pagesitewiredefaultpage sessionIdstring- Saved browser-session ID for monitoring login-protected pages (see session_list).
useBrowserboolean- Render checks with a stealth headless browser (needed for JS-heavy pages). Forced true when sessionId is set.default
false watchFormatstring- Format compared in full_page mode. Defaults to markdown.one of
markdownhtmlcleaned_htmldefaultmarkdown watchModestring- Compare the whole page (default) or only the fields in outputSchema, extracted with AI.one of
full_pagespecific_datadefaultfull_page wireActionIdstring- Wire scope (required there): the Wire action run each check, e.g. "amazon.search_products" (see wire_discover).
wireCatalogSlugstring- Wire scope: catalogue slug of the Wire site.
wireCredentialIdstring- Wire scope: credential ID when the action needs auth (see wire_identities).
wireParamsobject- Wire scope: parameters passed to the action each check.
wireWatchPathsarray- Wire scope: JSON paths to diff instead of the whole response.
anakinmcp_wire_buildRequest a brand-new Wire action for a website that isn't in the catalog yet.WriteWireBuild
Request a brand-new Wire action for a website that isn't in the catalog yet. Describe the site (`website_url`) and what the action should do or extract (`goal`); Wire generates and auto-tests a scraper, then publishes it. Asynchronous (returns status "pending") and charges credits, refunded automatically if the build fails. Only use this after wire_discover / wire_catalog confirm no existing action covers the site.
Inputs
goalstringrequired- Natural-language description of what the action should do or extract. Be specific â the builder synthesizes the scraper from this.
website_urlstringrequired- The site to build an action for. The domain is extracted automatically.
actionsarray- Optional 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`.
catalog_idstring- Optional â attach to an existing catalog instead of creating one.
countrystring- Optional 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.
credentialobject- Optional 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.
forceboolean- Build even if similar actions already exist for the domain (otherwise the request is rejected with ACTION_EXISTS).default
false visibilitystring- Action visibility. Defaults to private.one of
privatepublicdefaultprivate
anakinmcp_wire_build_statusCheck on Wire builds started with wire_build.WriteWire Build Status
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
idstring- A build request id (from wire_build's response). Omit to list recent builds.
include_eventsboolean- Detail mode only â include the build's step-by-step event log (verbose; default false).default
false limitinteger- List mode only â maximum builds to return per page.default
10 pageinteger- List mode only â 1-based page number, for paging past the first `limit` builds (see `pagination.total` in the result).default
1 statusstring- List mode only â filter by status (e.g. "pending", "processing", "success", "failed").
anakinmcp_wire_catalogBrowse the Wire catalog.WriteWireCatalog
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.
Inputs
slugstring- Catalog slug to inspect (e.g. "walmart"). Omit to list all catalogs.
anakinmcp_wire_discoverFind Wire actions for a task from a natural-language intent.WriteWireDiscover
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 and WRITE actions that perform interactions. Returns ranked candidate actions, each with its action_id, type ("read" or "write"), required/optional params, credit cost, and whether auth is needed.
Inputs
qstringrequired- The intent in natural language, e.g. "top phones on walmart", "search airbnb listings in Lisbon", "a linkedin profile's work history".
limitinteger- Maximum number of candidate actions to return.default
5
anakinmcp_wire_identitiesList your saved Wire identities and their credentials.WriteWireIdentities
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_idstring- Optional — restrict to identities for a single catalog.
anakinmcp_wire_loginSign in to a credentials-mode site and get a credential_id usable immediately with wire_read_action / wire_write_action.WriteWireLogin
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_slugstringrequired- The catalog to sign in to (e.g. "neb").
identity_namestring- Optional name for the identity. Derived from params in password mode; required when using a 1Password locator.
paramsobject- Login fields defined by the catalog (e.g. { email, password }). Use wire_catalog's login_input_schema to learn the field names.
source_idstring- Optional 1Password identity-source ID (alternative to params).
source_refobject- Optional 1Password item locator { vault_id, item_id, fields } (use with source_id instead of params).
anakinmcp_wire_read_actionRun 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.WriteWireReadAction
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. This tool transparently polls the async job to completion and returns the extracted data.
Inputs
action_idstringrequired- The action to run (from wire_discover / wire_catalog).
credential_idstring- Required when the action's auth_mode is "required"; honored when "optional"; ignored when "none". Get one from wire_identities or wire_login.
identity_idstring- Optional identity selector — the server resolves a credential from it (alternative to credential_id).
paramsobject- The action's input parameters. Shape depends on the action — use its parameter schema from discovery. Omit for actions that take none.
anakinmcp_session_deletePermanently delete a saved browser session and its encrypted login data.DestructiveSessionDelete
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
idstringrequired- The session ID to delete (from session_list).
anakinmcp_wire_write_actionRun 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.DestructiveWireWriteAction
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_idstringrequired- The action to run (from wire_discover / wire_catalog). Must be an action whose type is "write".
credential_idstring- Required when the action's auth_mode is "required"; honored when "optional"; ignored when "none". Get one from wire_identities or wire_login.
identity_idstring- Optional identity selector — the server resolves a credential from it (alternative to credential_id).
paramsobject- The action's input parameters. Shape depends on the action — use its parameter schema from discovery. Omit for actions that take none.
No tools match.