- Ask your agent. With the server connected (Claude Code, Codex, Cursor, a Claude custom connector, …), say the thing — “revoke the CI key that hasn’t been used in 30 days” — and the agent picks the operation, resolves the ids, and walks the consent flow. Every section lists example asks.
- Call it yourself. Every operation is one JSON-RPC
tools/callPOST. Copy any snippet below.
The call, once
All snippets share this exact shape — only the JSON body changes:curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"<tool>","arguments":{…}}}'
*-query tool as {"query": {"action": …, "input": {…}}};
writes go through *-action as {"proposal": {"action": …, "input": {…}}}. Replace
<…-uuid> placeholders with real ids — always resolved from a query tool first, never
guessed.
How each operation runs (the Runs column below):
| Runs | Meaning |
|---|---|
| immediately | Executes on the call and returns {"status": "executed", "ok": …, "message": …} (queries return {"ok", "message", "data"}) |
| after confirm | Returns needs_confirmation with a 10-minute confirmToken; show the summary to a human, then repeat the call with "confirmToken" added to the arguments |
| portal link | Returns portal_redemption with a 15-minute link; the secret renders once in the signed-in portal, never over the API — see consent and secrets |
personal-*; team leads add their subtree’s membership and
budget actions; enterprise admins get everything on this page. Ids in parentheses after each
heading are the exact tool names (they surface in Claude Code as mcp__aireserve__<tool>).
Identity & catalog (whoami, list-models, get-model, get-connection-guide)
Fixed read tools, available to every role with mcp:read.
“Who is this connection signed in as?” · “Which models can we use right now, and what do they cost?” · “Is deepseek-v3.2 blocked for our org?” · “Give me the base URLs and rate limits for pointing our SDK at the gateway.”
| Tool | What it returns | Runs |
|---|---|---|
whoami | Acting account, organization, role, authority level, token scopes and expiry | immediately |
list-models | Every gateway chat model with live pricing (USD per 1M tokens), latency/reasoning traits, org blocklist status, and the org default | immediately |
get-model | One model by id: pricing, traits, reasoning notes, org availability | immediately |
get-connection-guide | Gateway base URLs, wire-compatible endpoints (OpenAI, Anthropic, Bedrock), env-var conventions, the org’s effective rate limits, guided connect pages | immediately |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"whoami","arguments":{}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list-models","arguments":{}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get-model","arguments":{"modelId":"claude-sonnet-4-6"}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get-connection-guide","arguments":{}}}'
list-models entry looks like:
{
"id": "claude-sonnet-4-6",
"name": "Claude Sonnet 4.6",
"provider": "Anthropic",
"latency": "medium",
"reasoning": "advanced",
"blocked": false,
"pricing": { "inputPer1mTokens": 3, "outputPer1mTokens": 15 }
}
One-shot inference (send-message)
Requires the mcp:messages scope. Sends one prompt through the gateway as the connected
user — billed, rate-limited, and visible in usage analytics exactly like their own
traffic. Respects the org’s model policy (blocked models are refused; omitted modelId
uses the org default).
“Ask kimi-k2 to summarize this changelog.” · “Run this prompt against the org default model.”
| Input | Type | Notes |
|---|---|---|
prompt | string, required | Up to 32,000 characters |
modelId | string | From list-models; defaults to the org default model |
system | string | Optional system prompt, up to 8,000 characters |
maxOutputTokens | int | 1–8,192; default 1,024 |
send-message
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"send-message","arguments":{"prompt":"One sentence: what is an LLM gateway?","modelId":"claude-sonnet-4-6","maxOutputTokens":200}}}'
{ "model", "text", "finishReason", "usage": { "inputTokens", "outputTokens" } }.
Budget refusals are relayed in plain language (spend cap reached, wallet balance too low).
Personal (personal-query, personal-action)
Every role. The caller’s own usage, budget, keys, and preferences.
“How much have I spent this week, and on which models?” · “List my API keys with 30-day usage and revoke the one I stopped using.” · “Make gemini-3-flash my default model.”
| Operation | What it does | Runs |
|---|---|---|
get_my_usage_summary | Usage for your visible scope (self / team / org by role): totals, top models, active users, spend leaderboard; 1, 7, or 30 days; admins and team leads can drill into a team or member | immediately |
get_my_budget_status | Your spend cap and team budget with remaining headroom | immediately |
list_my_api_keys | Your API keys, masked, with ids and optional 30-day request counts | immediately |
create_api_key | Mint a personal inference key | portal link |
revoke_api_key | Revoke one of your own keys (irreversible) | after confirm |
set_default_model | Set or clear (null) your personal default chat model | immediately |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"personal-query","arguments":{"query":{"action":"get_my_usage_summary","input":{"days":7}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"personal-query","arguments":{"query":{"action":"get_my_budget_status","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"personal-query","arguments":{"query":{"action":"list_my_api_keys","input":{"includeUsage":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"personal-action","arguments":{"proposal":{"action":"create_api_key","input":{"name":"CI pipeline"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"personal-action","arguments":{"proposal":{"action":"revoke_api_key","input":{"keyId":"<key-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"personal-action","arguments":{"proposal":{"action":"set_default_model","input":{"modelId":"claude-sonnet-4-6"}}}}}'
Organization API keys (api-keys-query, api-keys-action)
Enterprise admins. The org’s gateway credentials: listing, usage, minting, revocation,
compaction, and live self-tests.
“List all our API keys and flag the ones idle for 30 days.” · “Mint an org key named ‘ETL prod’ bound to Priya for attribution.” · “Revoke key 4354cccc — verify the id against the list first.” · “Run a test ping through the new key.”
| Operation | What it does | Runs |
|---|---|---|
list_client_api_keys | Every org key — id, masked key, binding (user / team / organization), status, last use | immediately |
get_client_api_key_usage | Per-key request/token/cost totals, optional startDate/endDate | immediately |
get_client_api_key_trends | 30-day request count and last-use per key — idle-key detection | immediately |
check_copilot_key_traffic | Whether a Copilot connect key has served traffic beyond its self-test | immediately |
create_client_api_key | Mint an org key, optionally bound to a member (userId) for attribution and user-scope quota | portal link |
create_team_api_key | Mint a team-scoped key | portal link |
revoke_client_api_key | Revoke any org key (irreversible) | after confirm |
set_api_key_compaction | Toggle always-on context compaction for one key | immediately |
test_api_key | One-token live ping through a key — verifies auth, model policy, caps, provider (a real metered call) | immediately |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-query","arguments":{"query":{"action":"list_client_api_keys","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-query","arguments":{"query":{"action":"get_client_api_key_usage","input":{"startDate":"2026-08-01","endDate":"2026-08-19"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-query","arguments":{"query":{"action":"get_client_api_key_trends","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-query","arguments":{"query":{"action":"check_copilot_key_traffic","input":{"keyId":"<key-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-action","arguments":{"proposal":{"action":"create_client_api_key","input":{"name":"ETL prod","userId":"<user-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-action","arguments":{"proposal":{"action":"create_team_api_key","input":{"teamId":"<team-uuid>","name":"Data science shared"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-action","arguments":{"proposal":{"action":"revoke_client_api_key","input":{"keyId":"<key-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-action","arguments":{"proposal":{"action":"set_api_key_compaction","input":{"keyId":"<key-uuid>","enabled":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"api-keys-action","arguments":{"proposal":{"action":"test_api_key","input":{"keyId":"<key-uuid>"}}}}}'
Key minting is always a portal link — the fresh secret renders once in the signed-in
portal and never crosses the API. The two-step flow exists so an LLM-driven channel can
never exfiltrate a live credential.
Members (members-query, members-action)
Enterprise admins (invite_user also team leads, restricted to regular users on a team in
their subtree). Account directory, per-member usage, invitations, roles, lifecycle.
“Invite ada@acme.com to the Data team and send her the onboarding email.” · “Who are our top spenders this month, by model?” · “Deactivate Sam’s account.” · “Promote Priya to enterprise admin.” · “Send Marco a password reset.”
| Operation | What it does | Runs |
|---|---|---|
list_org_users | Search accounts (email/name), filter by role, include inactive and soft-deleted, paged | immediately |
get_member_usage_totals | Token and spend totals for up to 25 members by id | immediately |
get_member_usage_by_model | One member’s usage broken down by model | immediately |
get_shared_key_usage | Usage from shared org/team keys attributed to no user | immediately |
get_shared_key_usage_by_model | The same, broken down by model | immediately |
invite_user | Create an account (role user or enterprise_admin, optional team) and optionally email the sign-in link | after confirm |
update_member_profile | Edit name, phone, address, contact notes | immediately |
assign_member_team | Move a member onto a team, or null for Unassigned | immediately |
set_member_active | Activate or deactivate an account (deactivation locks out every session) | after confirm |
set_user_org_role | Promote/demote between user and enterprise_admin (forces re-sign-in) | after confirm |
delete_user | Soft-delete the account and permanently purge their stored conversations | after confirm |
restore_user | Restore a soft-deleted account and email a fresh sign-in link | after confirm |
send_password_reset | Email a live password-reset link | after confirm |
send_onboarding_email | Send or resend the onboarding email | after confirm |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-query","arguments":{"query":{"action":"list_org_users","input":{"search":"ada"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-query","arguments":{"query":{"action":"get_member_usage_totals","input":{"userIds":["<user-uuid>"],"startDate":"2026-08-01","endDate":"2026-08-19"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-query","arguments":{"query":{"action":"get_member_usage_by_model","input":{"userId":"<user-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-query","arguments":{"query":{"action":"get_shared_key_usage","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-query","arguments":{"query":{"action":"get_shared_key_usage_by_model","input":{"teamId":"<team-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"invite_user","input":{"email":"ada@acme.com","name":"Ada Park","role":"user","teamId":"<team-uuid>","sendOnboardingEmail":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"update_member_profile","input":{"userId":"<user-uuid>","name":"Ada Park-Reyes"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"assign_member_team","input":{"userId":"<user-uuid>","teamId":"<team-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"set_member_active","input":{"userId":"<user-uuid>","active":false}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"set_user_org_role","input":{"userId":"<user-uuid>","role":"enterprise_admin"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"delete_user","input":{"userId":"<user-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"restore_user","input":{"userId":"<user-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"send_password_reset","input":{"userId":"<user-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"send_onboarding_email","input":{"userId":"<user-uuid>"}}}}}'
Teams & budgets (teams-budgets-query, teams-budgets-action)
Enterprise admins; team leads can move members within their own subtree, allocate budget to
teams strictly below their own node, and grant/revoke manager status inside their org.
The envelope model: org cap → team allocations → Unassigned pool → per-user caps.
“Create a Research sub-team under Engineering and give it 2,000."∗⋅∗"Showtheallocationtable—whohasheadroom?"∗⋅∗"CapAnnaat150 with 60 requests a minute.” · “Move these five people to Platform.” · “Make Jordan a manager.”
| Operation | What it does | Runs |
|---|---|---|
get_team_allocations | The full budget table: org cap, per-team allocations and spend, Unassigned pool, headroom | immediately |
list_user_spend_caps | Per-user caps with lifetime spend (only capped users appear) | immediately |
get_client_spend_summary | Org-wide cap, current spend, budget period | immediately |
create_team | New team, optionally under parentTeamId | immediately |
rename_team | Rename a team | immediately |
delete_team | Delete an empty team (refused while it has members or sub-teams) | after confirm |
assign_user_to_team | Move one member to a team or Unassigned (null; admins only for Unassigned) | immediately |
bulk_assign_users_to_team | Move up to 25 members atomically | after confirm |
set_team_cap | Set a team’s total (subtree) allocation in USD | immediately |
remove_team_cap | Remove a team’s explicit allocation | immediately |
set_unassigned_pool_cap | Cap the Unassigned pool | immediately |
remove_unassigned_pool_cap | Team-less users fall back to the org cap | immediately |
set_user_boss_status | Grant or dissolve a member’s manager role (their own org node) | after confirm |
set_user_spend_cap | Personal spend cap in USD, optional requests/minute and requests/day | immediately |
remove_user_spend_cap | Back to team/org limits | immediately |
set_client_spend_cap | Set or clear (null) the org-wide ceiling — all traffic stops when reached | after confirm |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-query","arguments":{"query":{"action":"get_team_allocations","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-query","arguments":{"query":{"action":"list_user_spend_caps","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-query","arguments":{"query":{"action":"get_client_spend_summary","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"create_team","input":{"name":"Research","parentTeamId":"<team-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"rename_team","input":{"teamId":"<team-uuid>","name":"Applied Research"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"delete_team","input":{"teamId":"<team-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"assign_user_to_team","input":{"userId":"<user-uuid>","teamId":"<team-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"bulk_assign_users_to_team","input":{"userIds":["<user-uuid>","<user-uuid>"],"teamId":"<team-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"set_team_cap","input":{"teamId":"<team-uuid>","budgetLimitUsd":2000}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"remove_team_cap","input":{"teamId":"<team-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"set_unassigned_pool_cap","input":{"budgetLimitUsd":500}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"remove_unassigned_pool_cap","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"set_user_boss_status","input":{"userId":"<user-uuid>","makeBoss":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"set_user_spend_cap","input":{"userId":"<user-uuid>","budgetLimitUsd":150,"requestsPerMinute":60}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"remove_user_spend_cap","input":{"userId":"<user-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"teams-budgets-action","arguments":{"proposal":{"action":"set_client_spend_cap","input":{"capUsd":10000}}}}}'
Analytics (analytics-query)
Enterprise admins, read-only (there is no analytics-action). Compact aggregates by
design — top-5 lists, one 20-row log page, capped vocabularies — with request metadata
only: prompt and response content never crosses this surface.
“What did we spend last month, split input/output/cached?” · “Show failed gateway requests from yesterday.” · “Which business functions drive our AI spend?” · “Give me a usage summary for June 1 to June 30.”
| Operation | What it does | Runs |
|---|---|---|
get_spend_breakdown | 30-day USD split: input / output / cached, plus request count | immediately |
get_gateway_usage_stats | Aggregate totals (requests, tokens, spend, latency, errors) filtered by date / model / provider / status / user | immediately |
get_gateway_request_log | One page (≤20 rows) of the request log: who called which model, when, cost, status; cursor-paged over a stable snapshot | immediately |
get_business_function_usage | Usage grouped by business function and team, top 25 by cost | immediately |
get_gateway_filter_options | The legal filter values for the two ops above | immediately |
get_analytics_dashboard | Analytics summary for a preset (1/7/30 days) or custom range (≤366 days), scoped to org, a team subtree, or a member set | immediately |
get_model_usage_year | Trailing-365-day model rollup, top 5 by spend | immediately |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analytics-query","arguments":{"query":{"action":"get_spend_breakdown","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analytics-query","arguments":{"query":{"action":"get_gateway_usage_stats","input":{"startDate":"2026-08-01","endDate":"2026-08-19","model":"claude-sonnet-4-6"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analytics-query","arguments":{"query":{"action":"get_gateway_request_log","input":{"startDate":"2026-08-18","status":"failure","limit":20}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analytics-query","arguments":{"query":{"action":"get_business_function_usage","input":{"startDate":"2026-08-01"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analytics-query","arguments":{"query":{"action":"get_gateway_filter_options","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analytics-query","arguments":{"query":{"action":"get_analytics_dashboard","input":{"from":"2026-06-01","to":"2026-06-30"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"analytics-query","arguments":{"query":{"action":"get_model_usage_year","input":{}}}}}'
Models & routing (models-routing-query, models-routing-action)
Enterprise admins. The org’s model policy (default model, selection lock, blocklist) and the
Auto-router (enrollment, tuning, bring-your-own endpoint).
“Set the org default to Auto routing.” · “Block the models that train on inputs.” · “Rebalance the router 60% smarter / 30% cheaper / 10% faster.” · “Which providers serve Kimi K2 right now, and at what price and uptime?”
| Operation | What it does | Runs |
|---|---|---|
get_model_provider_endpoints | Live per-provider pricing, uptime, and throughput for one catalog model | immediately |
set_org_default_model | Set the org default chat model — a model id, "auto" for Auto Routing, or null for the platform default | immediately |
set_model_governance | Lock model selection to the default and/or replace the org blocklist (full replacement; [] clears) | immediately |
update_router_selections | Replace Auto-router enrollment and/or its blocklist (full replacement; [] clears) | immediately |
update_router_tuning | Rebalance smarter/cheaper/faster (must sum to 100) and/or replace the plain-language routing rules | after confirm |
set_router_endpoint | Live-test a bring-your-own router URL and save it only if the test passes | after confirm |
clear_router_endpoint | Back to the built-in Auto router | after confirm |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"models-routing-query","arguments":{"query":{"action":"get_model_provider_endpoints","input":{"modelId":"anthropic/claude-sonnet-4.6"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"models-routing-action","arguments":{"proposal":{"action":"set_org_default_model","input":{"modelId":"auto"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"models-routing-action","arguments":{"proposal":{"action":"set_model_governance","input":{"modelSelectionLocked":false,"blockedModelIds":["deepseek-chat"]}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"models-routing-action","arguments":{"proposal":{"action":"update_router_selections","input":{"routerModelIds":["anthropic/claude-sonnet-4.6","openai/gpt-5.5"]}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"models-routing-action","arguments":{"proposal":{"action":"update_router_tuning","input":{"tuning":{"smarter":60,"cheaper":30,"faster":10}}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"models-routing-action","arguments":{"proposal":{"action":"set_router_endpoint","input":{"endpointUrl":"https://router.acme.com/route","method":"POST"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"models-routing-action","arguments":{"proposal":{"action":"clear_router_endpoint","input":{}}}}}'
Org settings (org-settings-query, org-settings-action)
Enterprise admins. Org-wide chat text, privacy controls, branding, sign-in access, and
business-function classification review.
“Turn off storage of prompt and response text.” · “Set content retention to 30 days.” · “Open self-serve sign-up for acme.com.” · “What classification questions are waiting on me?” · “What needs my attention today?”
| Operation | What it does | Runs |
|---|---|---|
get_stored_content_count | How many conversation rows a purge would delete | immediately |
get_org_branding | Whitelabeling flag, window title, logo presence | immediately |
list_signin_domains | Verified sign-in email domains and their self-serve status | immediately |
list_needs_input_classifications | Keys/teams/users whose classification awaits an admin answer | immediately |
list_classification_records | Classification records with date/category/state filters, cursor-paged | immediately |
get_classification_summary | Labeled-coverage totals | immediately |
get_classification_provenance | Why one usage row carries its label | immediately |
get_needs_attention | Today’s admin to-dos: budget alerts, stale keys, spend spikes | immediately |
update_org_instructions | Replace/toggle the org-wide chat instructions | after confirm |
update_org_context | Replace/toggle the org context text shared with every chat | after confirm |
set_content_logging | Turn storage of prompt/response text on or off | immediately |
set_content_retention | Days before the scheduled purge deletes stored chat content (null = keep) | after confirm |
purge_stored_content | Permanently delete ALL stored conversation content | after confirm |
set_whitelabeling | Toggle whitelabeled branding | immediately |
set_window_title | Set or clear ("") the custom browser title | immediately |
remove_org_logo | Remove the logo (also disables whitelabeling) | after confirm |
set_domain_auto_provision | Open or close self-serve sign-up for a verified domain | after confirm |
set_classification_enabled | Toggle business-function classification of new usage | immediately |
answer_classification_question | Answer an open question — re-buckets all usage under that key/team/user | immediately |
confirm_classification | Confirm or correct one usage row’s label | immediately |
clear_classification | Clear one usage row’s label | immediately |
dismiss_attention_items | Dismiss the current needs-attention items | immediately |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"get_needs_attention","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"get_stored_content_count","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"get_org_branding","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"list_signin_domains","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"list_needs_input_classifications","input":{"limit":10}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"list_classification_records","input":{"state":"needs_input","pageSize":10}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"get_classification_summary","input":{"startDate":"2026-08-01"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-query","arguments":{"query":{"action":"get_classification_provenance","input":{"usageLogId":"<usage-row-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"update_org_instructions","input":{"text":"Answer in the metric system. Cite internal wiki pages where relevant.","enabled":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"update_org_context","input":{"text":"Acme builds industrial robotics. Fiscal year starts in February.","enabled":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"set_content_logging","input":{"enabled":false}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"set_content_retention","input":{"days":30}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"purge_stored_content","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"set_whitelabeling","input":{"enabled":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"set_window_title","input":{"title":"Acme AI"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"remove_org_logo","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"set_domain_auto_provision","input":{"domainId":"<domain-uuid>","enabled":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"set_classification_enabled","input":{"enabled":true}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"answer_classification_question","input":{"assignmentId":"<assignment-uuid>","category":"engineering"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"confirm_classification","input":{"usageLogId":"<usage-row-uuid>","category":"sales"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"clear_classification","input":{"usageLogId":"<usage-row-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"org-settings-action","arguments":{"proposal":{"action":"dismiss_attention_items","input":{}}}}}'
Files (files-query, files-action)
Enterprise admins. The organization’s stored files. Uploads stay in the portal (an API
can’t supply file bytes through a consent card); everything else is here.
“List our shared files — anything named ‘onboarding’?” · “Get me a download link for the Q2 board deck.” · “Delete the stale export from May.”
| Operation | What it does | Runs |
|---|---|---|
list_org_files | Shared files with name, type, size, upload date; searchable, paged | immediately |
get_file_download_link | Mint a one-hour signed download URL (a bearer capability, so it renders in the portal only) | portal link |
delete_org_file | Delete a stored file (irreversible) | after confirm |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"files-query","arguments":{"query":{"action":"list_org_files","input":{"search":"onboarding"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"files-action","arguments":{"proposal":{"action":"get_file_download_link","input":{"documentId":"<document-uuid>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"files-action","arguments":{"proposal":{"action":"delete_org_file","input":{"documentId":"<document-uuid>"}}}}}'
Billing (billing-query, billing-action)
Enterprise admins. The yield-to-compute wallet, the immutable ledger mirror, and CARR
reporting. Money movements are the most conservative operations on the surface — every one
confirms, and none can be undone.
“What’s our wallet balance and last epoch’s yield?” · “List the credits into the wallet this quarter.” · “Close the July ledger period and generate the CARR summary.”
| Operation | What it does | Runs |
|---|---|---|
get_wallet_summary | Current wallet balance and last-epoch yield | immediately |
list_wallet_credits | Credits into the wallet — funding, sweeps, transfers in | immediately |
get_ledger_balance | Ledger rollup: opening/closing balance, additions, consumption, recent events | immediately |
list_ledger_periods | Closed-and-hashed periods with record counts and hashes | immediately |
generate_carr_report | CARR summary figures for a period (file exports stay on /admin/carr) | immediately |
transfer_client_funds | Move USD from your wallet to another client’s — requires a caller-minted idempotencyKey (reuse the same key on retry; a fresh key is a second transfer) | after confirm |
close_ledger_period | Close a usage period and anchor it into the immutable hash chain — can never be reopened | after confirm |
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"billing-query","arguments":{"query":{"action":"get_wallet_summary","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"billing-query","arguments":{"query":{"action":"list_wallet_credits","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"billing-query","arguments":{"query":{"action":"get_ledger_balance","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"billing-query","arguments":{"query":{"action":"list_ledger_periods","input":{}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"billing-query","arguments":{"query":{"action":"generate_carr_report","input":{"periodStart":"2026-07-01T00:00:00Z","periodEnd":"2026-07-31T23:59:59Z"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"billing-action","arguments":{"proposal":{"action":"transfer_client_funds","input":{"toClientId":"<client-uuid>","amountUsd":250,"idempotencyKey":"<mint-one-uuid-per-transfer>"}}}}}'
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"billing-action","arguments":{"proposal":{"action":"close_ledger_period","input":{"periodStart":"2026-07-01T00:00:00Z","periodEnd":"2026-07-31T23:59:59Z"}}}}}'
Completing a confirmation
Any operation marked after confirm returns aconfirmToken on the first call. After a
human approves the returned summary, repeat the identical call with the token added
alongside the proposal:
confirm-retry
curl https://api.aireserve.com/mcp \
-H "Authorization: Bearer $AIRESERVE_MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"members-action","arguments":{"proposal":{"action":"set_member_active","input":{"userId":"<user-uuid>","active":false}},"confirmToken":"<confirmToken-from-step-1>"}}}'
Not on this surface
By design, the MCP server never exposes:- Platform (cross-tenant) operations — funding client wallets, wallet enforcement toggles, ledger syncs, sign-in-domain registration, cross-org lookups. Super admins are de-escalated to their own tenant here; platform work stays in the portal.
- Secrets in responses — key material and signed download URLs only ever render in the signed-in portal via redemption links.
- Impersonation and file-byte uploads — both remain portal page flows.
- Prompt/response content — analytics reads return request metadata only.