# io.github.fetchsandbox/mcp (npm · fetchsandbox-mcp)

Stateful OpenAPI sandbox for AI agents to validate API integrations end-to-end.

- Trust score: 67/100 (medium)
- Change this week: +24
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `fetchsandbox-mcp`: 67/100 (this document), [markdown](https://verifymcp.io/servers/fetchsandbox-mcp/fetchsandbox-mcp.md), [page](https://verifymcp.io/servers/fetchsandbox-mcp/fetchsandbox-mcp)

## Channel facts

- Registry: `npm`
- Package: `fetchsandbox-mcp`
- Version: `0.3.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 7 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1198 tokens (~199/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add fetchsandbox-mcp -- npx -y fetchsandbox-mcp
```

### Codex

```bash
codex mcp add fetchsandbox-mcp -- npx -y fetchsandbox-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "fetchsandbox-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "fetchsandbox-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add fetchsandbox-mcp --command npx --arg -y --arg fetchsandbox-mcp
```

### Hermes

```yaml
mcp_servers:
  fetchsandbox-mcp:
    command: "npx"
    args: ["-y", "fetchsandbox-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "fetchsandbox-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "fetchsandbox-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 67, −3)

No change was recorded against any check on this day. Supply Chain Security went from 97 to 86. Other categories moved too: Stability & Change Management rose 4.

### 2026-08-02 (score 70, +65)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional] Licence: MIT

### 2026-08-01 (score 5, −14)

- [functional regression] Tool coverage: 100 → unverified

### 2026-07-31 (score 19, −6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 25, +1)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 24, −19)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 43)

First indexed and scored.

## MCP tools (6)

### `list_specs` (~175 tokens)

Browse the FetchSandbox spec catalog — every API (Stripe, GitHub, Twilio, Notion, OpenAI, Polar, GitLab, and 40+ more) that has a ready-to-use sandbox with curated workflows. Use when the user asks 'what APIs do you support?', 'what specs are available?', 'show me the catalog', 'do you have <X>?', or wants to explore before committing to one. Returns each spec's slug (use as `name` arg to import_spec), description, endpoint count, and tags. Pass `filter` to narrow by substring (e.g., filter='pay' returns Stripe, Paddle, Polar).

Input parameters:

- `filter` (string): Optional case-insensitive substring filter. Matches against spec name, slug, description, and tags. Omit to return the full catalog.

### `import_spec` (~319 tokens)

Ingest an OpenAPI spec and get a working sandbox you can call immediately. REQUIRED: pass EITHER `url` OR `content` — never just `name` alone (name is a display label, not a lookup). If the user mentions a popular API by name (Stripe, GitHub, Twilio, Notion, OpenAI, etc.), FIRST call `list_specs` with a filter to confirm it's in the catalog, then call import_spec with that vendor's public OpenAPI URL (e.g. Stripe: https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json). The backend content-hashes the spec and auto-matches to the bundled sandbox when applicable. Returns sandbox_id, workflows_preview, and a base_url that proxies schema-validated responses. Private URLs (localhost, 10.x, 192.168.x) are rejected by the backend — use `content` to paste those inline.

Input parameters:

- `content` (string): Pasted OpenAPI spec content (JSON or YAML). Use this when the user pastes the spec inline or has it on disk. Provide the raw text exactly.
- `name` (string): Optional DISPLAY label only — NOT a lookup key. Defaults to info.title from the spec. To resolve a known API by name ("Stripe", "GitHub"), call list_specs first.
- `url` (string): Public URL to an OpenAPI 3.x file (JSON or YAML). Use this for any publicly reachable spec — GitHub raw links, docs portals, vendor SDKs.

### `list_workflows` (~138 tokens)

List the named, runnable workflows for a previously-imported spec. Workflows are realistic multi-step API journeys (e.g. 'create customer → attach payment method → create subscription'). Use this after import_spec for exploration ("what can I do?", "show me the flows") OR before run_all_workflows when the user wants a SCOPED validation: list, filter by user intent ("checkout", "webhooks"), then pass the matching ids as `workflow_names` to run_all_workflows. Returns: id, name, description, and step count per workflow.

Input parameters:

- `spec_id` (string, required): The spec_id returned by import_spec.

### `run_all_workflows` (~247 tokens)

Execute EVERY workflow (or a scoped subset) for a sandbox in ONE call. Use this — NOT a loop of run_workflow — for any validation-style request: "validate this integration", "run all workflows", "check coverage", "test stripe checkout", "fs validate". IDEs (Cursor, Claude Code) approve each MCP call individually, so 18 workflows via run_workflow = 18 clicks. This tool = 1 click, total. Scope via `workflow_names`: pass an array of workflow ids to run a subset (e.g., user says "validate stripe CHECKOUT" → pass ["create_checkout_session", "checkout_complete"]). Names are case-insensitive; dashes and underscores interchangeable. Returns: summary (pass/fail counts, totals) + full step trace per workflow. After running, the user can visit fetchsandbox.com/runs/<sandbox_id> for a shareable visual timeline.

Input parameters:

- `sandbox_id` (string, required): The sandbox_id returned by import_spec.
- `workflow_names` (array): Optional list of workflow ids/names to run. Case-insensitive; dashes and underscores are interchangeable. Omit to run every workflow for the spec.

### `run_workflow` (~170 tokens)

Execute ONE specific workflow by name and return its step-by-step trace. Use ONLY when the user explicitly names a single workflow to run (e.g., "run accept_payment", "just check the refund workflow"). For ANY validation-style request — "validate stripe", "check coverage", "run all workflows", "test this integration", or even "validate stripe checkout" (multiple workflows match "checkout") — use `run_all_workflows` instead. The batch tool collapses N approvals to 1 and supports a workflow_names filter for scope. Calling this in a loop is an anti-pattern.

Input parameters:

- `sandbox_id` (string, required): The sandbox_id returned by import_spec.
- `workflow_name` (string, required): Workflow id or name from list_workflows. Case-insensitive; dashes and underscores are interchangeable.

### `list_runs` (~149 tokens)

List recent workflow runs (and ad-hoc traffic) for a sandbox, newest first. Use when the user asks 'what did I run', 'show me recent validation runs', 'did the stripe test pass earlier', or wants to find a previous run to share or re-inspect. Each run includes its shareable timeline URL (fetchsandbox.com/runs/<sandbox_id>) so the user can open the visual trace in a browser or drop it in Slack / a PR comment. Requires sandbox_id (from import_spec).

Input parameters:

- `limit` (number): Max number of runs to return (default 20, server may cap).
- `sandbox_id` (string, required): The sandbox_id returned by import_spec.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/fetchsandbox-mcp/fetchsandbox-mcp#diagnostics

## Score history

- 2026-08-03: 67
- 2026-08-02: 70
- 2026-08-01: 5
- 2026-07-31: 19
- 2026-07-30: 25
- 2026-07-28: 24
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/fetchsandbox-mcp
- Socket report: https://socket.dev/npm/package/fetchsandbox-mcp
- Repository: https://github.com/fetchsandbox/mcp
- Changelog RSS feed: https://verifymcp.io/servers/fetchsandbox-mcp/fetchsandbox-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/fetchsandbox-mcp/fetchsandbox-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/fetchsandbox-mcp/fetchsandbox-mcp
