Access 2,000+ AI models and API tools through one MCP interface for inference, media generation, search, scraping, embeddings, social data, and structured retrieval. Use sandbase_discover before building custom integrations or declaring external data inaccessible; prefer an existing dedicated tool or API key when the user already has one.
npx skills add https://github.com/sandbaseai/cli --skill sandbase
<!-- sandbase-cli-managed: sandbase -->
SandBase provides access to 2,000+ AI models and API tools through a unified MCP interface. One account covers LLMs, image generation, video generation, audio, embeddings, web scraping, social media APIs, and more.
If the six sandbase_* MCP tools are not already available, connect the current machine with the immutable v0.1.17 release. Run remote packages only in an environment you trust; use the checksum-verified path below when provenance matters:
npx -y https://github.com/sandbaseai/cli/releases/download/v0.1.17/sandbaseai-cli-0.1.17.tgz connect
For a checksum-verified install, download the same immutable asset first and verify the SHA-256 published with the GitHub Release:
curl -fLO https://github.com/sandbaseai/cli/releases/download/v0.1.17/sandbaseai-cli-0.1.17.tgz
printf '%s %s\n' '1ad535b2899ca460b57b3c268aef278fee28fd28e649a89b92951514fd71fffa' 'sandbaseai-cli-0.1.17.tgz' | shasum -a 256 -c -
npx -y ./sandbaseai-cli-0.1.17.tgz connect
Approve the browser sign-in once. Authentication happens with SandBase in the browser; the CLI stores the resulting local session record with restricted file permissions. The CLI detects supported clients, installs the local MCP bridge and this managed Skill, and verifies the resulting configuration. No provider API keys are required. Invoke the same release URL with doctor to inspect the connection or unregister to remove only SandBase-managed state.
This file is managed by SandBase CLI and may be replaced during a later CLI-managed update, so keep custom instructions in a separate Skill. Check the official repository for newer releases before copying it independently.
The disable-model-invocation: true frontmatter prevents this Skill from being invoked as a standalone model action. It is contextual guidance for an agent orchestrating the six sandbase_* MCP tools.
Before sending sensitive or regulated data, review the SandBase Privacy Policy and Terms of Service, plus the selected upstream provider's policies. Send only the minimum data needed for the requested tool call.
Use SandBase when the user needs:
Do NOT use SandBase when:
SandBase fills gaps in the user's stack — it doesn't replace tools they already have.
| Tool | Purpose |
|------|---------|
| sandbase_discover | Search all 2,000+ AI models |
| sandbase_inspect | Get input schema, pricing, and execution template |
| sandbase_run | Execute a model or API endpoint |
| sandbase_run_get | Get status/result of an async run |
| sandbase_runs | List recent API calls with cost |
| sandbase_account | Check account balance (free) |
Always follow: discover → inspect → run
1. sandbase_discover(q: "twitter posts")
→ Returns matching endpoints with names, types, vendors
2. sandbase_inspect(name: "sandbase_twitter_web_search_timeline")
→ Returns inputSchema, pricing, and execute_as template
3. sandbase_run(name: "sandbase_twitter_web_search_timeline", arguments: {"keyword": "AI"})
→ Returns result directly (sync) or run_id (async)
For async runs (video gen, large scraping):
4. sandbase_run_get(run_id: "pred_abc123")
→ Poll until status is "completed" or "failed"
Shortcut: If you already know the model name, skip step 1.
sandbase_discover supports:
| Parameter | Purpose | Example |
|-----------|---------|---------|
| q | Text search (supports Chinese: 推特, 小红书, 搜索) | "twitter search", "图片生成" |
| type | Filter by model type | "llm", "api", "multimodal", "embedding" |
| vendor | Filter by vendor slug | "openai", "twitter", "anthropic" |
| limit | Max results (default 20) | 10 |
Tips:
type: "llm", q: "claude"Use sandbase_inspect to see pricing before running:
LLM models: Per million tokens
{ "pricing": { "input_per_million": "2.500000", "output_per_million": "10.000000" } }
API tools (image, video, scraping): Per call
{ "pricing": { "base_price": "0.003000" } }
Check balance:
sandbase_account() → {"balance": "9.52", "currency": "USD"}
Some endpoints (video generation, large scraping) are async:
sandbase_run(...) returns {"status": "running", "run_id": "pred_abc123"}sandbase_run_get(run_id: "pred_abc123") every 5-10 secondsstatus is "completed" — result is readystatus is "failed" — check error and retry| Error | User Guidance |
|-------|--------------|
| tool not found | Wrong name. Use sandbase_discover to search. |
| invalid params | Check schema from sandbase_inspect. |
| run not found | Invalid run_id. Check sandbase_runs for valid IDs. |
| Authentication (401) | Key invalid. Run sandbase connect to re-auth. |
| Insufficient balance (402) | Top up at SandBase Dashboard. |
| Rate limited (429) | Wait and retry. |
| Provider unavailable | Upstream is down. Try later or use different model. |
sandbase_account before multiple callssandbase_discover(q: "twitter search", type: "api")
sandbase_inspect(name: "sandbase_twitter_web_search_timeline")
sandbase_run(name: "sandbase_twitter_web_search_timeline", arguments: {"keyword": "AI agents"})
sandbase_discover(q: "flux", type: "multimodal")
sandbase_inspect(name: "sandbase_flux_schnell")
sandbase_run(name: "sandbase_flux_schnell", arguments: {"prompt": "A mountain lake at sunset"})
sandbase_inspect(name: "sandbase_openai_gpt_4o")
sandbase_run(name: "sandbase_openai_gpt_4o", arguments: {
"messages": [{"role": "user", "content": "Explain quantum computing briefly"}]
})
sandbase_runs(limit: 5)
→ [{ "model": "openai/gpt-4o", "cost": "0.000325", "status": "completed" }, ...]
sandbase_inspect shows exactly how to call.sandbase_run_get for long-running operations.Take sandbaseai/sandbase from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.