Track API spend, credit balances and runway across OpenAI, Anthropic, OpenRouter and 25 more.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer argus_mcp_... (Settings → API keys, type mcp)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Connect a provider to THIS project with a credential. Validates the credential against the provider before storing it (encrypted), then queues the initial sync. Args: provider (id from list_available_providers), secret (the provider API key), credential_type (optional), label (optional), meta (optional object of non-secret fields, e.g. OpenRouter admin_key needs {tracked_key: <key name, label or hash>} inside meta, not at the top level; Cloudflare Containers needs {account_id} and takes optional {billing_day}). Only pass secrets your operator gave you for this purpose.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Connect a provider to THIS project with a credential. Validates the credential against the provider before storing it (encrypted), then queues the initial sync. Args: provider (id from list_available_providers), secret (the provider API key), credential_type (optional), label (optional), meta (optional object of non-secret fields, e.g. OpenRouter admin_key needs {tracked_key: <key name, label or hash>} inside meta, not at the top level; Cloudflare Containers needs {account_id} and takes optional {billing_day}). Only pass secrets your operator gave you for this purpose.
| Argument | Type | Description |
|---|---|---|
| meta | object | |
| label | string | |
| secret* | string | |
| provider* | string | |
| credential_type | string |
{
"type": "object",
"required": [
"provider",
"secret"
],
"properties": {
"meta": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"label": {
"type": "string"
},
"secret": {
"type": "string"
},
"provider": {
"type": "string"
},
"credential_type": {
"type": "string"
}
}
}Hand a provider credential to Argus without it passing through you: returns a single-use URL (valid 1 hour) where your operator pastes the key. Show the URL to your operator, then poll get_connect_link for the connection id. Prefer this over connect_provider whenever you don't already hold the secret. Args: provider (id from list_available_providers), credential_type (optional), label (optional).
| Argument | Type | Description |
|---|---|---|
| label | string | |
| provider | string | |
| credential_type | string |
{
"type": "object",
"properties": {
"label": {
"type": "string"
},
"provider": {
"type": "string"
},
"credential_type": {
"type": "string"
}
}
}All current advisories (top-up, upgrade, near-limit, spend-spike) across providers.
No arguments.
{
"type": "object",
"properties": {}
}Status of a connect link: pending, submitting (the human is mid-submit), done (with connection_id), expired, or locked after repeated bad credentials.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
}Cost-accuracy state per provider: whether itemized costs are exact, estimated, or unreconciled, with the drift % between Argus's itemized total and the provider's own reported spend. 'unreconciled' means no provider anchor has been compared yet; where one exists (OpenRouter) it covers only calls sent through the connected key. spend_basis qualifies mtdSpendUsd (see get_overview).
No arguments.
{
"type": "object",
"properties": {}
}Cross-provider rollup: balance, burn rate, days-to-zero, month-to-date spend, projection, rate-limit headroom. Per provider, spend_basis says where month-to-date spend comes from: 'reported' (provider usage or itemized events) or 'observed_since_connected' (summed balance drops since observed_since, so spend before that date is missing); balance_scope says whether the balance covers the 'account', the connected 'key' or is 'unknown'.
No arguments.
{
"type": "object",
"properties": {}
}Full metrics + rate-limit snapshots for one connection id. Includes spend_basis ('reported' | 'observed_since_connected'), observed_since and balance_scope ('account' | 'key' | 'unknown').
| Argument | Type | Description |
|---|---|---|
| connectionId* | string |
{
"type": "object",
"required": [
"connectionId"
],
"properties": {
"connectionId": {
"type": "string"
}
}
}Latest rate-limit headroom and error rate across the org's providers.
No arguments.
{
"type": "object",
"properties": {}
}Recent itemized per-request costs for a provider (model, tokens, cost in USD, provenance). Args: provider (string), limit (number, default 25, max 100).
| Argument | Type | Description |
|---|---|---|
| limit | number | |
| provider* | string | Provider id, e.g. 'openrouter' |
{
"type": "object",
"required": [
"provider"
],
"properties": {
"limit": {
"type": "number"
},
"provider": {
"type": "string",
"description": "Provider id, e.g. 'openrouter'"
}
}
}Providers that can be connected with an API key (poll plane). Anything else can still be tracked by sending telemetry — see https://argus.town/docs/ingest.
No arguments.
{
"type": "object",
"properties": {}
}List the org's connected providers and status.
No arguments.
{
"type": "object",
"properties": {}
}Queue an immediate balance/usage/plan refresh for one connection. Args: connection_id.
| Argument | Type | Description |
|---|---|---|
| connection_id* | string |
{
"type": "object",
"required": [
"connection_id"
],
"properties": {
"connection_id": {
"type": "string"
}
}
}