# FlexYield — blockchain RPC gateway (remote · flexyield.io)

RPC gateway for agents: six mainnets, measured failover, a key without signup, pay per call in USDC.

- Trust score: 70/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `flexyield.io`: 29/100, [markdown](https://verifymcp.io/servers/io-flexyield-gateway/flexyield.md), [page](https://verifymcp.io/servers/io-flexyield-gateway/flexyield)
- remote · `flexyield.io`: 70/100 (this document), [markdown](https://verifymcp.io/servers/io-flexyield-gateway/flexyield-2.md), [page](https://verifymcp.io/servers/io-flexyield-gateway/flexyield-2)

## Channel facts

- Endpoint: `https://flexyield.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.3.2`

## 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-09-20.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (revoke_api_key).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - 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**: 81/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 6852 tokens (~180/item across 38 items; 35 tools + 3 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 74% 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.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the FlexYield — blockchain RPC gateway MCP server?

FlexYield — blockchain RPC gateway is a hosted endpoint at https://flexyield.io/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 io-flexyield-gateway 'https://flexyield.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-flexyield-gateway": {
      "url": "https://flexyield.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-flexyield-gateway": {
      "type": "http",
      "url": "https://flexyield.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-flexyield-gateway]
url = "https://flexyield.io/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add io-flexyield-gateway --url 'https://flexyield.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-flexyield-gateway:
    url: "https://flexyield.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-flexyield-gateway": {
      "Transport": "http",
      "Url": "https://flexyield.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-flexyield-gateway -t streamable-http -u 'https://flexyield.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-flexyield-gateway": {
      "type": "http",
      "url": "https://flexyield.io/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-09-20 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 68, +1)

- [functional] Server version: 1.3.1 → 1.3.2

### 2026-09-15 (score 67, 0)

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

### 2026-09-14 (score 67)

First indexed and scored.

## MCP tools (35)

### `get_key` (~160 tokens)

Get a FlexYield API key with no signup: public supply, 10,000 weighted units per UTC day, 5 requests/s, every tool. Use it once, when you have no key yet; then send the key as the bearer on every other call. Not for a key you already hold (use what_can_i_do to see where it stands) and not for a human's paid plan (use list_plans). Returns JSON: key (shown once), key_prefix, door (how the key was obtained: public, wallet-bound or owner-adopted), fences (the limits) with doorways (the path past each limit), terms, skill. Creates a key; at most 3 per IP per day. No key needed.

### `bind_key_start` (~139 tokens)

Step 1 of binding the API key you are calling with to a wallet: returns the exact SIWE (EIP-4361) message that wallet must sign. Use it when your key came from get_key and you want it to persist across sessions with 1M units/month. Not for claiming an agent you already run on another key (use claim_agent_start) and not for a key that is already bound. Returns JSON: message_to_sign, expires_in_seconds, note. Follow with bind_key_complete before the message expires. Needs your API key.

Input parameters:

- `address` (string, required): The wallet's 0x address (your identity)

### `bind_key_complete` (~152 tokens)

Step 2 of binding the API key you are calling with to a wallet: pass the wallet's signature over the message from bind_key_start. Use it right after bind_key_start, with the same key. Not for the first step (use bind_key_start) and not for agent claims (use claim_agent_complete). Returns JSON: bound, door (now wallet-bound), key_prefix, bound_address, fences (the limits) with doorways (the path past each), terms, skill. Idempotent for the same wallet. Needs your API key.

Input parameters:

- `address` (string, required): The wallet's 0x address
- `signature` (string, required): personal_sign signature of the message from bind_key_start

### `claim_agent_start` (~155 tokens)

Step 1 of claiming an agent by its EVM address for the account you are calling with: returns the exact SIWE message the agent's wallet must sign. Use it when an account owner wants a budgeted key for an agent that proves control of a wallet. Not for binding your own key (use bind_key_start) and not for plain key creation without a wallet (use create_api_key). Returns JSON: address, message_to_sign, expires_in_seconds, note. Follow with claim_agent_complete. Needs your API key.

Input parameters:

- `address` (string, required): The agent's 0x wallet address (its identity)
- `name` (string, required): A label for the agent, e.g. 'treasury-bot'

### `claim_agent_complete` (~158 tokens)

Step 2 of claiming an agent: verify the wallet's signature over the message from claim_agent_start and equip the agent with its own budgeted API key (default 50000 requests/month). Use it right after claim_agent_start. Not for the first step and not for changing a budget later (use configure_key). Returns JSON: agent, address, monthly_request_cap, plaintext_token (shown once — store it), note. Creates a key. Needs your API key.

Input parameters:

- `address` (string, required): The agent's 0x address (as in claim_agent_start)
- `monthly_request_cap` (integer): Monthly budget; omit for the default
- `signature` (string, required): 65-byte 0x signature of the exact message

### `create_api_key` (~174 tokens)

Create an additional API key on the account you are calling with (a name, optional monthly unit cap). Use it to give a service or a teammate its own key with its own budget. Not for your first key (use get_key, no signup) and not for a wallet-proven agent key (use claim_agent_start). Returns JSON: id, name, monthly_request_cap, prefix, plaintext_token (shown once — store it, it cannot be read again), note. Creates a key; a key obtained from get_key cannot mint further keys. Needs your API key.

Input parameters:

- `monthly_request_cap` (integer): Optional monthly request budget for this key (fleet spend control); omit for uncapped
- `name` (string, required): A label for the key, e.g. 'agent-7' or 'Production'

### `configure_key` (~270 tokens)

Configure one API key of your account by id: monthly_request_cap (a monthly unit budget; omitted = unchanged, 0 = remove the cap), enabled (the list of services it may use: rpc, data, gas, tx_status, ens, prices, contracts, utils) and caps ({service_key: units} per service). Use it to budget or restrict one key; key ids come from list_api_keys. Not for account-wide service settings (use configure_services) and not for revoking (use revoke_api_key). Returns JSON: id, name, monthly_request_cap, note when the budget changed; id, name, window, key_id, services when services changed. Needs your API key.

Input parameters:

- `caps` (object): Per-service unit caps for this key, e.g. {'gas': 10000}
- `enabled` (array): Service keys this key may use, e.g. ['rpc', 'gas', 'data']
- `id` (integer, required): The API key's id (from list_api_keys)
- `monthly_request_cap` (integer): Monthly unit budget for this key; a runaway agent stops here, never at your card
- `window` (string): Usage window in the answer: '24h', '7d', '30d' (default)

### `revoke_api_key` (~122 tokens)

Revoke one API key of your account by id; calls with that key stop working immediately and the key cannot be restored. Use it when a key leaked or a service is retired; ids come from list_api_keys. Not for pausing a key (set its budget to a small cap with configure_key instead) and not for the key you are calling with unless you hold another. Returns JSON: id, name, revoked_at. Idempotent. Needs your API key.

Input parameters:

- `api_key_id` (integer, required): The id of the API key to revoke

### `list_api_keys` (~171 tokens)

List the API keys of your account (scope='keys', default) or its agent fleet with wallet claims and budgets (scope='agents'). Use it to find a key id before configure_key or revoke_api_key, or to see which keys are in use. Not for usage numbers (use get_usage) and not for your own key's standing (use what_can_i_do). Returns JSON: count, keys[{id, name, prefix, status, monthly_request_cap, created_at, last_used_at, agent}] for keys; an array of {name, address, claimed_via, claimed_at, key_id, key_prefix, monthly_request_cap, services_off} for agents. Read-only. Needs your API key.

Input parameters:

- `scope` (string): 'keys' (default) or 'agents'

### `get_billing_status` (~157 tokens)

Billing state of your account: tier, whether payments are live, the subscription (plan, interval, price in USD cents, status, period end, cancel-at-period-end), the card on file (brand, last4, expiry — never the number), prepaid pack balances, any founding-price reservation and the soft-landing state. Use it before buy_pack or when a call was refused for budget reasons. Not for usage numbers (use get_usage), invoices (use get_statement) or plan prices (use list_plans). Returns JSON: tier, payments_live, billing_customer, subscription, payment_method, founding_reservation, packs, soft_landing. Read-only; plan changes happen in the web console. Needs your API key.

### `configure_services` (~224 tokens)

Read or change the account-wide service settings: which gateway services (rpc, data, gas, tx_status, ens, prices, contracts, utils) are enabled and an optional monthly unit cap per service. Use it with no arguments to read; pass enabled and/or caps to change. Not for one key's budget or services (use configure_key). Returns JSON: window, key_id, services[{service, enabled, cap, used}]. A capped service answers error -32014 once month-to-date units reach the cap; a disabled one answers -32012. Needs your API key.

Input parameters:

- `caps` (object): Monthly unit caps by service key, e.g. {"gas": 5000}; an empty value clears a cap
- `enabled` (array): Full list of service keys to keep ON; every other service is switched off
- `window` (string): Usage window for the report: 1h, 6h, 12h, 24h, 3d, 7d or 30d (default 30d)

### `update_account` (~239 tokens)

Update your account's preferences: notifications (notify_incidents, time_zone) and/or the insights that tailor the service (use_case, team_size, volume, region, previous_provider, referral_source, chains, wish_chains, wish_chain_other). Use it when the owner's preferences change; only the fields you pass change. Not for keys (use configure_key), services (use configure_services) or billing (web console). Returns JSON: notify_usage_80, notify_usage_100, notify_incidents, time_zone after a notification change; insights after an insights change. Needs your API key.

Input parameters:

- `chains` (array)
- `notify_incidents` (boolean): E-mail on incidents affecting your chains
- `previous_provider` (string)
- `referral_source` (string)
- `region` (string)
- `team_size` (string)
- `time_zone` (string): IANA time zone for mails and statements, e.g. 'Europe/Vienna'
- `use_case` (string)
- `volume` (string)
- `wish_chain_other` (string)
- `wish_chains` (array)

### `join_enterprise_wishlist` (~146 tokens)

Send FlexYield an enterprise wishlist: what would need to be true for you to run on FlexYield (chains, SLAs, compliance, features, prices; max 1000 chars) plus a contact email; the founders reply by email. Use it when the public plans do not fit and a human wants to talk. Not for bugs or account questions (use manage_tickets) and not for product ideas from a signed-in account (use manage_feedback). Returns JSON: sent, contact. Creates a record and a mail. No key needed.

Input parameters:

- `email` (string, required): Contact email address for the reply
- `items` (string, required): Your wishlist, free text

### `join_waitlist` (~156 tokens)

Join the FlexYield early-access waitlist with an email and a qualifier (developer, investor or curious). Use it only when a human asked to be kept informed; an agent that needs access now should call get_key instead. Not for support (use manage_tickets) or enterprise needs (use join_enterprise_wishlist). Returns JSON: joined, already_on_list. Creates a waitlist entry. No key needed.

Input parameters:

- `email_address` (string, required): Contact email address
- `product_updates` (null|boolean): true only if the person explicitly agreed to receive product-update e-mails (default false)
- `qualifier` (string, required): developer | investor | curious
- `source` (null|string): How you heard about FlexYield

### `list_plans` (~130 tokens)

List FlexYield's public plans: price in integer USD cents, billing interval, monthly included units and burst rate limits, plus the enterprise line and the signup URL. Use it to compare plans or before telling an owner what an upgrade costs. Not for what a single call costs (use get_quote), your own tier or balances (use get_billing_status) or the break-even at your volume (use what_can_i_do). Returns JSON: plans[{key, name, price_cents, interval, included_units, rate_limit, …}], enterprise, signup_url. Read-only. No key needed.

### `get_usage` (~350 tokens)

Your account's usage in one of three views. view='report': requests, weighted units, errors and latency per key, method and chain over a look-back window (hours, default 24; optional chain). view='stats': one console report — report='latency' | 'errors' | 'spend' | 'cache' — for a window ('24h', '7d', '30d'). view='volume': request counts over time (optional chain). Use it to answer 'how much did we use, where, and how fast'. Not for invoices (use get_statement), balances (use get_billing_status) or one key's settings (use list_api_keys). Returns JSON: report → since, total_requests, weighted_units, by_class, cache_hits, success_rate, p50/p95_duration_ms, by_key, by_method, by_chain; stats → window, buckets, series, summary and report-specific totals; volume → window, bucket_seconds, buckets. Read-only. Needs your API key.

Input parameters:

- `chain` (string): Filter by chain, e.g. 'eth_mainnet' (report, volume)
- `hours` (integer): Look-back window in hours for view='report' (default 24)
- `report` (string): For view='stats': 'latency' | 'errors' | 'spend' | 'cache'
- `view` (string, required): 'report' (per-key usage), 'stats' (a console report), or 'volume' (over time)
- `window` (string): For view='stats' and 'volume': '24h' (default), '7d', '30d'

### `get_statement` (~192 tokens)

Your account's statement for one billing period (default: the current one): invoice facts plus usage grouped by API key or agent, chain and method class — requests, weighted units, cache hits, refusals; period='list' enumerates the periods available. Use it for month-end reconciliation or to show an owner what a period cost. Not for live usage (use get_usage) or the card and subscription (use get_billing_status). Returns JSON: account, period, scope, plan, invoices, totals, at_the_limit, keys, generated_at; for 'list' → scope, periods. An agent's own key sees only that agent's usage; periods follow the subscription cycle or calendar months. Read-only. Needs your API key.

Input parameters:

- `period` (string): Period key = its start date, e.g. 2026-08-15; period: 'list' lists the periods

### `manage_tickets` (~275 tokens)

Your support tickets with FlexYield. action='create' (subject, message, optional request_id of the failing call, optional category) opens a ticket with the call's evidence attached; action='list' (optional status); action='get' (reference); action='reply' (reference, message, optional resolve/reopen). Use it when a call was refused or failed and the doorway said to file it, or to follow up. Not for reading what an error code means (use explain_error first) and not for product ideas (use manage_feedback). Returns JSON: create/reply → reference, subject, status, category, priority, channel, created_at, last_activity_at, url; list → tickets; get → the same plus messages, evidence, suggested_paths. Needs your API key.

Input parameters:

- `action` (string, required): 'create' | 'list' | 'get' | 'reply'
- `category` (string)
- `message` (string)
- `reference` (string): The ticket reference for 'get' and 'reply'
- `reopen` (boolean)
- `request_id` (string): The request id from a failing call's error body
- `resolve` (boolean)
- `status` (string): For 'list': filter by status
- `subject` (string)

### `manage_feedback` (~208 tokens)

Product feedback to FlexYield. action='submit' (kind: 'feature' | 'chain' | 'praise' | 'complaint' | 'other', title, optional body, optional chain) files it and we answer on the feedback page; action='list' (optional status) shows what you filed and our replies. Use it for ideas, a chain you want added, or praise and complaints that need no fix on your account. Not for a failing call or a refusal (use manage_tickets, it carries the evidence) and not for enterprise terms (use join_enterprise_wishlist). Returns JSON: submit → id, kind, title, chain, status, reply, created_at; list → feedback. Needs your API key.

Input parameters:

- `action` (string, required): 'submit' | 'list'
- `body` (string)
- `chain` (string)
- `kind` (string)
- `status` (string)
- `title` (string)

### `get_balances` (~169 tokens)

Native balance and ERC-20 token balances of an address on one chain (eth_mainnet, base_mainnet, arbitrum_one, optimism_mainnet, polygon_pos, solana_mainnet; tokens where a data-capable upstream exists). Use it for a portfolio or a pre-flight funds check. Not for transfer history (use get_history) and not for a raw eth_getBalance you want to shape yourself (use rpc_call). Returns JSON: chain, address, native, tokens, tokens_note. Read-only; costs 10 weighted units, metered on your key. Needs your API key.

Input parameters:

- `address` (string, required): Account address (0x… for EVM, base58 for Solana)
- `chain` (string, required): Chain slug, e.g. 'eth_mainnet'

### `get_history` (~135 tokens)

Recent asset transfers (sent and received, newest first) of an address on one EVM chain with a data-capable upstream. Use it to answer 'what moved in or out of this address lately'. Not for current balances (use get_balances), one transaction's state (use get_tx_status) or Solana. Returns JSON: chain, address, transfers[]. Read-only; costs 10 weighted units, metered on your key. Needs your API key.

Input parameters:

- `address` (string, required): Account address (0x… for EVM)
- `chain` (string, required): Chain slug, e.g. 'eth_mainnet'

### `get_prices` (~214 tokens)

Prices. kind='gas' (chain): EIP-1559 gas recommendations (slow/standard/fast) computed from our pool on an EVM chain, 1 weighted unit. kind='token' (symbols, comma-separated e.g. 'ETH,USDC'): current token prices in USD. Use it before sending a transaction (gas) or to value a balance (token). Not for what a FlexYield call costs in units (use get_quote) and not for plan prices (use list_plans). Returns JSON: gas → chain, base_fee_per_gas, recommendations, computed_from, computed_at, unit_weight; token → prices, quote, source, checked_at. Read-only. Needs your API key.

Input parameters:

- `chain` (string): For 'gas': EVM chain slug, e.g. 'eth_mainnet'
- `kind` (string, required): 'gas' or 'token'
- `symbols` (string): For 'token': comma-separated symbols, e.g. 'eth,btc'

### `get_tx_status` (~178 tokens)

Status of one transaction hash on any supported chain: confirmed, failed, pending or unknown, with confirmations and gas on EVM chains or slot and commitment on Solana. Use it to poll a transaction you sent or were told about. Not for an address's transfers (use get_history) and not for decoding what the transaction did (use decode_calldata). Returns JSON: chain, hash, status, checked_at, unit_weight, plus block_number, confirmations, gas_used, effective_gas_price_wei (EVM) or slot, confirmation_status (Solana). Read-only; metered on your key. Needs your API key.

Input parameters:

- `chain` (string, required): Chain slug, e.g. 'eth_mainnet'
- `hash` (string, required): Transaction hash (0x… for EVM, base58 signature for Solana)

### `resolve_ens` (~161 tokens)

ENS resolution on Ethereum mainnet: pass a name ('vitalik.eth') to get its address, or an address (0x…) to get its reverse-record name, read on-chain through our pool. Use it whenever a user gives you a .eth name instead of an address. Not for other name systems and not for balances (use get_balances with the resolved address). Returns JSON: forward → name, address, resolved, checked_at; reverse → address, name, resolved, note, checked_at. Reverse records are self-declared — forward-resolve the name before trusting it. Read-only. Needs your API key.

Input parameters:

- `query` (string, required): ENS name (e.g. 'vitalik.eth') or 0x-address

### `get_abi` (~169 tokens)

The verified ABI of a contract (with its name and match level) from Sourcify's open dataset on eth_mainnet, base_mainnet, arbitrum_one, optimism_mainnet or polygon_pos. Use it before calling or decoding a contract you do not have the ABI for. Not for decoding a specific calldata blob (use decode_calldata, it fetches the ABI itself) and not for a function selector (use convert_evm). Returns JSON: chain, address, verified, name, match, abi, source; an unverified contract returns verified=false with a note on how to verify it. Read-only. Needs your API key.

Input parameters:

- `address` (string, required): Contract address (0x…)
- `chain` (string, required): Chain slug, e.g. 'eth_mainnet'

### `decode_calldata` (~168 tokens)

Decode a transaction's calldata against the target contract's verified ABI (Sourcify): the function signature, its selector and the argument values (static types decoded; dynamic types shown raw and labelled). Use it to explain what a pending or past transaction does. Not for the whole ABI (use get_abi), a transaction's status (use get_tx_status) or computing a selector from a signature (use convert_evm). Returns JSON: chain, address, function, selector, args, source. Read-only. Needs your API key.

Input parameters:

- `address` (string, required): Contract address (0x…)
- `chain` (string, required): Chain slug, e.g. 'eth_mainnet'
- `data` (string, required): Calldata (0x…, at least the 4-byte selector)

### `convert_evm` (~242 tokens)

Offline EVM utilities, no chain call: op='checksum' (EIP-55 checksum and validity of input=address), op='convert' (unit conversion wei…gwei…eth: input=value, from=unit, to=unit), op='selector' (4-byte selector and topic0 of input=function signature) and op='keccak' (keccak256 of input text). Use it for address hygiene and unit maths before an rpc_call. Not for verifying a signature (use verify_signature) or decoding calldata (use decode_calldata). Returns JSON: checksum → valid_address, checksummed; convert → value, from, to, result; selector → signature, selector, topic0; keccak → input, keccak256. Read-only, deterministic. Needs your API key.

Input parameters:

- `from` (null|string): convert only: source unit, e.g. 'eth'
- `input` (string, required): The address / value / signature / text
- `op` (string, required): One of: checksum, convert, selector, keccak
- `to` (null|string): convert only: target unit, e.g. 'wei'

### `verify_signature` (~238 tokens)

Verify a signature offline: mode='personal' checks an EIP-191 personal_sign signature (message, 65-byte 0x signature, optional expected address); mode='siwe' checks a SIWE / EIP-4361 message (the exact signed text plus signature — parses the fields, checks signature and expiry; domain and nonce policy stay with you). Use it to authenticate a wallet-holder or validate a login message. Not for binding or claiming keys on FlexYield (use bind_key_complete / claim_agent_complete, they verify themselves) and not for hashing (use convert_evm). Returns JSON: personal → recovered_address, valid, expected_address; siwe → valid, recovered_address, expired, fields, note. Recovery only — FlexYield never holds keys. Read-only. Needs your API key.

Input parameters:

- `address` (null|string): personal mode: expected signer address
- `message` (string, required): The exact message text that was signed
- `mode` (string, required): 'personal' or 'siwe'
- `signature` (string, required): 0x-hex 65-byte signature (r‖s‖v)

### `what_can_i_do` (~243 tokens)

The status overview of the API key you are calling with: its door (how it was obtained: public via get_key, wallet-bound, or adopted by a paying owner), its tier, the budgets left (month, day, prepaid packs), the fences (its limits) each with a doorway (the path past that limit: bind, adopt, buy a pack, or a ticket), your last-30-day volume priced on every lane (a lane = a price tier: cheap, balanced, fast), the break-even sentence (the volume at which a paid plan beats pay-per-call, for your owner), the account features and the other doors. Use it first in a session, and whenever a call was refused, to decide what to do next. Not for detailed usage (use get_usage), billing facts (use get_billing_status) or a single call's price (use get_quote). Returns JSON: you, budgets, fences_as_doorways, volume_30d_units, ladder_at_your_volume, break_even, recommendation, active_advice, account_features, doors, pricing. Read-only; no parameters. Needs your API key.

### `get_quote` (~206 tokens)

Quote one JSON-RPC call before making it: the weighted units it costs (standard 1, heavy 2, or not offered) and the USD per 1M units on every lane (a lane = a price tier: cheap, balanced, fast). Use it when an owner asks what a workload would cost or before a heavy method. Not for gas or token prices (use get_prices), plan prices (use list_plans) or your own balances (use get_billing_status). Returns JSON: chain, method, offered, units, tier, multiplier, lanes, note; a method we do not offer returns offered=false with a reason. Read-only. No key needed.

Input parameters:

- `chain` (string, required): Chain slug, e.g. eth_mainnet, base_mainnet, solana_mainnet
- `method` (string, required): JSON-RPC method, e.g. eth_getLogs
- `tier` (null|string): cheap | balanced | fast (default balanced)

### `explain_error` (~149 tokens)

Explain a FlexYield error code (e.g. -32007): what it means, the steps to take and its doorway (the path past the limit that caused it). Use it whenever a call returned an error with a code you do not know, before retrying or filing a ticket. Not for upstream chain errors that are not ours and not for filing the problem (use manage_tickets with the request_id). Returns JSON: code, http, title, meaning, steps, doorway, decoder; an unknown code returns known=false with a hint. Read-only. No key needed.

Input parameters:

- `code` (integer, required): The JSON-RPC error code from the response, e.g. -32007

### `recommend` (~210 tokens)

A recommendation from our live measurements. what='chain': which chain fits a task (optional family, candidates, prefer), ranked from our probes and method rules. what='route': which lane (price tier: cheap, balanced, fast) to use for one call (chain, method, optional need). Use it when you can choose the chain or the lane and want the measured answer. Not for the price itself (use get_quote), current gas (use get_prices) or making the call (use rpc_call). Returns JSON: chain → pick, reason, ranked, measured_at, note; route → chain, method, offered, units, weight_class, pick, reason, tiers, note. Read-only. No key needed.

Input parameters:

- `candidates` (array)
- `chain` (string)
- `family` (string)
- `method` (string)
- `need` (string)
- `prefer` (string)
- `what` (string, required): 'chain' or 'route'

### `migrate` (~210 tokens)

A compatibility report for switching your RPC provider to FlexYield: paste your current config as text (endpoint URLs, env lines, code) and get every endpoint mapped to our chain URL, every JSON-RPC method you name with its unit weight and limits, and the list of what changes (auth header, units instead of compute units, no overage, refusals as doorways, measured status). Use it before you swap URLs. Not for pricing your volume (use get_quote or what_can_i_do) or for making calls (use rpc_call). Keys in the pasted text are masked and nothing is stored. Returns JSON: ready, summary, endpoints (source, chain, served, replacement, key_in_url, note), methods (name, weight, offered, note), changes (what, before, after), next_steps. Read-only. No key needed.

Input parameters:

- `config` (string, required): Your current provider config as text — URLs, .env lines or code; up to 20,000 characters

### `buy_pack` (~185 tokens)

Start the purchase of a prepaid unit pack (size 's': 1.2M units $10, 'm': 7M $50, 'l': 32M $200, +5 % units when bought here) and get a checkout URL the account owner completes on a card; units become available when the payment lands, are consumed after the plan's monthly quota and stay valid 12 months. Use it when what_can_i_do or a refusal says the monthly budget is running out. Not for changing the plan (web console) and not for reading balances (use get_billing_status). Returns JSON: checkout_url, size, units, bonus_units, total_units, price_usd, note. Creates a checkout; no money moves until a human pays. Needs your API key.

Input parameters:

- `size` (string, required): Pack size: s, m or l

### `rpc_call` (~266 tokens)

Send one JSON-RPC call through the FlexYield gateway — the same routing, failover, cache and meter as POST /rpc/{chain}. chain: 'eth_mainnet' | 'base_mainnet' | 'arbitrum_one' | 'optimism_mainnet' | 'polygon_pos' | 'solana_mainnet'; method e.g. 'eth_blockNumber'; params as the method expects. Use it for any read the shaped tools do not cover (blocks, logs, eth_call, storage) and for sending signed transactions. Not for balances, transfers or transaction status when a shaped tool exists (use get_balances, get_history, get_tx_status — one call, decoded) and not for pricing a call first (use get_quote). Returns JSON: the raw JSON-RPC body — jsonrpc, id, result — or jsonrpc, id, error with our request_id and the doorway in error.data when refused. Metered on your key (standard 1 unit, heavy 2; cache hits 0). Needs your API key.

Input parameters:

- `chain` (string, required): Chain slug
- `method` (string, required): JSON-RPC method, e.g. 'eth_getBalance'
- `params` (array): Positional params for the method (default [])

## Diagnostics

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

## Score history

- 2026-09-20: 70
- 2026-09-19: 69
- 2026-09-18: 69
- 2026-09-17: 68
- 2026-09-16: 68
- 2026-09-15: 67
- 2026-09-14: 67

## Common questions

### What is the FlexYield — blockchain RPC gateway MCP server?

FlexYield — blockchain RPC gateway is an MCP server listed in the public MCP registry as io.flexyield/gateway. RPC gateway for agents: six mainnets, measured failover, a key without signup, pay per call in USDC. This page covers its hosted endpoint (https://flexyield.io/mcp).

### Is the FlexYield — blockchain RPC gateway MCP server safe to use?

FlexYield — blockchain RPC gateway scores 70 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 FlexYield — blockchain RPC gateway MCP server expose?

FlexYield — blockchain RPC gateway exposes 35 tools: get_key, bind_key_start, bind_key_complete, claim_agent_start, claim_agent_complete, and 30 more. Their descriptions and schemas cost roughly 6,721 tokens of context every time the server is loaded.

### Does the FlexYield — blockchain RPC gateway MCP server require authentication?

No. We connected to FlexYield — blockchain RPC gateway without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the FlexYield — blockchain RPC gateway MCP server still maintained?

FlexYield — blockchain RPC gateway is still listed as active in the MCP registry. We last reached this channel on 20 September 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://flexyield.io/mcp
- Authorisation metadata: https://flexyield.io/.well-known/oauth-protected-resource/mcp
- Website: https://flexyield.io/mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-flexyield-gateway/flexyield-2.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-flexyield-gateway/flexyield-2.json
- HTML version of this page: https://verifymcp.io/servers/io-flexyield-gateway/flexyield-2
