MCP Server Setup

What This Does

webSlinger ships an MCP server that exposes the automation scripts on your account as tools an AI agent can call. Instead of an agent trying to drive a website by reasoning about the page on every step, it calls a script you demonstrated once — which runs deterministically, returns structured JSON, and costs no tokens to execute.

Any MCP client can connect: Claude Code, Claude Desktop, or a custom Claude Agent SDK session.

What It Is Not

This is not a hosted, zero-setup public server. It runs on your machine and drives your real, logged-in Chrome profile through taskSpinner, webSlinger's native messaging host. It can only run automations you have already recorded and generated. That is the point — your cookies, your sessions, your MFA, and no credentials leaving your computer.

Windows only. taskSpinner ships with a Windows installer. macOS and Linux hosts are planned but not yet available.

When an Agent Has No Matching Script

Agents are instructed not to improvise the site interaction. Instead they call request_demonstration, which opens a pre-filled briefing page in your Chrome. You review what was requested, click Begin Recording, and demonstrate the task once with the goals already loaded into the recording session. After you generate the script, the agent picks it up on the next list_scripts call.

Back to webSlinger

Requirements

Before You Begin

All of these come from the normal webSlinger installation. If you have already installed webSlinger and run an automation, you are most of the way there.

Requirement How to get it
webSlinger Chrome extension Install from the Chrome Web Store
taskSpinner 1.3.0 or later Run setup.bat from webSlinger_Setup.zip. Version 1.3.0 is the first build that includes the MCP server.
A webSlinger API key Shown on your Account page after subscribing
At least one generated script Record a session map and generate a script, or let an agent call request_demonstration
Automation permission granted Launch any automation once and click Enable
A paid plan with executions available Running a script consumes an automation execution; the free tier has none

You Do Not Need Python

The installer bundles its own Python runtime and every dependency the MCP server needs, including the MCP SDK. There is nothing to pip install and nothing to clone.

Upgrading from an older taskSpinner? The Install page shows your installed version and tells you when a newer one is available. Download the installer again and run setup.bat — that is the only upgrade path, because the MCP server ships with its own runtime and dependencies. Re-running it is safe: it never touches your mcp_config.json, credentials, or recorded session maps.

Where Things Live

Two directories are involved, and they are deliberately different. Program files are installed under Local AppData; everything that represents your state lives under your user profile.

Program files

%LOCALAPPDATA%\webSlinger\

  • taskSpinner\mcp_server.py
  • taskSpinner\mcp_server.bat
  • taskSpinner\mcp_config.example.json
  • python\ and site-packages\

Your state

%USERPROFILE%\webSlinger\taskSpinner\

  • mcp_config.json (you create this)
  • profileRegistry.json
  • logs\
  • outputData\mcpRuns\

Reinstalling or upgrading replaces the first directory and leaves the second alone.

Setup

Three Steps

  1. Create your MCP config file

    Create a file named mcp_config.json in %USERPROFILE%\webSlinger\taskSpinner\. A template named mcp_config.example.json ships with the server under %LOCALAPPDATA%\webSlinger\taskSpinner\; copy it across and fill in your key.

    On a brand-new machine that folder does not exist yet — it is created the first time taskSpinner or the MCP server runs. Create it yourself, or do step 2 first and it will be waiting for you.

    mcp_config.json
    {
        "api_key": "wsk_your_webslinger_api_key_here"
    }

    The file must be strict JSON — no comments, no trailing commas. A malformed file stops the server from starting at all.

  2. Grant automation permission

    Open the Launch page, start any automation once, and click Enable when Chrome asks. This does two things: it grants webSlinger permission to drive automations, and it registers your Chrome profile and extension so the MCP server knows which browser copy to launch.

    Skipping this produces launch_failed with reason profile_not_registered on the first run.

  3. Register the server with your MCP client

    Point your client at the installed wrapper, which invokes the bundled Python for you:

    the path to register
    %LOCALAPPDATA%\webSlinger\taskSpinner\mcp_server.bat

    Most MCP clients store this path literally and will not expand %LOCALAPPDATA%, so use the fully written-out form, substituting your Windows username:

    C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.bat

    Exact commands for each client are on the Client Configuration page.

Keeping the Key Out of a File

The config file stores your API key in plaintext. If that is a problem — a synced profile, a shared machine, a directory you might commit — set the WEBSLINGER_API_KEY environment variable instead. It overrides api_key in the file, so you can leave that field out, or skip the file entirely: every other setting has a working default.

Verifying It Works

Ask your agent to list your webSlinger scripts. A working server returns the automations on your account. If something is wrong, every tool returns a JSON object with "success": false and a status value naming the problem — check it against the Troubleshooting table.

Nothing configured yet? The server still starts. Every tool returns status not_configured along with setup instructions, so a misconfigured install reports itself clearly instead of failing silently.

Client Configuration

Claude Code

Run this once in a terminal. --scope user makes the server available in every project rather than just the current directory.

claude mcp add webslinger --scope user -- "C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.bat"

Confirm it registered:

claude mcp list

To supply the API key through the environment instead of the config file:

claude mcp add webslinger --scope user --env WEBSLINGER_API_KEY=wsk_your_key_here -- "C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.bat"

Claude Desktop

Edit %APPDATA%\Claude\claude_desktop_config.json and add a webslinger entry under mcpServers. Restart Claude Desktop afterward.

claude_desktop_config.json
{
    "mcpServers": {
        "webslinger": {
            "command": "C:\\Users\\YourName\\AppData\\Local\\webSlinger\\taskSpinner\\mcp_server.bat"
        }
    }
}
Backslashes must be doubled. This is JSON, so \U in a Windows path is read as an escape sequence and the file will fail to parse. Write \\ everywhere, as shown above.

If you already have other servers configured, add webslinger alongside them rather than replacing the mcpServers block.

Claude Agent SDK

Add an entry to ClaudeAgentOptions.mcp_servers:

Python
"webslinger": {
    "command": r"C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.bat",
    "env": {"WEBSLINGER_API_KEY": "wsk_your_key_here"}
}

Pointing at mcp_server.bat rather than your own interpreter keeps the server on its bundled Python and its own copy of the MCP SDK, so it cannot conflict with the package versions in your project's environment.

Available Tools

The Twelve Tools

Every tool returns a JSON object with a success flag. Expected failures come back as "success": false with a status value the agent can branch on, rather than as an error.

Tool What it does
list_scripts Lists your automation scripts with descriptions and declared inputs and outputs.
describe_script Returns the input/output schema and metadata for one script.
run_script Runs a script and blocks until it finishes, returning output data and an execution report.
start_run Starts a script asynchronously and returns a run id immediately.
get_run_status Polls a run started with start_run.
get_run_report Retrieves the full execution report for a completed run.
list_runs Lists recent run records.
cancel_run Cancels an in-progress asynchronous run.
list_schedules Lists your configured scheduled automations.
create_schedule Creates a new scheduled or recurring automation run.
delete_schedule Removes a scheduled automation.
request_demonstration Asks you to record a task no existing script covers. Opens a pre-filled briefing page in your Chrome.

Status Values Worth Knowing

Status Meaning
not_configured No API key found in mcp_config.json or WEBSLINGER_API_KEY.
not_allowed Your tier has no executions, or the monthly limit is used up. Returned before Chrome is launched.
throttled The same limit, but hit by the extension mid-run. Carries a remediation field pointing at a tier upgrade or booster pack.
script_not_found No script by that name on your account. Call list_scripts first.
busy Another run already holds the lock on that Chrome profile.
launch_failed Chrome could not be launched, or the profile is not registered.
timeout / failed The run started but did not complete successfully. Fetch the report with get_run_report.

Troubleshooting

Common Symptoms

Symptom Cause and fix
The client reports reconnect error -32000 The server exited at startup, almost always a malformed mcp_config.json. It must be strict JSON with no comments or trailing commas.
Every tool returns not_configured No API key was found. Check that mcp_config.json is in %USERPROFILE%\webSlinger\taskSpinner\ — not next to mcp_server.py — or set WEBSLINGER_API_KEY.
launch_failed, reason profile_not_registered Chrome has not registered a profile for this API key. Open Chrome with the extension active and that key configured, then retry.
API_KEY_MISMATCH in the run status The key in mcp_config.json is not the one the extension is holding. Copy the key from your account page into both.
Chrome opens a blocked-page tab The extension copy being launched is disabled or wrong. Remove any extension_id override from your config and reload the extension so it re-registers.
Access to the specified native messaging host is forbidden The active extension is not listed in taskSpinner's manifest. The installer authorizes one extension id — the Web Store copy it detects, or the id you type in when it finds none. If you run a second copy, add its id to the allowed_origins array in %LOCALAPPDATA%\webSlinger\taskSpinner\com.webslinger.taskspinner.json and restart Chrome.
not_allowed on every run A tier or monthly-limit gate. The returned message carries the server's explanation.
The server is not listed by the client at all Check the registered path points at mcp_server.bat and that the file exists. If taskSpinner predates 1.3.0 it will not, and you need to re-run the installer.

Where to Look

Logs are written to %USERPROFILE%\webSlinger\taskSpinner\logs\taskSpinner_YYYYMMDD.log, shared by the native messaging host, the scheduler, and the MCP server.

Per-run records, including the output data and execution report, are kept under %USERPROFILE%\webSlinger\taskSpinner\outputData\mcpRuns\. The 50 most recent are retained by default.

Still stuck? Email support@webslinger.ai with the log file and the failing tool's JSON response.

FAQ

Questions

Does running scripts through an agent cost extra?

Each run consumes one automation execution from your plan, exactly as if you had launched it from the website or run it on a schedule. There is no separate MCP charge and no per-step LLM cost during execution — the script runs deterministically without any AI in the loop.

Does this run in the cloud?

No. The server runs on your machine and drives your local Chrome. Your computer must be on and awake, and Chrome will visibly open while a script runs.

Can the agent see my passwords?

No. Credentials are handled by keyCocoon and keyBunker, which inject them directly into login forms. They are never part of a script's input or output data, so they never reach the agent or webSlinger's servers.

Which Chrome profile does it use?

The one registered against your API key. The extension writes that mapping itself whenever it starts up, so the profile launched is by construction the one holding the key you configured. Every launch carries the key's hash, and the extension refuses to run if it does not match its own — so a mix-up between accounts fails loudly instead of running under the wrong one.

Can an agent create automations on its own?

No, and that is deliberate. An agent can request one with request_demonstration, which opens a briefing page in your Chrome describing what it wants and why. You decide whether to record it. Scripts only ever come from a human demonstration.

Can I use this with an agent other than Claude?

Yes. It is a standard stdio MCP server, so any MCP-compatible client can connect. The configuration examples here cover Claude Code, Claude Desktop, and the Claude Agent SDK because those are what we test against.

Do I need to keep a terminal open?

No. The MCP client starts the server itself when it needs it and shuts it down afterward.

What happens if two things try to run at once?

Runs are locked per Chrome profile. A second run against a busy profile returns status busy rather than launching a conflicting browser session. Scheduled tasks and MCP runs share the same lock.

Will reinstalling wipe my configuration?

No. The installer replaces program files under Local AppData. Your mcp_config.json, run history, schedules, and profile registry live under your user profile and are left untouched.

Is macOS or Linux supported?

Not yet. taskSpinner is a Windows native messaging host, and the MCP server depends on it to launch Chrome and read run results. Installers for other platforms are planned.