New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

@sandboxapis/mcp

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sandboxapis/mcp

MCP server for SandboxAPIs — read-only, API-compatible replicas of 21 developer and SaaS APIs (GitHub, GitLab, Jira, Linear, Slack, Sentry, PagerDuty, Salesforce, CircleCI, OpenAI, Anthropic and more), preloaded with one realistic simulated data set.

latest
npmnpm
Version
0.3.13
Version published
Weekly downloads
365
-64.18%
Maintainers
1
Weekly downloads
 
Created
Source

@sandboxapis/mcp

An MCP server that gives an AI agent a realistic, read-only data set to work against — repos, pull requests, reviews, issues, sprints, commits — served through API-compatible replicas of GitHub, GitLab, Bitbucket, Azure DevOps, Jira, Linear, Slack, Microsoft Teams, Sentry, PagerDuty, Statuspage, CircleCI, Buildkite, Zendesk, Salesforce, HubSpot, Anthropic, OpenAI, ChatGPT, Cursor and Devin.

No test accounts. No credentials. No rate-limit anxiety. Nothing to clean up afterwards.

claude mcp add sandboxapis -- npx -y @sandboxapis/mcp

Then have the agent call orient first. It comes back with the API surfaces and their base URLs, the org and its teams, notable entry points (each with a ready-to-run request), how to pin a reproducible snapshot, where the coverage manifest lives, and an access block saying what this server may spend — enough to make a correct call with no docs reading.

Why this exists

Agents that build or test integrations need something real to point at. The options are usually a hand-maintained fake org that's thin and stale, or a real account with credentials, rate limits, and consequences. This is the third option: one simulated company — olympus-labs — with months of coherent history, rendered into 21 different API dialects, where every reference resolves. A pull request's author is a fetchable user, its commits exist with matching SHAs, its reviewers belong to real teams, and the same story is queryable through every host.

Everything is read-only. Writes return the provider's own error shape with a plain explanation, so an agent that tries one learns something instead of breaking something.

Tools

ToolWhat it does
orientStart here. Full self-orientation, no docs required — including access: keyed or not, the requests left this hour, and where to raise the limit.
check_budgetCosts nothing. Call it before any loop of more than a handful of requests: limit, remaining, when the window resets.
list_repositories / get_repositoryRepos, provider-shaped, with provider-form ids.
list_pull_requests / get_pull_requestPRs/MRs with their reviews or approvals.
list_issuesIssues — REST on git hosts and Jira, GraphQL on Linear.
get_userA user by login/username.
search_commits_by_authorCommits by author, with SHAs that cross-reference across hosts.
get_snapshotThe pinned hostname for drift-free CI.

Results come from the same public API a human would point a client at, so anything an agent learns here transfers directly to a curl or an Octokit call.

Configuration

Everything is optional — the server works with no configuration at all.

VariableEffect
SANDBOXAPIS_API_KEYLifts the anonymous limit (60 req/hr) to 600. Free key at sandboxapis.dev — agents exhaust 60/hr quickly. Without it, a refusal names this variable rather than a signup page; with it, a refusal names the rung the key is on. Either way the tool result carries upgrade (see below).
SANDBOXAPIS_BASE_URL_GITHUB (and _GITLAB, _BITBUCKET, _ADO, _JIRA, _LINEAR, _SLACK, _TEAMS, _SENTRY, _PAGERDUTY, _STATUSPAGE, _SALESFORCE, _HUBSPOT, _ZENDESK, _CIRCLECI, _BUILDKITE, _ANTHROPIC, _OPENAI, _CHATGPT, _CURSOR, _DEVIN)Point a surface elsewhere — a pinned snapshot host, or a self-hosted instance.

When the budget runs out

Nothing is hidden behind a limit, but every caller has an hourly window and an agent in a loop will find it. Two things make that legible without parsing prose:

  • Ask first. check_budget reads the real window — limit, remaining, seconds until it resets — through an endpoint that is exempt from the budget it reports, so the check itself is free. orient returns the same facts in its access block, so an agent that oriented already knows.
  • The refusal is data. A refused tool result keeps its {provider, path, status, body} exactly as before and adds upgrade:
{
  "provider": "github",
  "path": "/users/athena",
  "status": 403,
  "body": { "message": "API rate limit exceeded. …", "documentation_url": "…", "status": "403" },
  "upgrade": { "tier": "anonymous", "url": "https://sandboxapis.dev/upgrade?from=anonymous", "retryAfterSeconds": 600 }
}

tier is the rung that refused; url is absent when there is nothing to offer; retryAfterSeconds is present when the provider sent a Retry-After. upgrade appears on over-limit refusals only — never on a success, a coverage 404, or a read-only refusal.

Live vs. pinned

The default hosts roll forward daily, so the newest activity is always hours old — good for demos and exploration. For tests you want data that never drifts, ask get_snapshot for a pinned hostname and set the matching SANDBOXAPIS_BASE_URL_*. A snapshot regenerates byte-identically on every request, so pinned assertions hold indefinitely.

Honest boundaries

Coverage is deliberately bounded and published. An uncovered REST endpoint returns a real 404 plus an X-SandboxAPIs-Coverage header pointing at the coverage manifest; an uncovered GraphQL field returns an explicit coverage error rather than a silent null. You will never get a plausible-looking invented value.

This package is a thin client: it holds no data of its own and reads the hosted service over the network.

Docs: sandboxapis.dev/docs/mcp · Coverage: sandboxapis.dev/coverage

Keywords

mcp

FAQs

Package last updated on 14 Sep 2026

Related posts