{
  "markdown": "# fetchsandbox-mcp\n\nTurn any OpenAPI spec into a working sandbox your AI agent can use, right from your IDE.\n\nThis is the Model Context Protocol (MCP) server for [FetchSandbox](https://fetchsandbox.com). It exposes three tools that let any MCP-compatible agent ingest an OpenAPI spec, list its workflows, and run them — with realistic, schema-validated responses for every endpoint.\n\n> ⭐ **If FetchSandbox saves you a debugging session, star this repo.** It helps people find the project and helps us prioritize what to build next.\n\n## Why\n\nAgents read raw OpenAPI specs and hallucinate. They guess field names, invent IDs that won't exist, and produce broken curl commands. FetchSandbox turns the spec into a stateful, AJV-validated sandbox so the agent can actually call the API and see real-shaped responses.\n\nPlug it into your IDE once, and any time you ask your agent \"let me try the Stripe API\" or \"show me the GitHub issue lifecycle,\" it can do that — for real, end-to-end.\n\n## Install — by agent\n\nThe MCP runs as a stdio process spawned by your IDE. There's nothing to install globally — `npx` runs the published version on demand. We recommend pinning to `@latest` so each session auto-upgrades to the current release; otherwise npm caches the first version it saw and silently drifts behind.\n\nPick your tool below, paste the snippet, restart.\n\n### Claude Desktop\n\nFile: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows)\n\n```json\n{\n  \"mcpServers\": {\n    \"fetchsandbox\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fetchsandbox-mcp@latest\"]\n    }\n  }\n}\n```\n\nQuit and reopen Claude Desktop (Cmd+Q, then reopen — not just close window).\n\n### Claude Code\n\nUser-level (all projects): `~/.claude/settings.json`. Or project-level: `.mcp.json` in the repo root.\n\n```json\n{\n  \"mcpServers\": {\n    \"fetchsandbox\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fetchsandbox-mcp@latest\"]\n    }\n  }\n}\n```\n\nRestart the Claude Code session.\n\n### Cursor\n\nFile: `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project)\n\n```json\n{\n  \"mcpServers\": {\n    \"fetchsandbox\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fetchsandbox-mcp@latest\"]\n    }\n  }\n}\n```\n\nRestart Cursor.\n\n### Cline (VS Code extension)\n\nOpen the Cline panel → settings cog → MCP Servers → add a new server with:\n\n- Command: `npx`\n- Args: `-y fetchsandbox-mcp@latest`\n\nReload the VS Code window.\n\n### Continue.dev\n\nFile: `~/.continue/config.yaml`\n\n```yaml\nmcpServers:\n  - name: fetchsandbox\n    command: npx\n    args:\n      - -y\n      - fetchsandbox-mcp@latest\n```\n\nRestart your IDE.\n\n### Codex CLI (OpenAI)\n\nFile: `~/.codex/config.toml`\n\n```toml\n[mcp_servers.fetchsandbox]\ncommand = \"npx\"\nargs = [\"-y\", \"fetchsandbox-mcp@latest\"]\n```\n\nRestart Codex.\n\n### Zed\n\nFile: `~/.config/zed/settings.json`\n\n```json\n{\n  \"context_servers\": {\n    \"fetchsandbox\": {\n      \"command\": {\n        \"path\": \"npx\",\n        \"args\": [\"-y\", \"fetchsandbox-mcp@latest\"]\n      }\n    }\n  }\n}\n```\n\n### GitHub Copilot\n\nGitHub Copilot doesn't currently support the Model Context Protocol. Track [github/copilot#feedback](https://github.com/orgs/community/discussions) for updates. In the meantime, run any MCP-compatible chat (Claude Code, Cursor, Cline) alongside Copilot.\n\n### Anything else (Roo, Goose, etc.)\n\nIf your agent speaks MCP, it accepts a stdio command. Use:\n\n- Command: `npx`\n- Args: `[\"-y\", \"fetchsandbox-mcp@latest\"]`\n\n## Try it now\n\nAfter restarting your agent, paste any of these prompts. Each hits a hand-curated workflow with realistic IDs and real state transitions.\n\n### Stripe — accept a payment\n\n> Use fetchsandbox to import the Stripe spec from `https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json` and run the `accept_payment` workflow. Show me the trace.\n\nThe agent imports 587 endpoints, matches the bundled curated Stripe sandbox, and runs a 6-step workflow: create customer (`cus_…`) → create PaymentIntent (`pi_…`, `$49.99 USD`, `requires_payment_method`) → confirm (`requires_capture`) → capture (`succeeded`) → retrieve → verify webhooks (`payment_intent.created`, `payment_intent.succeeded`).\n\n### Twilio — send an SMS\n\n> Use fetchsandbox to import the Twilio Messaging spec from `https://raw.githubusercontent.com/twilio/twilio-oai/main/spec/yaml/twilio_messaging_v1.yaml` and run the `send_sms` workflow.\n\nThe agent imports the messaging API and runs a curated send-and-verify flow with realistic Twilio-formatted message SIDs (`SM…`).\n\n### GitHub — issue lifecycle\n\n> Use fetchsandbox to import the GitHub REST API from `https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json` and run the `issue_lifecycle` workflow.\n\nThe agent walks the create → comment → close → reopen flow against a real-shaped GitHub sandbox.\n\n### Paddle — paste-content variant\n\nIf a vendor doesn't publish their spec at a stable URL (Paddle, Notion, Linear), paste the content directly:\n\n> Here's the Paddle Billing OpenAPI spec — `<paste JSON or YAML>`. Use fetchsandbox to import it and run the `subscriptions_canceled` workflow.\n\nSame engine path; same curated quality if the spec's `info.title` matches a bundled config.\n\n### Any other API\n\n> Use fetchsandbox to import `<your OpenAPI URL>` — list the workflows and tell me which is most interesting.\n\nFor specs we don't have curated configs for, the engine auto-enumerates `create + verify` workflows for every detected resource. Honest about what it shows: UUIDs instead of vendor-style IDs, generic enum values instead of API-specific ones — but the request/response shape and template substitution between steps still work.\n\n## Tools\n\n### `import_spec`\n\nIngest an OpenAPI 3.x spec and get a sandbox you can call. Pass either a public URL or pasted content.\n\n```\nurl:     \"https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json\"\ncontent: \"<paste OpenAPI JSON or YAML here>\"\nname:    \"Optional friendly name\"\n```\n\nReturns `spec_id`, `sandbox_id`, `base_url` (proxy that serves real-shaped responses), `workflows_preview` (first 10), `matched_bundled` (true if we matched a curated config), and a `dashboard_url` to view everything in the browser.\n\n### `list_workflows`\n\nList the named, runnable workflows the engine inferred or curated for an imported spec.\n\n```\nspec_id: \"<id from import_spec>\"\n```\n\n### `run_workflow`\n\nExecute one workflow and return the step-by-step request/response trace. Template variables (`{{step1.id}}`) are resolved automatically between steps. The response now includes a `share_url` per run — a public receipt URL you can paste into a PR or share with a teammate.\n\n```\nsandbox_id:    \"<id from import_spec>\"\nworkflow_name: \"<id or name from list_workflows>\"\n```\n\n## Configuration\n\n| Env var | Default | Purpose |\n|---|---|---|\n| `FETCHSANDBOX_BASE_URL` | `https://fetchsandbox.com` | Override for stage testing or self-hosted backends. |\n| `FETCHSANDBOX_TELEMETRY` | (on) | Set to `0` to disable anonymous usage telemetry. |\n\n### What we record\n\nWhen telemetry is on, each tool call records: an opaque per-machine session id (random UUID stored at `~/.fetchsandbox/session.json`), the tool name, latency, success/failure, and the spec URL or `\"pasted\"`. We do **not** record spec content, request bodies, or credentials. We use this to count daily-active sessions and learn which APIs people are bringing to the platform.\n\nTo opt out:\n\n```bash\nexport FETCHSANDBOX_TELEMETRY=0\n```\n\n## Want to see it catch real bugs?\n\nTry the **[FetchSandbox Playground](https://github.com/fetchsandbox/playground)** — five small brownfield apps with planted bugs in real API integrations (Stripe webhook dedup, Resend bounce drops, Clerk JWT verification, AgentMail attachment handling, Surge opt-out). Clone, run, point your agent at one, and see whether FetchSandbox catches the bug. PRs with your session findings welcome.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n## Links\n\n- [FetchSandbox](https://fetchsandbox.com) — main site, docs, dashboard\n- [Playground](https://github.com/fetchsandbox/playground) — try it on planted bugs\n- [npm package](https://www.npmjs.com/package/fetchsandbox-mcp) — `npx fetchsandbox-mcp@latest`\n- [Issues](https://github.com/fetchsandbox/mcp/issues) — bug reports, feature asks\n",
  "bytes": 8321,
  "sha": "ccc11b5cfaff4dd6cee0012e935aec79c8febae2a98857947838950776648872",
  "repo_slug": "fetchsandbox/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_fetchsandbox_mcp_25da896a/readme"
}