Your agent already
knows Squiid.
One key, every service, and the tools an agent needs to see what is callable, what it costs and what a new project needs. Install it once and your coding agent stops asking you for accounts.
One command, your key, and the agent can see the whole catalog. Pick your client.
claude mcp add squiid -e SQUIID_API_KEY=sq_live_… -- npx -y @squiid/mcp
Claude Desktop, VS Code and Windsurf take the same server in their own config file: the command, args and an env block with SQUIID_API_KEY. Without a key the server writes one line to stderr and exits, so the client tells you why instead of hanging.
How it works
An MCP server is a small local process your agent talks to. This one is a thin, honest wrapper over the Squiid gateway: it never holds a provider credential, and it never decides to spend.
Install it with your key
One line in your client, with SQUIID_API_KEY in the server's environment. The key is created by you in the console, with a scope and a spend cap already on it.
The agent calls tools over stdio
The server runs locally and speaks MCP over stdio. Every tool call it makes goes on to api.squiid.io with that one key, and the gateway enforces the key's scope, cap and rate limit before the request leaves.
You watch the spend in the console
Requests, prices and the balance land in the console as they happen. balance and request_cost let the agent see the same numbers, so it can tell you what a call cost.
The tools
Eight of them. Every result comes back as two blocks: one line to read out loud, then compact JSON to act on.
| Tool | Arguments | What it answers |
|---|---|---|
start_project |
name stack? needs? purpose? monthly_budget_usd? |
Which services a new project needs, and a console link to review them and create the key. Creates nothing. |
list_services |
category? class? status? query? |
Every service, with class · category · status · what it is priced by. |
get_service |
slug |
One service, and exactly how to call it through Squiid. |
provision Rolling out |
service name region? |
Create an isolated resource: a database, a bucket, a sub-account. |
get_credentials Rolling out |
id |
That resource's credentials, env-var shaped. |
usage |
since? |
Spend and recent requests. Falls back to the balance while GET /v1/usage rolls out. |
balance |
none | Balance in USD, with the org and the key behind this key. |
request_cost |
request_id |
What one request cost, by its x-sq-request-id. |
Starting a project from your IDE
An MCP server cannot watch your editor, so "this looks like a new project" is a job for the model, not the server. Two things make it happen.
start_project is a tool whose description says when to call it: at the start of a new project or scaffold, when a task needs a service the repo has no account for (no DATABASE_URL, no email provider, no model key) or when you ask what services you need.
The new-project prompt is the manual version. Invoke it by hand (/squiid:new-project in Claude Code) and the model reads the package manifest, .env.example and the README, calls start_project with what it found, and shows you the result.
agent › (new repo: next, prisma, stripe, resend in package.json)
start_project({ name: "anvil-web", stack: ["next", "prisma", "postgres", "stripe", "resend"],
needs: "send receipts, take payments", purpose: "app", monthly_budget_usd: 25 })
← anvil-web · 3 services recommended (neon, stripe, resend) · balance $142.18 ·
review and create the key at https://squiid.io/keys/new?name=anvil-web&services=neon,
stripe,resend&cap=25&purpose=app&source=mcp: this tool created nothing
What comes back is recommended, alternatives, your balance_usd, next_steps and a console_url, a deep link into the console's new-project flow:
<console>/keys/new?name=<urlenc>&services=<comma slugs>&cap=<int USD>&purpose=<…>&source=mcp
You open that link. You drop the services the project does not need, you set the monthly spend cap, and you create the key: Squiid shows it once. You paste it back into the project as SQUIID_API_KEY and into the agent's MCP config. Then the agent calls list_services or get_service to learn exactly how to call each one.
What the agent never does
- It never signs up for an account: not with Squiid, not with a provider.
- It never creates an API key, and never raises the cap on the one it has.
- It never tops up the wallet or moves money.
start_projectreturnscreated: false, every time. It proposes; you approve.
A key is a policy
That split (the agent proposes, the human approves) is the whole security model, and it only works because a Squiid key carries its limits with it. A key is not a password that unlocks everything you own. It is a policy the gateway enforces on every request before it leaves.
Give an agent a key with a spend cap and the services it needs, and nothing else. If the agent goes wrong, or a prompt injection convinces it to try something silly, the worst it can reach is what that policy allows. Revoke it and the resources it created are untouched.
What rides on the key
Set at creation, in the console, by a person. Enforced at the gateway, before a request leaves.
Spend controlsQuestions people ask
Which clients does it work with?
Any MCP client. Claude Code, Codex and Gemini CLI take a one-line mcp add; Cursor, Claude Desktop, VS Code and Windsurf declare the same server in their config file with command, args and an env block. There is one server and it is the same everywhere.
Does the MCP server cost anything?
No. @squiid/mcp is free and so are the tool calls that only read: listing services, reading the balance, pricing a request. You pay for the provider calls your project actually makes, from prepaid credits, at the provider price.
What happens to my secrets?
There is one secret: SQUIID_API_KEY, in the MCP server's environment. Squiid holds the upstream provider credentials, so no provider key is ever on your machine, in your .env, or in a prompt the agent can read back.
Can the agent provision a database?
Not yet. provision and get_credentials are rolling out and today return a not_implemented explanation that points the agent at a service it can call right now. Instant services work today: the gateway convention is the same for all of them.
Can the agent spend my money or make new keys?
No. An agent key can never mint another key, sign up for anything, or top up the wallet. A key is a policy (scope, spend cap and rate limit) and the gateway enforces it. Key creation and top-ups stay behind a human in the console.
How do I revoke a key?
Revoke it in the console and every call it was making stops at the gateway. Revoking a key never touches your resources: the data, the databases and the provider accounts are untouched, and a new key with a different policy picks up where it left off.
Set it up in your agent
The per-agent pages carry the exact config file, the exact flag and the convention to put in your project rules.
Get your key.
Then install the server.
One account, one key, one bill and one dashboard for every service your project needs, and eight tools so your agent can see all of it.