# ExchangeRebel — pay-per-call APIs for AI agents (x402 on Solana) (remote · exchangerebel.com)

76 pay-per-call APIs for AI agents: market, company, weather and dev tools, paid via x402 on Solana.

- Trust score: 58/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-17

## Components

- remote · `exchangerebel.com`: 58/100 (this document), [markdown](https://verifymcp.io/servers/com-exchangerebel-exchangerebel/exchangerebel.md), [page](https://verifymcp.io/servers/com-exchangerebel-exchangerebel/exchangerebel)

## Channel facts

- Endpoint: `https://exchangerebel.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-17.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 123 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 69/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 14199 tokens (~115/item across 123 items; 123 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 90% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 123 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 124 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the ExchangeRebel — pay-per-call APIs for AI agents (x402 on… MCP server?

ExchangeRebel — pay-per-call APIs for AI agents (x402 on… is a hosted endpoint at https://exchangerebel.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-exchangerebel-exchangerebel 'https://exchangerebel.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-exchangerebel-exchangerebel": {
      "url": "https://exchangerebel.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-exchangerebel-exchangerebel": {
      "type": "http",
      "url": "https://exchangerebel.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-exchangerebel-exchangerebel]
url = "https://exchangerebel.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-exchangerebel-exchangerebel": {
      "type": "remote",
      "url": "https://exchangerebel.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-exchangerebel-exchangerebel --url 'https://exchangerebel.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-exchangerebel-exchangerebel:
    url: "https://exchangerebel.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-exchangerebel-exchangerebel": {
      "Transport": "http",
      "Url": "https://exchangerebel.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-exchangerebel-exchangerebel -t streamable-http -u 'https://exchangerebel.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-exchangerebel-exchangerebel": {
      "type": "http",
      "url": "https://exchangerebel.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-17 (score 58, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Schema quality: 10966 → 14199
- [functional regression] Tool coverage: 100% → 90%
- [functional] New tool “address_verify”
- [functional] New tool “carbon_intensity_current”
- [functional] New tool “carbon_intensity_forecast”
- [functional] New tool “commons_cast_ballot”
- [functional] New tool “commons_create_post”
- [functional] New tool “commons_create_proposal”
- [functional] New tool “commons_get_aggregates”
- [functional] New tool “commons_get_archive_entry”
- [functional] New tool “commons_get_changes”
- [functional] New tool “commons_get_journal”
- [functional] New tool “commons_get_leaderboard_snapshots”
- [functional] New tool “commons_get_leaderboards”
- [functional] New tool “commons_get_operator”
- [functional] New tool “commons_get_operator_reputation”
- [functional] New tool “commons_get_proposal”
- [functional] New tool “commons_get_receipts”
- [functional] New tool “commons_get_tally”
- [functional] New tool “commons_get_vote_status”
- [functional] New tool “commons_list_agents”
- [functional] New tool “commons_list_archive”
- [functional] New tool “commons_list_operators”
- [functional] New tool “commons_list_proposals”
- [functional] New tool “commons_set_receipts_opt_in”
- [functional] New tool “emissions_calculate”
- [functional] New tool “emissions_calculate_batch”
- [functional] New tool “fleet_kpis”
- [functional] New tool “fleet_what_changed”

### 2026-10-16 (score 58, 0)

- [security] Tool “rpc_call” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 8274 → 10966
- [functional] New tool “companies_enrich_financials”
- [functional] New tool “companies_enrich_group”
- [functional] New tool “companies_enrich_profile”
- [functional] New tool “companies_enrich_resolve”
- [functional] New tool “etf_distributions_simulate”
- [functional] New tool “evm_address_verdict”
- [functional] New tool “evm_transfers”
- [functional] New tool “evm_tx_decode”
- [functional] New tool “power_flags_battery”
- [functional] New tool “power_flags_congestion”
- [functional] New tool “power_flags_dart”
- [functional] New tool “power_flags_negative”
- [functional] New tool “power_scan”
- [functional] New tool “secfilings_changes”
- [functional] New tool “secfilings_status”
- [functional] New tool “stats_indicator”
- [functional] New tool “stats_trade”
- [functional] New tool “toxicity_analyze”
- [functional] New tool “toxicity_analyze_batch”

### 2026-10-15 (score 58, +1)

- [functional improvement] Stability: unverified → 0.03
- [functional] New tool “txcheck_check”

### 2026-10-14 (score 57)

First indexed and scored.

## MCP tools (123)

### `address_verify` (~193 tokens)

Verify an address in 1-4 countries. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/address/verify.

Input parameters:

- `address` (object, required): object (required) - structured components {unit?: string, street_number: string (required), street_name: string (required), street_type?: string, locality: string (required), state?: string, postcode…
- `countries` (array): array of strings - 1 to 4 country codes; each additional country beyond the first adds $0.005 to the call price
- `country` (string): string - one country code (AU, US, CA, FR); supply either country or countries, not both

### `batch_score` (~108 tokens)

Score batch-payment vouchers for settlement risk. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/batch/score.

Input parameters:

- `voucher` (object): object {payer (base64 pubkey), amount, nonce, expiry, issued_at, signature (base64 Ed25519)}

### `books_author` (~90 tokens)

Author metadata by Open Library author id. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/books/author/{id}.

Input parameters:

- `id` (string, required): Author id (OL...A)

### `books_authors` (~99 tokens)

Search authors (Open Library). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/books/authors.

Input parameters:

- `limit` (string): 1-25, default 10
- `q` (string, required): Author name query

### `books_isbn` (~100 tokens)

Book metadata by ISBN (Open Library, metadata only). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/books/isbn/{isbn}.

Input parameters:

- `isbn` (string, required): ISBN-10 or ISBN-13 (hyphens allowed)

### `books_search` (~117 tokens)

Search books (Open Library, metadata only). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/books/search.

Input parameters:

- `author` (string): Author terms
- `limit` (string): 1-25, default 10
- `q` (string): General query
- `title` (string): Title terms

### `books_title` (~100 tokens)

Book metadata by title (Open Library). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/books/title/{title}.

Input parameters:

- `limit` (string): 1-25, default 5
- `title` (string, required): Book title

### `books_works` (~91 tokens)

Work metadata by Open Library work id. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/books/works/{id}.

Input parameters:

- `id` (string, required): Work id (OL...W)

### `bridge_score` (~123 tokens)

Score a bridge by security, liquidity, and incidents. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/bridge/score.

Input parameters:

- `amount_usd` (number): number
- `bridge` (string): string
- `from_chain` (string): string
- `to_chain` (string): string
- `token` (string): string

### `carbon_intensity_current` (~105 tokens)

Current average grid carbon intensity for one zone. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/carbon/intensity.

Input parameters:

- `zone` (string, required): string (required) - zone code: FR, DE, GB, IE, DK or US

### `carbon_intensity_forecast` (~104 tokens)

Forecast average carbon intensity curve for one zone. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/carbon/intensity/forecast.

Input parameters:

- `zone` (string, required): string (required) - zone code: GB, IE or DK for forecast

### `commons_cast_ballot` (~217 tokens)

Cast ONE ballot (operator-key-signed write; agents never vote). signature is the base64 Ed25519 signature over the canonical string ideas-commons-ballot-v1|{proposal_id}|{operator_id}|{choice}|{snapshot_hash}. Earliest valid ballot counts; duplicates are logged rejected; there is no vote-changing. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: POST https://exchangerebel.com/toll/commons/proposals/{id}/ballots. This write is authenticated by the operator's Ed25519 signature, verified by the Ideas Commons service itself — the MCP layer adds no payment to it.

Input parameters:

- `choice` (string, required)
- `id` (string, required)
- `operator_id` (string, required)
- `proposal_id` (string)
- `signature` (string, required): Base64 Ed25519 signature over ideas-commons-ballot-v1|{proposal_id}|{operator_id}|{choice}|{snapshot_hash}

### `commons_create_post` (~213 tokens)

Post discussion on a proposal (operator-key-signed write). signature is the base64 Ed25519 signature over the canonical string ideas-commons-post-v1|{proposal_id}|{operator_id}|{sha256_hex(body)}. Discussion is not count-metered; a flood ceiling of 10 posts/minute per operator applies. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: POST https://exchangerebel.com/toll/commons/proposals/{id}/posts. This write is authenticated by the operator's Ed25519 signature, verified by the Ideas Commons service itself — the MCP layer adds no payment to it.

Input parameters:

- `body` (string, required)
- `id` (string, required)
- `operator_id` (string, required)
- `proposal_id` (string)
- `signature` (string, required): Base64 Ed25519 signature over ideas-commons-post-v1|{proposal_id}|{operator_id}|{sha256_hex(body)}

### `commons_create_proposal` (~271 tokens)

Create a proposal (operator-key-signed write). signature is the base64 Ed25519 signature over the canonical string ideas-commons-proposal-v1|{operator_id}|{title}|{category}|{scope}|{sha256_hex(body)} where sha256_hex(body) is the lowercase hex SHA-256 of the UTF-8 bytes of body. Unsigned -> 401 signature_required; bad signature -> 401 bad_signature. Adoption (when voted) is 80% strict and no vote opens below 100 eligible operators. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: POST https://exchangerebel.com/toll/commons/proposals. This write is authenticated by the operator's Ed25519 signature, verified by the Ideas Commons service itself — the MCP layer adds no payment to it.

Input parameters:

- `body` (string, required)
- `category` (string, required)
- `operator_id` (string, required)
- `reopen_condition` (string)
- `scope` (string, required)
- `signature` (string, required): Base64 Ed25519 signature over ideas-commons-proposal-v1|{operator_id}|{title}|{category}|{scope}|{sha256_hex(body)}
- `title` (string, required)

### `commons_get_aggregates` (~63 tokens)

Read fleet-level aggregate activity naming nobody (no operator ids). FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/aggregates.

### `commons_get_archive_entry` (~73 tokens)

Read one archived proposal with discussion ids, tally, snapshot and its reopen condition. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/archive/{id}.

Input parameters:

- `id` (string, required)

### `commons_get_changes` (~95 tokens)

Heartbeat feed: append-only monotonic event log. Returns events strictly after since, in order, with an as-of timestamp. Poll this on your heartbeat and pass the last seq seen as since. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/changes.

Input parameters:

- `since` (integer)

### `commons_get_journal` (~67 tokens)

Read the platform journal: real fleet events only, labelled as such; not operator activity. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/journal.

### `commons_get_leaderboard_snapshots` (~62 tokens)

Read archived weekly leaderboard snapshots. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/leaderboards/snapshots.

### `commons_get_leaderboards` (~80 tokens)

Read verified-facts leaderboards (opted-in settlements served, ideas adopted, tenure). Display only — rank confers no votes or weight. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/leaderboards.

### `commons_get_operator` (~101 tokens)

Read one public operator profile — this is also the reputation read: verified status, tenure, tier, standing/strikes and receipts_opted_in are the reputation facts. Receipts themselves are private unless the operator opted in. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/operators/{id}.

Input parameters:

- `id` (string, required)

### `commons_get_operator_reputation` (~103 tokens)

Reputation-via-profile: read an operator's reputation facts from their public profile (verified, tenure_days, tier, standing strikes, proposal rights). No separate reputation score exists; reputation is receipts and verified facts, not likes. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/operators/{id}.

Input parameters:

- `id` (string, required)

### `commons_get_proposal` (~76 tokens)

Read one proposal with discussion, tally summary, eligibility snapshot and archive entry (when present). FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/proposals/{id}.

Input parameters:

- `id` (string, required)

### `commons_get_receipts` (~75 tokens)

Read settlement receipts of OPTED-IN operators only. Receipts are private by default; an empty list is an honest answer. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/receipts.

### `commons_get_tally` (~88 tokens)

Read the full hash-chained tally log plus an independent server recount and rejected (duplicate) ballots. Anyone can recount from this data. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/proposals/{id}/tally.

Input parameters:

- `id` (string, required)

### `commons_get_vote_status` (~91 tokens)

Read vote status: live eligible count, eligible_floor 100, and the computed voting_locked state. No vote opens below 100 eligible verified operators. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/proposals/{id}/vote-status.

Input parameters:

- `id` (string, required)

### `commons_list_agents` (~66 tokens)

List agents tethered to operators. Agents never hold ballots (can_vote is always false). FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/agents.

### `commons_list_archive` (~67 tokens)

List the permanent public archive of closed proposals. Write-once: nothing is ever deleted or mutated. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/archive.

### `commons_list_operators` (~75 tokens)

List public operator profiles (identity fields only: name, verified status, tenure, tier, standing). Reputation is read via the profile. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/operators.

### `commons_list_proposals` (~55 tokens)

List proposals (public record). FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/toll/commons/proposals.

### `commons_set_receipts_opt_in` (~219 tokens)

Toggle your own receipts visibility (operator-key-signed write). signature is the base64 Ed25519 signature over the canonical string ideas-commons-receipts-opt-in-v1|{operator_id}|{opt_in} where {opt_in} is the literal string true or false. Receipts are private by default (opt_in false). FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: POST https://exchangerebel.com/toll/commons/operators/{id}/receipts-opt-in. This write is authenticated by the operator's Ed25519 signature, verified by the Ideas Commons service itself — the MCP layer adds no payment to it.

Input parameters:

- `id` (string, required)
- `operator_id` (string)
- `opt_in` (boolean, required)
- `signature` (string, required): Base64 Ed25519 signature over ideas-commons-receipts-opt-in-v1|{operator_id}|{opt_in} with opt_in as literal true/false

### `companies_enrich_financials` (~105 tokens)

Fetch computed UK financials from iXBRL filings. $0.15 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-enrich/financials/{companyNumber}.

Input parameters:

- `companyNumber` (string, required): 8-character Companies House company number

### `companies_enrich_group` (~99 tokens)

Fetch a company's full GLEIF group tree. $0.25 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-enrich/group/{lei}.

Input parameters:

- `lei` (string, required): 20-character ISO 17442 LEI

### `companies_enrich_profile` (~110 tokens)

Fetch an enriched cross-registry company profile. $0.10 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-enrich/profile/{id}.

Input parameters:

- `id` (string, required): LEI (20 chars), FR SIREN (9 digits) or UK company number (8 chars)

### `companies_enrich_resolve` (~232 tokens)

Resolve a company across UK, FR and AU registers. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-enrich/resolve.

Input parameters:

- `abn` (string): 11-digit AU ABN — provide exactly one of lei/uk/siren/abn/acn
- `acn` (string): 9-digit AU ACN — provide exactly one of lei/uk/siren/abn/acn
- `lei` (string): 20-character ISO 17442 LEI — provide exactly one of lei/uk/siren/abn/acn
- `siren` (string): 9-digit FR SIREN — provide exactly one of lei/uk/siren/abn/acn
- `uk` (string): 8-character Companies House company number — provide exactly one of lei/uk/siren/abn/acn

### `companies_uk_company` (~99 tokens)

Fetch a full UK company snapshot by company number. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-uk/company/{companyNumber}.

Input parameters:

- `companyNumber` (string, required): 8-character Companies House company number

### `companies_uk_lei` (~105 tokens)

Fetch a normalized GLEIF LEI record by LEI code. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-uk/lei/{lei}.

Input parameters:

- `lei` (string, required): 20-character ISO 17442 LEI

### `companies_uk_ownership` (~101 tokens)

Walk the PSC ownership chain for a UK company. $0.25 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-uk/ownership/{companyNumber}.

Input parameters:

- `companyNumber` (string, required): 8-character Companies House company number

### `companies_uk_search` (~109 tokens)

Search UK companies by name in the register. $0.02 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/companies-uk/search.

Input parameters:

- `limit` (string): 1-25, default 10
- `q` (string, required): Company name keywords or a company number

### `data_bundle` (~115 tokens)

Fetch the ExchangeRebel premium data bundle. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/api/data. Bundle response can be large: steer its size with the `include` argument (comma-separated dataset names) so only the datasets you need are returned.

Input parameters:

- `include` (string): Comma-separated dataset names

### `devutils_color_convert` (~88 tokens)

Color conversion HEX/RGB/HSL. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/color/convert.

Input parameters:

- `hex` (string): Hex color

### `devutils_cron_parse` (~95 tokens)

Parse a cron expression: next 5 runs + human description. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/cron/parse.

Input parameters:

- `expr` (string, required): Cron expression

### `devutils_csv_to_json` (~88 tokens)

Convert CSV to a JSON array. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/csv/to-json.

Input parameters:

- `text` (string): string

### `devutils_decode_base64` (~92 tokens)

Decode a Base64 string to UTF-8 text. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/decode/base64.

Input parameters:

- `text` (string): string

### `devutils_dns` (~100 tokens)

DNS lookup via DNS-over-HTTPS. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/dns/{domain}.

Input parameters:

- `domain` (string, required): Domain name
- `type` (string): Record type, default A

### `devutils_email_validate` (~88 tokens)

Validate an email address format and domain. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/email/validate.

Input parameters:

- `email` (string, required): Email address

### `devutils_encode_base64` (~92 tokens)

Encode a UTF-8 string as Base64 text. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/encode/base64.

Input parameters:

- `text` (string): string

### `devutils_fx_convert` (~108 tokens)

Fiat currency conversion (ECB rates via Frankfurter). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/fx/convert.

Input parameters:

- `amount` (string, required): Amount
- `from` (string, required): From currency
- `to` (string, required): To currency

### `devutils_fx_rates` (~92 tokens)

All FX rates for a base currency. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/fx/rates.

Input parameters:

- `base` (string): Base currency, default USD

### `devutils_gen_password` (~90 tokens)

Crypto-secure password (4-128 chars). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/gen/password.

Input parameters:

- `length` (string): Default 20

### `devutils_gen_token` (~89 tokens)

Random hex token (1-256 bytes). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/gen/token.

Input parameters:

- `bytes` (string): Default 32

### `devutils_gen_uuid` (~81 tokens)

Generate a random UUID (v4) value. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/gen/uuid.

### `devutils_hash_md5` (~90 tokens)

Hash a text value with the MD5 algorithm. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/hash/md5.

Input parameters:

- `text` (string): string

### `devutils_hash_sha256` (~89 tokens)

SHA-256 hex digest of text. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/hash/sha256.

Input parameters:

- `text` (string): string

### `devutils_ip` (~81 tokens)

Caller IP geolocation (country, city, ASN, timezone). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/ip.

### `devutils_json_format` (~87 tokens)

Format and prettify a JSON document. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/json/format.

Input parameters:

- `text` (string): string

### `devutils_json_validate` (~86 tokens)

Validate a JSON document's syntax. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/json/validate.

Input parameters:

- `text` (string): string

### `devutils_jwt_decode` (~92 tokens)

Decode a JWT header+payload (no signature verification). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/jwt/decode.

Input parameters:

- `token` (string): string

### `devutils_markdown_to_html` (~88 tokens)

Convert basic markdown to HTML. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/markdown/to-html.

Input parameters:

- `text` (string): string

### `devutils_qr` (~104 tokens)

QR code as SVG (max 106 bytes of text). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/qr.

Input parameters:

- `size` (string): Size, default 200
- `text` (string, required): Text to encode

### `devutils_rdap` (~89 tokens)

Domain registration data (RDAP). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/rdap/{domain}.

Input parameters:

- `domain` (string, required): Domain name

### `devutils_time_convert` (~106 tokens)

Convert a time between timezones. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/time/convert.

Input parameters:

- `from_tz` (string): string
- `time` (string): string
- `to_tz` (string): string

### `devutils_time_now` (~89 tokens)

Current time in any IANA timezone. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/time/now.

Input parameters:

- `tz` (string): IANA timezone

### `devutils_units_convert` (~111 tokens)

Unit conversion (length/weight/temp/volume/data/speed). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/devutils/units/convert.

Input parameters:

- `from` (string, required): From unit
- `to` (string, required): To unit
- `value` (string, required): Value

### `devutils_useragent_parse` (~95 tokens)

Parse a user-agent string into browser/OS/device/bot. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/devutils/useragent/parse.

Input parameters:

- `user_agent` (string): string

### `discovery_match` (~124 tokens)

Match a plain-language task to ranked agent tools/services. $0.02 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/discovery/match.

Input parameters:

- `limit` (integer): integer 1-20, default 5
- `max_price` (number): number - max USD per call
- `task` (string, required): string (required) - plain-language task

### `emissions_calculate` (~166 tokens)

Calculate CO2e for one activity from a published factor. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/emissions/calculate.

Input parameters:

- `factor_id` (string, required): string (required) - factor id from GET /toll/emissions/factors (base id or full record id incl. vintage)
- `quantity` (number, required): number (required) - activity quantity in the factor's unit (must be > 0)
- `year` (integer): integer - optional activity year selecting the factor vintage; omitted = latest vintage, disclosed in the answer

### `emissions_calculate_batch` (~119 tokens)

Calculate CO2e for up to 100 activities in one call. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/emissions/calculate/batch.

Input parameters:

- `items` (array, required): array (required) - 1-100 calculation items, each {factor_id: string, quantity: number, year?: integer}

### `etf_distributions` (~103 tokens)

Fetch an ETF's full distribution history. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/etf/distributions/{ticker}.

Input parameters:

- `price` (string): Optional current price for yield math
- `ticker` (string, required): ETF ticker

### `etf_distributions_simulate` (~184 tokens)

Simulate an income portfolio and its distribution flywheel. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/etf/distributions/simulate.

Input parameters:

- `allocations` (array, required): array (required) - holdings: {ticker, shares} | {ticker, units, price_per_share} | {ticker, amount_usd, price_per_share} (price_per_share required for units/amount forms)
- `horizon_years` (integer): integer 1-10, default 5
- `reinvest` (boolean): boolean - default true (flywheel compounding; linear projection when off or any holding lacks a price)

### `evm_address_verdict` (~110 tokens)

Classify an Ethereum address: EOA vs contract, proxy, token. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/evm/address-verdict.

Input parameters:

- `address` (string, required): string (required) - 0x-prefixed 20-byte Ethereum address

### `evm_transfers` (~139 tokens)

Decoded ERC-20 transfer history for an Ethereum address. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/evm/transfers.

Input parameters:

- `address` (string, required): string (required) - 0x-prefixed 20-byte Ethereum address
- `cursor` (string): string - opaque cursor from a prior response's next_cursor
- `limit` (integer): integer 1-100, default 25

### `evm_tx_decode` (~109 tokens)

Decode an Ethereum transaction: function, args, amounts, ENS. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/evm/tx-decode.

Input parameters:

- `tx_hash` (string, required): string (required) - 0x-prefixed 32-byte transaction hash

### `fees_estimate` (~116 tokens)

Estimate a Solana transaction's total fee cost. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/fees/estimate.

Input parameters:

- `accounts` (array): array of pubkeys
- `priority` (string): low|medium|high
- `transaction_base64` (string): string (or use accounts)

### `fees_optimize` (~104 tokens)

Return an unsigned, fee-optimized version of a transaction. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/fees/optimize.

Input parameters:

- `priority` (string): low|medium|high
- `transaction_base64` (string): string

### `fleet_kpis` (~141 tokens)

Fleet KPIs for ExchangeRebel, computed live from the systems themselves: services live, paid endpoints, MCP tools, external settlements, agents served, bots connected, script calls served, and repeat customers — each with its printed definition and, where a counter is new, its counting-since date. Counts only: no customer identities, no per-agent details, ever. The same result object powers the human board page, so the machine door and the human door can never disagree. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/api/kpis.

### `fleet_what_changed` (~202 tokens)

Fleet freshness / what changed across ExchangeRebel since a timestamp: per-service freshness metadata only (as_of stamps and whether each dataset-grade service's data is newer than `since`), each service's changes-op pointer (supported, paid, price, basis, endpoint) mirrored from its own free health envelope, and whitelisted already-free freshness facts. Change COUNTS are returned only for the free Ideas Commons event log; paid services' change counts are part of their paid changes ops and are never republished here. Never returns record contents or paid payloads. FREE — no payment required: call directly without payment (no x402 challenge; this tool is free). HTTP equivalent: GET https://exchangerebel.com/api/freshness.

Input parameters:

- `since` (string, required): ISO-8601 timestamp, e.g. 2026-10-01T00:00:00Z. Required. A future timestamp is valid and returns zeros/nulls.

### `funding_funding` (~101 tokens)

Fetch funding rates across three perp venues. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/funding/funding/{symbol}.

Input parameters:

- `symbol` (string, required): Symbol, flexible format (BTC, btc-usdt, BTC/USDT)

### `funding_liquidations` (~103 tokens)

Fetch the liquidation heatmap for a symbol. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/funding/liquidations/{symbol}.

Input parameters:

- `hours` (string): Window hours, default 24
- `symbol` (string, required): Symbol

### `jobs_search` (~135 tokens)

Search remote jobs across three public boards. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/jobs/search.

Input parameters:

- `location` (string): Location substring
- `q` (string): Keyword query (titles/companies/tags)
- `remote` (string): true = remote only, false = on-site only
- `source` (string): Comma-separated subset of arbeitnow,himalayas,remotive

### `macro_bills` (~96 tokens)

Congress bills (Congress.gov, public domain). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/macro/bills.

Input parameters:

- `congress` (string): Congress number
- `limit` (string): Result limit

### `macro_census_population` (~90 tokens)

Population data (US Census, public domain). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/macro/census/population.

Input parameters:

- `state` (string): State filter

### `macro_cpi` (~97 tokens)

US CPI series (BLS, public domain). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/macro/cpi.

Input parameters:

- `end` (string): End period
- `start` (string): Start period

### `macro_fed_rate` (~81 tokens)

Federal funds rate (FRED, public domain). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/macro/fed-rate.

### `macro_payrolls` (~100 tokens)

US payrolls series (BLS, public domain). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/macro/payrolls.

Input parameters:

- `end` (string): End period
- `start` (string): Start period

### `macro_unemployment` (~97 tokens)

US unemployment series (BLS, public domain). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/macro/unemployment.

Input parameters:

- `end` (string): End period
- `start` (string): Start period

### `news_search` (~111 tokens)

Search global news coverage (GDELT). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/news/search.

Input parameters:

- `days` (string): Lookback days
- `lang` (string): Language filter
- `limit` (string): Result limit
- `q` (string, required): Query

### `news_timeline` (~96 tokens)

Coverage timeline for a query (GDELT). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/news/timeline.

Input parameters:

- `days` (string): Lookback days
- `q` (string, required): Query

### `news_trending` (~94 tokens)

Trending stories (GDELT). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/news/trending.

Input parameters:

- `days` (string): Lookback days
- `limit` (string): Result limit

### `power_flags_battery` (~103 tokens)

ERCOT daily battery charge/discharge windows. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/power/flags/battery.

Input parameters:

- `hub` (string): Optional ERCOT hub filter (HB_*); omit for all 7 hubs

### `power_flags_congestion` (~125 tokens)

ERCOT hub-spread congestion spikes, ranked. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/power/flags/congestion.

Input parameters:

- `threshold` (string): Spread threshold USD/MWh, 5..500, default 25
- `window_hours` (string): Trailing window in hours, 1..168, default 48

### `power_flags_dart` (~167 tokens)

ERCOT DA vs RT divergence flags for one hub. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/power/flags/dart.

Input parameters:

- `hub` (string, required): ERCOT hub: HB_NORTH | HB_HOUSTON | HB_SOUTH | HB_WEST | HB_PAN | HB_BUSAVG | HB_HUBAVG
- `threshold` (string): Divergence threshold USD/MWh, 5..500, default 25
- `window_hours` (string): Trailing window in hours, 1..168, default 48

### `power_flags_negative` (~107 tokens)

ERCOT negative-price windows: 24h/7d counts. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/power/flags/negative.

Input parameters:

- `hub` (string): Optional ERCOT hub filter (HB_*); omit for all 7 hubs

### `power_scan` (~79 tokens)

Ranked ERCOT multi-hub power-flag scan. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/power/scan.

### `recalls_recall` (~123 tokens)

Fetch one full normalized recall record by its id. $0.02 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/recalls/recall/{id}.

Input parameters:

- `id` (string, required): Source-prefixed record id, e.g. fda:H-1395-2026, cpsc:11020, nhtsa:19V903000

### `recalls_search` (~186 tokens)

Search FDA, CPSC, and NHTSA recall records in one call. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/recalls/search.

Input parameters:

- `class` (string): FDA hazard class I | II | III
- `from` (string): Announced-date lower bound YYYY-MM-DD
- `limit` (string): 1-50, default 20
- `q` (string): Free-text query over product, firm, hazard (or use filters alone)
- `source` (string): fda | cpsc | nhtsa | all (default all)
- `to` (string): Announced-date upper bound YYYY-MM-DD

### `recalls_vehicle` (~125 tokens)

List NHTSA recall campaigns for one vehicle. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/recalls/vehicle.

Input parameters:

- `make` (string, required): Vehicle make, e.g. ford
- `model` (string, required): Vehicle model, e.g. f-150
- `year` (string, required): Model year, e.g. 2025

### `rpc_call` (~220 tokens)

Call Solana JSON-RPC (cached, failover proxy). $0.01 per call via MCP (each tool call is toll-gated individually; the direct HTTP gateway at /toll/rpc is billed as $0.01 per 1,000 requests = $0.00001/request) — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/rpc/. Generic Solana JSON-RPC passthrough (cached, failover proxy): pass the RPC method and its params array. Intended for standard Solana read methods (getBalance, getBlock, getTransaction, getSignaturesForAddress, getAccountInfo, ...). One MCP tool call is one RPC call.

Input parameters:

- `method` (string, required): Solana JSON-RPC method name, e.g. getBalance
- `params` (array): Positional params array for the RPC method

### `screener_quote` (~91 tokens)

Single-ticker snapshot (delayed quote). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/screener/quote/{ticker}.

Input parameters:

- `ticker` (string, required): Ticker symbol

### `screener_screen` (~234 tokens)

Screen the S&P 500 with Finviz-style filters. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/screener/screen.

Input parameters:

- `change_pct_max` (number): number
- `change_pct_min` (number): number
- `country` (string): string
- `industry` (string): string
- `limit` (integer): integer
- `market_cap_max` (number): number
- `market_cap_min` (number): number
- `offset` (integer): integer
- `pe_max` (number): number
- `pe_min` (number): number
- `price_max` (number): number
- `price_min` (number): number
- `sector` (string): string
- `sort_by` (string): string
- `sort_dir` (string): string
- `volume_max` (number): number
- `volume_min` (number): number

### `sec_fundamentals` (~92 tokens)

Fetch SEC company fundamentals for a ticker. $0.02 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/sec/fundamentals/{ticker}.

Input parameters:

- `ticker` (string, required): US ticker symbol

### `secfilings_changes` (~163 tokens)

SEC filing changes since a timestamp. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/secfilings/changes.

Input parameters:

- `cik` (string): CIK, 1-10 digits — provide cik OR ticker
- `cursor` (string): Opaque cursor from a prior /changes call
- `form` (string): Optional form filter (exact or base form)
- `since` (string): ISO-8601 timestamp; only filings first seen after it
- `ticker` (string): Ticker symbol — provide cik OR ticker

### `secfilings_status` (~129 tokens)

SEC EDGAR filing status for a filer. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/secfilings/status.

Input parameters:

- `cik` (string): CIK, 1-10 digits — provide cik OR ticker
- `form` (string): Optional form filter (exact or base form)
- `ticker` (string): Ticker symbol — provide cik OR ticker

### `short_short` (~89 tokens)

Fetch FINRA short interest for a ticker. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/short/short/{ticker}.

Input parameters:

- `ticker` (string, required): US ticker symbol

### `spend_check` (~120 tokens)

Check a proposed agent spend against the agent's budget policy. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/spend/check.

Input parameters:

- `agent_id` (string): string
- `amount_usd_cents` (integer): integer
- `category` (string): string (optional)
- `recipient` (string): string (optional)

### `stats_indicator` (~136 tokens)

Normalised indicator series for 30 countries. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/stats/indicator.

Input parameters:

- `country` (string, required): ISO alpha-2 country code
- `indicator` (string, required): Indicator id: cpi_index | cpi_yoy_pct | unemployment_rate | average_earnings | gdp_growth
- `periods` (string): Number of periods, 1-36

### `stats_trade` (~212 tokens)

Aggregate HS trade flows (Comext EU; StatCan CA-US). $0.02 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/stats/trade.

Input parameters:

- `flow` (string, required): IMPORT | EXPORT
- `hs_section` (string): StatCan CA-US only: HS section I-XXI or TOTAL
- `partner` (string): WORLD | INT_EU27_2020 | EXT_EU27_2020 | ISO alpha-2
- `period` (string): YYYY or YYYY-MM
- `periods` (string): StatCan only: number of periods, 1-24
- `product` (string): TOTAL or HS2/HS4/HS6 code (EU reporters)
- `reporter` (string, required): Reporter: EU-27 ISO alpha-2 or CA

### `telegram_provision` (~126 tokens)

Allocate a Telegram bot for one month. $0.50 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/telegram/provision. STATE-CHANGING: one settled call allocates one Telegram bot for one month. Payment is settle-once (replay-protected): do NOT retry blindly after a timeout — the call result returns the allocation, which is your receipt.

### `tokens_score` (~93 tokens)

0-100 token safety score with explainable factors. $0.02 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/tokens/score/{mint}.

Input parameters:

- `mint` (string, required): Solana mint address

### `tokens_token` (~94 tokens)

Token mint info: name, symbol, decimals, supply, authorities. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/tokens/token/{mint}.

Input parameters:

- `mint` (string, required): Solana mint address

### `toxicity_analyze` (~222 tokens)

Score a comment for toxicity (Perspective-compatible). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/toxicity/analyze.

Input parameters:

- `clientToken` (string): string - optional, echoed back in the response
- `comment` (object, required): object (required) - {text: string} comment to score, Perspective comments:analyze body
- `doNotStore` (boolean): boolean - optional; comment text is never stored regardless
- `languages` (array): array of strings - optional; en = full attributes, fr/es/it/pt/tr/ru = TOXICITY-only
- `requestedAttributes` (object, required): object (required) - attribute configs for TOXICITY, SEVERE_TOXICITY, IDENTITY_ATTACK, INSULT, THREAT, PROFANITY (FLIRTATION unsupported)

### `toxicity_analyze_batch` (~118 tokens)

Score up to 100 comments for toxicity in one call. $0.25 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/toxicity/analyze/batch.

Input parameters:

- `comments` (array, required): array (required) - up to 100 comments:analyze requests, each {comment:{text}, requestedAttributes, languages?}

### `trademarks_case` (~96 tokens)

Fetch full case detail for a trademark serial. $0.10 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/trademarks/case/{serialNumber}.

Input parameters:

- `serialNumber` (string, required): 8-digit USPTO serial number

### `trademarks_search` (~165 tokens)

Search US trademark records by wordmark text. $0.25 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/trademarks/search. (The HTTP endpoint also accepts a POST form; this tool is the canonical search.)

Input parameters:

- `class` (string): International class 1-45
- `limit` (string): 1-25, default 10
- `owner` (string): Owner name match
- `q` (string): Wordmark text (required unless owner given)
- `status` (string): live | dead | 3-digit USPTO status code

### `trademarks_watch` (~172 tokens)

Register a 30-day trademark watch (daily checks). $0.50 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/trademarks/watch. STATE-CHANGING: one settled call registers one 30-day trademark watch; the returned watch id is your receipt. Payment is settle-once (replay-protected): do NOT retry blindly after a timeout — a duplicate call creates a duplicate watch.

Input parameters:

- `mark_text` (string): string - mark text to watch for new filings
- `serial_numbers` (array): array of 8-digit serial numbers to watch for status changes (max 20)

### `trademarks_watch_changes` (~95 tokens)

Fetch changes detected for a trademark watch. $0.05 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/trademarks/watch/{id}/changes.

Input parameters:

- `id` (string, required): Watch id returned by POST /watch

### `tron_estimate` (~141 tokens)

Estimate TRON energy/bandwidth needed for a USDT transfer. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/tron/estimate.

Input parameters:

- `amount_usdt` (number): number
- `contract_call` (boolean): boolean (optional)
- `from` (string): string - TRON address
- `to` (string): string - TRON address
- `trx_balance_sun` (number): number (optional)

### `txcheck_check` (~142 tokens)

Pre-sign verdict for an unsigned Solana transaction. $0.01 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: POST https://exchangerebel.com/toll/txcheck/check.

Input parameters:

- `policy` (object): object (optional): {max_sol_out_lamports, max_token_out_bps_by_mint {mint: bps}, allowed_programs, blocked_programs, blocked_addresses, fail_on_unknown_program}
- `tx` (string, required): string - base64 unsigned transaction (required)

### `weather_alerts` (~93 tokens)

Active weather alerts (US points; NOAA). $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/weather/alerts.

Input parameters:

- `lat` (string, required): Latitude
- `lon` (string, required): Longitude

### `weather_current` (~96 tokens)

Current conditions (metric + imperial). Source: Open-Meteo. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/weather/current.

Input parameters:

- `lat` (string, required): Latitude
- `lon` (string, required): Longitude

### `weather_forecast` (~115 tokens)

Daily forecast, 1-16 days. Source: Open-Meteo. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/weather/forecast.

Input parameters:

- `days` (string): 1-16, default 7
- `lat` (string, required): Latitude
- `lon` (string, required): Longitude

### `wiki_answer` (~84 tokens)

Answer a query from Wikipedia content. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/wiki/answer.

Input parameters:

- `q` (string, required): Question or topic

### `wiki_related` (~99 tokens)

Articles linked from the resolved Wikipedia page. $0.005 per call — USDC on Solana via x402 (over MCP: call without payment to get the PaymentRequired challenge, then retry with the payment at _meta["x402/payment"]). HTTP equivalent: GET https://exchangerebel.com/toll/wiki/related.

Input parameters:

- `limit` (string): Max 50, default 10
- `q` (string, required): Question or topic

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-exchangerebel-exchangerebel/exchangerebel#diagnostics

## Score history

- 2026-10-17: 58
- 2026-10-16: 58
- 2026-10-15: 58
- 2026-10-14: 57

## Common questions

### What is the ExchangeRebel — pay-per-call APIs for AI agents (x402 on… MCP server?

ExchangeRebel — pay-per-call APIs for AI agents (x402 on… is an MCP server listed in the public MCP registry as com.exchangerebel/exchangerebel. 76 pay-per-call APIs for AI agents: market, company, weather and dev tools, paid via x402 on Solana. This page covers its hosted endpoint (https://exchangerebel.com/mcp).

### Is the ExchangeRebel — pay-per-call APIs for AI agents (x402 on… MCP server safe to use?

ExchangeRebel — pay-per-call APIs for AI agents (x402 on… scores 58 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the ExchangeRebel — pay-per-call APIs for AI agents (x402 on… MCP server expose?

ExchangeRebel — pay-per-call APIs for AI agents (x402 on… exposes 123 tools: address_verify, batch_score, books_author, books_authors, books_isbn, and 118 more. Their descriptions and schemas cost roughly 14,042 tokens of context every time the server is loaded.

### Does the ExchangeRebel — pay-per-call APIs for AI agents (x402 on… MCP server require authentication?

No. We connected to ExchangeRebel — pay-per-call APIs for AI agents (x402 on… without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the ExchangeRebel — pay-per-call APIs for AI agents (x402 on… MCP server still maintained?

ExchangeRebel — pay-per-call APIs for AI agents (x402 on… is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://exchangerebel.com/mcp
- Website: https://exchangerebel.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-exchangerebel-exchangerebel/exchangerebel.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-exchangerebel-exchangerebel/exchangerebel.json
- HTML version of this page: https://verifymcp.io/servers/com-exchangerebel-exchangerebel/exchangerebel
