@marupelkar/vaaya-mcp
v1.10.1
Published
Stdio MCP server for [Vaaya](https://vaaya.io), the agent payment system. Lets an MCP client (Codex CLI, opencode, or any other stdio MCP host) call paid APIs through Vaaya's proxy endpoints on the user's behalf — the agent never sees upstream URLs or API
Readme
@marupelkar/vaaya-mcp
Stdio MCP server for Vaaya, the agent payment system. Lets an MCP client (Codex CLI, opencode, or any other stdio MCP host) call paid APIs through Vaaya's proxy endpoints on the user's behalf — the agent never sees upstream URLs or API keys.
Install
// mcp.json
{ "mcpServers": { "vaaya": { "command": "npx", "args": ["-y", "@marupelkar/vaaya-mcp"] } } }On the first tool call the shim opens a browser tab pointed at Vaaya's
OAuth authorize endpoint. After you approve, a refresh token is written to
${env-paths.config}/vaaya/credentials with 0o600 mode and reused across
sessions.
Configuration (optional)
| Env var | Default | Purpose |
| --- | --- | --- |
| VAAYA_BACKEND_URL | https://vaaya.io | Backend origin (override for self-hosting / preview deploys). |
| VAAYA_DEBUG | unset | Set to 1 to print the OAuth authorize URL to stderr. |
| VAAYA_NON_INTERACTIVE | unset | Set to 1 to suppress the automatic browser open (you still get the URL on stderr). |
CLI commands
vaaya-mcp logout # forget local credentials
vaaya-mcp reauthorize # re-run the OAuth flow (e.g. to add scopes)Tools exposed to the agent
consult(message)— ask which registered service+action fits the task.use(service, action, params, max_cost_cents)— call a registered Vaaya service; bills the user's wallet on success.logout— same as the CLI command.reauthorize— same as the CLI command.
The tool list is proxied from the backend, so new server-side tools appear without a shim upgrade.
What you can call (1.8.0 catalog)
Most vendors are pay-per-call on x402 (USDC on Base) or MPP (Stripe SPT
or Tempo chain) — the payment IS the auth. fal is on the REST rail
(Vaaya holds the key). Either way you supply no per-vendor API keys. Highlights:
- Image & video:
fal / generate(REST — Nano Banana Pro 2, GPT Image 2, Seedream v4.5, Kling v3, Seedance 2.0) - Search:
exa / search · contents,parallel / search · extract · task - Scraping:
firecrawl / scrape · crawl · map · search · extract(MPP / Tempo) - Compute sandboxes:
modal / sandbox-{create,status,terminate}(MPP / Tempo) - Browser automation:
browserbase / create_session · … - Email:
agentmail
The shim ships the full agent skill alongside the binary — your client will
auto-load skills/vaaya/SKILL.md + the category files (compute.md,
web-search.md, web-scraping.md, etc.) which document params, prices, and
gotchas per action.
When Claude Code is detected, the installer also wires two always-on triggers
(both idempotent, both respect --dry-run):
- a marker-delimited Vaaya section in
~/.claude/CLAUDE.md(<!-- vaaya:begin -->…<!-- vaaya:end -->— content outside the markers is never touched), and - a
UserPromptSubmithook in~/.claude/settings.jsonthat injects a one-line reminder that Vaaya exists for any capability gap.
Revoking a grant
Visit /connected-apps
on Vaaya, find the connection, and click Disconnect. The next time
the agent makes a request, the shim re-enters the OAuth flow.
