Skip to main content
Glama
bridgenode-ai

@bridgenode/mcp

Official

@bridgenode/mcp

npm version npm downloads License: MIT-0 CI Website BridgeNode on x402-list @bridgenode/mcp on AI Agents Listing GitHub Stars

Built for AI agents — no API keys, no registration, pay-as-you-go with Solana USDC via x402. Start free: free models and 2 free calls on paid models per client, no wallet required.

BridgeNode MCP wrapper — stdio MCP server that proxies requests to the remote https://bridgenode.cc/mcp (streamable-HTTP) with automatic x402 payment (Solana USDC). No API keys, no registration.

Installation (one-command)

claude mcp add bridgenode -s user -- npx -y @bridgenode/mcp@latest

Or manually (Claude Code, Cursor, other MCP clients):

{
  "mcpServers": {
    "bridgenode": {
      "command": "npx",
      "args": ["-y", "@bridgenode/mcp@latest"]
    }
  }
}

Related MCP server: x402 Payment Gateway MCP Server

Configuration (.env)

# Solana wallet private key (base58) — agent's payment wallet
# Optional — Solana wallet private key (base58). Needed only for PAID calls:
# free models and the 2 free trials work without it.
BRIDGENODE_WALLET_KEY=

# Spending policy (fail-closed)
BRIDGENODE_MAX_PER_CALL=0.05
BRIDGENODE_DAILY_CAP=1.0

Tools

  • chat_completions — AI inference (free models run without payment; the first 2 calls to a PAID model are free per client, then x402 payment is automatic). Accepts OpenAI-style tools / tool_choice — the model's answer then carries tool_calls (the wrapper passes arguments through unchanged)

  • list_models — model list (free)

  • get_price_estimate — estimate cost of a chat request (free)

How it works

  1. Local MCP client launches the wrapper via stdio

  2. Wrapper connects to https://bridgenode.cc/mcp (streamable HTTP)

  3. On tools/call receiving 402 (payment required) — the wrapper automatically signs the payment with BRIDGENODE_WALLET_KEY and retries the request

  4. Spending policy checks every payment BEFORE signing (fail-closed)

Python packages

Prefer Python? The same BridgeNode toolkit is on PyPI:

Community

⭐ Star this repo — it helps AI agents discover BridgeNode.

Available Tools

3 tools
chat_completionsChat completions with x402 paymentAInspect

Send a chat completion request to any supported model. Free models are served without payment; the first calls to a PAID model are also free per client (free trials), after which x402 payment (Solana USDC) is required — an unpaid call returns 402 with the exact price; retry with _meta["x402/payment"]. Responses are non-streaming. Pass either mode (auto/eco/premium) or model (explicit id) — one of the two is required; model wins if both are sent. Use this tool to generate text; inspect models and prices first with the free list_models tool. Start with a FREE model (no payment at all) and keep max_tokens >= 200 — a thinking model spends part of that budget on reasoning, so a smaller limit can return an empty answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSmart routing profile (auto/eco/premium).
modelNoExplicit model id (see list_models / /v1/models). Mutually exclusive with mode.
toolsNoOpenAI-style tool schemas the model may call. Forwarded unchanged; they count as input tokens for the price (§4.2/§5.3).
messagesYesChat messages (text content only). An assistant turn that calls a tool may carry content: null with tool_calls.
max_tokensNoMax output tokens (billed upfront, §4.2). MCP calls are non-stream: cap per config. Use >= 200 — reasoning models share this budget with their thinking and a smaller limit can return an empty answer.
tool_choiceNoOpenAI tool_choice: 'auto', 'none', 'required', or {type: function, function: {name}}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
modelNo
usageNo
objectNo
choicesNo
createdNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnly/destructive/idempotent flags): discloses per-client free trials, the 402 payment-required response and retry mechanism, non-streaming behavior, and billing semantics for tools/max_tokens. This is the kind of operational context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and payment, then routing rules and finally practical guidance. Dense but each sentence carries information; the max_tokens advice is partially duplicative of the schema description, which is the only minor slack.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description still covers payment lifecycle, routing rules, streaming behavior, and a critical failure mode (empty answer from small max_tokens). Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds real meaning: the model-vs-mode precedence rule ('model wins if both are sent') is stronger than the schema's bare 'mutually exclusive' note, and the max_tokens >= 200 guidance explains the reasoning-budget failure mode.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('send a chat completion request to any supported model') and clarifies which sibling to use for model/price discovery. An agent can distinguish this from list_models and get_price_estimate without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to inspect models and prices first with list_models, to start with a free model, and describes the paid flow (402 then retry with _meta["x402/payment"]). When-to-use, prerequisites, and the alternative sibling tool are all named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_estimateEstimate the cost of a chat requestA
Read-onlyIdempotent
Inspect

Estimate the USDC cost of a chat completion request before paying — free, no payment, no authentication required. Read-only: no state changes and no external calls; the estimate is computed locally from server pricing config, so repeated calls with identical inputs return identical results (idempotent). Use this tool to check the exact price for a given model/mode, messages, and max_tokens before calling the paid chat_completions tool. Provide either mode (auto/eco/premium routing) or model (explicit id, mutually exclusive with mode); one of the two is required — if both are sent, model wins. mode values: auto = cheapest model fitting the context, eco = cheapest available, premium = best model.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSmart routing profile (auto/eco/premium).
modelNoExplicit model id (see list_models / /v1/models). Mutually exclusive with mode.
messagesYesChat messages (text content only).
max_tokensNoMax output tokens to estimate (billed upfront, §4.2).

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelNo
amount_usdcNo
input_tokensNo
amount_atomicNo
max_tokens_clampedNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant context beyond the annotations: 'no state changes and no external calls,' 'computed locally from server pricing config,' 'free, no payment, no authentication required,' and 'repeated calls with identical inputs return identical results.' These details clarify side effects, network behavior, and prerequisites, which annotations alone do not convey. No contradiction with the readOnly/idempotent/destructive hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three dense, well-structured sentences with no filler: what it does, safety/behavior, and invocation guidance. It front-loads purpose and money implications before diving into behavioral details, and every clause adds operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is an output schema, the description need not detail return values. It covers the required input contracts (model vs mode, messages, max_tokens), the behavioral/read-only path, the cost/auth implications, and points to related tools (chat_completions, list_models). Nothing an agent needs to call it correctly on HTTP is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each property described, so the baseline is already strong. The description goes further by defining mode values ('auto = cheapest model fitting the context, eco = cheapest available, premium = best model') and by clarifying the relationship between model and mode: 'one of two required — if both are sent, model wins.' This resolution semantic is critical and not fully captured by the schema's anyOf.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Estimate the USDC cost of a chat completion request before paying.' It clearly scopes what the tool does and implicitly distinguishes it from chat_completions (the paid execution tool) and list_models (the model-listing tool), reducing ambiguity without even checking sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool: 'Use this tool to check the exact price for a given model/mode, messages, and max_tokens before calling the paid chat_completions tool.' It also gives usage constraints: one of model/mode required, mutually exclusive, and 'if both are sent, model wins.' This tells an agent exactly when and with which arguments to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsList available models and pricesA
Read-onlyIdempotent
Inspect

List available models and their prices — free, no payment, no authentication required. Read-only: no state changes; data is served from the server's local config, so repeated calls return identical results (idempotent). Accepts no parameters: the input schema is an empty object, and any arguments passed are ignored. Calling it without arguments returns the complete catalog with per-token prices; there is no filtering, pagination, or configuration. Use this tool to inspect models and prices before calling the paid chat_completions tool. Same data as GET /v1/models (§5.2). Do not use it to generate text (use chat_completions) or to estimate a specific request's cost (use get_price_estimate).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
objectNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, idempotent, and non-destructive behavior, and the description adds substantial context beyond that: no authentication or payment required, arguments are ignored, data comes from local config, repeated calls return identical results, and there is no filtering or pagination. This gives an agent a complete behavioral picture with no surprises.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence adds distinct value: scope, authentication/read-only/idempotency, parameter handling, absence of filtering, recommended usage, API equivalence, and exclusions. Although it is a longer description, it is tightly packed with actionable information and remains highly scannable because each sentence addresses a separate concern.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, a trivial input schema, and a true output schema, the description fully addresses everything an agent needs to know: cost model, authentication, side effects, behavior with no arguments, and clear routing versus sibling tools. There are no meaningful gaps in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and the description expands on this by explicitly stating that the input schema is an empty object and that any arguments passed are ignored. This is more informative than simply inheriting the schema. A 0-parameter baseline is already strong, and the extra clarity about ignored arguments earns a slightly higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List available models and their prices.' It clearly distinguishes itself from siblings by stating it does not generate text (chat_completions) and does not estimate request costs (get_price_estimate). The purpose is unambiguous and fully captures the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use this tool: 'Use this tool to inspect models and prices before calling the paid chat_completions tool.' It also explicitly says when not to use it, naming the alternatives for text generation and cost estimation. This leaves no ambiguity about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.1.1
    • Changedchat_completions8 fields changed
      • changedInput schema / properties / max_tokens / description
        Previous value: -"Max output tokens (billed upfront, §4.2). MCP calls are non-stream: cap per config."New value: +"Max output tokens (billed upfront, §4.2). MCP calls are non-stream: cap per config. Use >= 200 — reasoning models share this budget with their thinking and a smaller limit can return an empty answer."
      • changedInput schema / properties / messages / description
        Previous value: -"Chat messages (text content only)."New value: +"Chat messages (text content only). An assistant turn that calls a tool may carry content: null with tool_calls."
      • changedInput schema / properties / messages / items / properties / content / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / messages / items / properties / tool_call_id
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / messages / items / properties / tool_calls
        Added value: +{
        +  "type": "array"
        +}
      • changedInput schema / properties / messages / items / required
        Previous value: -[
        -  "role",
        -  "content"
        -]New value: +[
        +  "role"
        +]
      • addedInput schema / properties / tool_choice
        Added value: +{
        +  "description": "OpenAI tool_choice: 'auto', 'none', 'required', or {type: function, function: {name}}.",
        +  "type": [
        +    "string",
        +    "object"
        +  ]
        +}
      • addedInput schema / properties / tools
        Added value: +{
        +  "description": "OpenAI-style tool schemas the model may call. Forwarded unchanged; they count as input tokens for the price (§4.2/§5.3).",
        +  "items": {
        +    "properties": {
        +      "function": {
        +        "type": "object"
        +      },
        +      "type": {
        +        "enum": [
        +          "function"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "function"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  2. 3 tool updatesv1.0.4
    • First observedchat_completions
    • First observedget_price_estimate
    • First observedlist_models

TDQS

A4.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct role: list_models returns the catalog, get_price_estimate prices a specific request, and chat_completions performs inference. The descriptions explicitly cross-reference each other ('use chat_completions', 'use get_price_estimate'), eliminating any realistic misselection.

Naming Consistency4/5

get_price_estimate and list_models follow a clean verb_noun pattern, but chat_completions is a bare noun naming a resource/action endpoint. The deviation is minor and the naming remains predictable and readable.

Tool Count4/5

Three tools is lean but plausibly matches the narrow gateway scope: inspect models, estimate cost, generate text. It sits at the low edge of the ideal range, with little redundancy, though it leaves almost no room for ancillary operations.

Completeness4/5

The core pay-per-request lifecycle (discover models, price a request, execute) is fully covered, including the 402 payment retry flow. Minor gaps exist: no streaming option, no balance/usage or payment-status tool, and no embeddings or other model modalities.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers