# Blackwood State (remote · x402-gateway.blackwoodstate8.workers.dev)

Pay-per-call tools for agents: onchain data, ECB FX rates, text tools. USDC on Base, x402

- Trust score: 65/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-22

## Components

- remote · `x402-gateway.blackwoodstate8.workers.dev`: 65/100 (this document), [markdown](https://verifymcp.io/servers/blackwood-state-blackwood-state/x402-gateway.md), [page](https://verifymcp.io/servers/blackwood-state-blackwood-state/x402-gateway)
- npm · `@blackwood-state/mcp`: 75/100, [markdown](https://verifymcp.io/servers/blackwood-state-blackwood-state/blackwood-state-mcp.md), [page](https://verifymcp.io/servers/blackwood-state-blackwood-state/blackwood-state-mcp)

## Channel facts

- Endpoint: `https://x402-gateway.blackwoodstate8.workers.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.2.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-22.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - 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**: 66/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8399 tokens (~221/item across 38 items; 38 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: schema churn in the 5 days we've observed: 5 tool removals, 0 breaking changes, 0 auth/transport breaks, 38 additions.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
  - Structured output schemas are declared (97% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 38 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 38 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 Blackwood State MCP server?

Blackwood State is a hosted endpoint at https://x402-gateway.blackwoodstate8.workers.dev/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 blackwood-state-blackwood-state 'https://x402-gateway.blackwoodstate8.workers.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "blackwood-state-blackwood-state": {
      "url": "https://x402-gateway.blackwoodstate8.workers.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "blackwood-state-blackwood-state": {
      "type": "http",
      "url": "https://x402-gateway.blackwoodstate8.workers.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.blackwood-state-blackwood-state]
url = "https://x402-gateway.blackwoodstate8.workers.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "blackwood-state-blackwood-state": {
      "type": "remote",
      "url": "https://x402-gateway.blackwoodstate8.workers.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add blackwood-state-blackwood-state --url 'https://x402-gateway.blackwoodstate8.workers.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  blackwood-state-blackwood-state:
    url: "https://x402-gateway.blackwoodstate8.workers.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "blackwood-state-blackwood-state": {
      "Transport": "http",
      "Url": "https://x402-gateway.blackwoodstate8.workers.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add blackwood-state-blackwood-state -t streamable-http -u 'https://x402-gateway.blackwoodstate8.workers.dev/mcp'
```

### Other

```json
{
  "mcpServers": {
    "blackwood-state-blackwood-state": {
      "type": "http",
      "url": "https://x402-gateway.blackwoodstate8.workers.dev/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-19 (score 65, 0)

- [security] Tool “blackwood_airport_delays” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_crypto_news” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_domain_intel” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_email_check” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_fx_history” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_fx_rates” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_image_generate” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_pdf_extract” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_sec_facts” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_speech_synthesize” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_text_sentiment” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_text_translate” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_token_price” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_wallet_balances” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_weather_forecast” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_webpage_markdown” rewrote its description, which is the text the model reads
- [security] Tool “blackwood_x402_check” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 6464 → 8399
- [functional] New tool “blackwood_altcoin_discovery”
- [functional] New tool “blackwood_company_dossier”
- [functional] New tool “blackwood_ens_lookup”
- [functional] New tool “blackwood_gas_fees”
- [functional] New tool “blackwood_news_briefing”
- [functional] New tool “blackwood_wallet_portfolio”
- [functional] New tool “blackwood_wallet_value”
- [cosmetic] Tool “blackwood_email_check” changed its title: Email address check → Email validation
- [cosmetic] Tool “blackwood_fx_history” changed its title: FX rate history → Historical exchange rates
- [cosmetic] Tool “blackwood_fx_rates” changed its title: FX rates → Currency exchange rates
- [cosmetic] Tool “blackwood_image_generate” changed its title: Text to image → Image generation
- [cosmetic] Tool “blackwood_image_generate_status” changed its title: Text to image (status) → Image generation (status)
- [cosmetic] Tool “blackwood_text_sentiment” changed its title: Sentiment → Sentiment analysis
- [cosmetic] Tool “blackwood_x402_check” changed its title: x402 check → x402 endpoint check

### 2026-10-18 (score 65, −2)

- [security regression] Stability: unverified → fail
- [security regression] A breaking change shipped without a version bump: still 1.0.0
- [security regression] Tool “domain-intel_v1” was removed
- [security regression] Tool “pdf-text_v1” was removed
- [security regression] Tool “pdf-text_v1_status” was removed
- [security regression] Tool “sec-facts_v1” was removed
- [security regression] Tool “web-markdown_v1” was removed
- [functional regression] Schema quality: 132 → 208
- [functional improvement] Tool coverage: 86% → 96%
- [functional] New tool “blackwood_airport_delays”
- [functional] New tool “blackwood_audio_transcribe”
- [functional] New tool “blackwood_audio_transcribe_status”
- [functional] New tool “blackwood_credits_balance”
- [functional] New tool “blackwood_crypto_news”
- [functional] New tool “blackwood_domain_intel”
- [functional] New tool “blackwood_email_batch”
- [functional] New tool “blackwood_email_check”
- [functional] New tool “blackwood_fx_history”
- [functional] New tool “blackwood_fx_rates”
- [functional] New tool “blackwood_headers_audit”
- [functional] New tool “blackwood_image_generate”
- [functional] New tool “blackwood_image_generate_status”
- [functional] New tool “blackwood_llm_chat”
- [functional] New tool “blackwood_llm_chat_status”
- [functional] New tool “blackwood_news_search”
- [functional] New tool “blackwood_pdf_extract”
- [functional] New tool “blackwood_pdf_extract_status”
- [functional] New tool “blackwood_qrcode_generate”
- [functional] New tool “blackwood_random_generate”
- [functional] New tool “blackwood_sec_facts”
- [functional] New tool “blackwood_speech_synthesize”
- [functional] New tool “blackwood_text_sentiment”
- [functional] New tool “blackwood_text_summarize”
- [functional] New tool “blackwood_text_translate”
- [functional] New tool “blackwood_timezone_convert”
- [functional] New tool “blackwood_token_price”
- [functional] New tool “blackwood_wallet_balances”
- [functional] New tool “blackwood_weather_forecast”
- [functional] New tool “blackwood_webpage_markdown”
- [functional] New tool “blackwood_x402_check”

### 2026-10-17 (score 67)

First indexed and scored.

## MCP tools (38)

### `blackwood_credits_balance` (~82 tokens)

Prepaid credits balance

Use this when you call Blackwood State tools many times and want to pay once: returns the prepaid credit balance of the API key sent as Authorization: Bearer on this MCP connection, recent debits and the top-up packs (pay once via x402, then every tool call debits the balance with no payment signature). Free. Category: Infrastructure.

### `blackwood_webpage_markdown` (~237 tokens)

Web page to Markdown

Use when you need web page to markdown, url to markdown, to scrape a web page or extract content from a url for an LLM. Do not use for pages that need JavaScript to render, sit behind a login or paywall, or are not HTML (PDFs go to blackwood_pdf_extract). Returns JSON with the clean Markdown of a public web page (URL to Markdown, boilerplate stripped) plus its title, description, language, canonical URL and links for 0.01 USDC per call. Typical response time 2500 ms (p95). Category: Data.

Input parameters:

- `maxChars` (integer): Maximum length of the returned markdown (500-100000 characters, 50000 when omitted)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `url` (string, required): Public http(s) URL of the web page to read, e.g. https://example.com/article

### `blackwood_sec_facts` (~196 tokens)

SEC company financials

Use when you need company financials from SEC filings, earnings or fundamentals of a US company by ticker for the last two years. Do not use for quarterly numbers, real-time prices, non-US companies or filings older than two years. Returns JSON with SEC company financials for a US stock ticker from 10-K filings on SEC EDGAR: annual revenue, net and operating income, diluted EPS, cash flow and the balance sheet for 0.02 USDC per call. Typical response time 300 ms (p95). Category: Data.

Input parameters:

- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `ticker` (string, required): Stock ticker of a company that files with the SEC, e.g. AAPL

### `blackwood_pdf_extract_status` (~40 tokens)

PDF to text (status)

Free. Status and result of a job created by blackwood_pdf_extract. Poll until done is true.

Input parameters:

- `jobId` (string, required)

Output parameters:

- `done` (boolean)
- `error` (object)
- `jobId` (string)
- `output`
- `status` (string)

### `blackwood_pdf_extract` (~218 tokens)

PDF to text

Use when you need to extract text from a pdf, pdf to text or document parsing for an LLM. Do not use for scanned PDFs (no OCR), password-protected files or files over 15 MB. Returns JSON with PDF text extraction: the text of each page (first 20 pages) plus title, author and producer metadata for 0.0025 USDC per page, up to 0.05 USDC per call (clients without upto pay the cap). Result in the same call (about 10000 ms); a status tool polls for free if it takes longer. Category: Data.

Input parameters:

- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `url` (string, required): Public http(s) URL of the PDF file, e.g. https://example.com/report.pdf (up to 15 MB)

### `blackwood_domain_intel` (~226 tokens)

Domain intelligence

Use when you need a domain lookup, whois, dns records or certificate transparency data for osint, security or due diligence. Do not use for historical whois, registrant personal data (redacted by registries) or port and vulnerability scans. Returns JSON with domain intelligence: WHOIS/RDAP registration, DNS records (A, AAAA, MX, NS, TXT, CAA), SPF and DMARC, and TLS certificates from certificate transparency logs for 0.02 USDC per call. Typical response time 4000 ms (p95). Category: Data.

Input parameters:

- `certificates` (boolean): Include issued TLS certificates from Certificate Transparency (crt.sh); true when omitted
- `domain` (string, required): Domain name in ASCII (punycode for internationalized names), e.g. example.com
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_weather_forecast` (~265 tokens)

Weather forecast

Use when you need a weather forecast, the current weather, temperature, rain or wind for the next hours or days at given coordinates. Do not use for historical weather, severe weather alerts or places given only by name (geocode first). Returns JSON with the weather forecast for a latitude and longitude: hourly temperature, rain and precipitation, wind, humidity and cloud cover for the next days, from MET Norway for 0.003 USDC per call. Typical response time 1500 ms (p95). Category: Data.

Input parameters:

- `hours` (integer): How many hours ahead to return (1-240, 48 when omitted); hourly at first, then every 6 hours
- `latitude` (number, required): Latitude in decimal degrees (WGS84), e.g. 59.9139 for Oslo, rounded to 4 decimals
- `longitude` (number, required): Longitude in decimal degrees (WGS84), e.g. 10.7522 for Oslo, rounded to 4 decimals
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_email_check` (~186 tokens)

Email validation

Use when you need email validation, to verify email addresses or validate email syntax and MX records before sending or signup. Do not use for confirming that the mailbox itself exists (no SMTP probe is done) or sending email. Returns JSON with email verification of one address: syntax, domain MX records, disposable, free and role-account flags, SPF and DMARC, and a verdict on whether the domain can receive mail for 0.005 USDC per call. Typical response time 800 ms (p95). Category: Data.

Input parameters:

- `email` (string, required): Email address to check, e.g. jane@example.com
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_llm_chat_status` (~42 tokens)

LLM chat completion (status)

Free. Status and result of a job created by blackwood_llm_chat. Poll until done is true.

Input parameters:

- `jobId` (string, required)

Output parameters:

- `done` (boolean)
- `error` (object)
- `jobId` (string)
- `output`
- `status` (string)

### `blackwood_llm_chat` (~260 tokens)

LLM chat completion

Use when you need an llm chat completion for summaries, extraction or classification from a cheap open model. Do not use for frontier models, tool calling or streaming. Returns JSON with a chat completion from IBM Granite 4.0 Micro on Workers AI, with token usage for 0.002 USDC per thousand tokens, up to 0.03 USDC per call (clients without upto pay the cap). Result in the same call (about 8000 ms); a status tool polls for free if it takes longer. Category: Inference.

Input parameters:

- `maxTokens` (integer): Maximum tokens to generate (1-4096, 512 when omitted); billed as requested
- `messages` (array, required): Conversation so far, oldest first, e.g. [{"role": "user", "content": "Summarize: ..."}]
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `temperature` (number): Sampling temperature (0-2), e.g. 0.2 for near-deterministic output

### `blackwood_audio_transcribe_status` (~42 tokens)

Speech to text (status)

Free. Status and result of a job created by blackwood_audio_transcribe. Poll until done is true.

Input parameters:

- `jobId` (string, required)

Output parameters:

- `done` (boolean)
- `error` (object)
- `jobId` (string)
- `output`
- `status` (string)

### `blackwood_audio_transcribe` (~273 tokens)

Speech to text

Use when you need speech to text transcription or translation of an audio file at a public URL. Do not use for audio over 10 MB or speaker labels. Returns JSON with a Whisper transcription of an audio file: text, timed segments and language, or an English translation for 0.005 USDC per megabyte, up to 0.05 USDC per call (clients without upto pay the cap). Result in the same call (about 20000 ms); a status tool polls for free if it takes longer. Category: Media.

Input parameters:

- `language` (string): ISO 639-1 code of the spoken language, e.g. en or pt (detected when omitted)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `task` (string): transcribe keeps the spoken language; translate returns English (transcribe when omitted)
- `url` (string, required): Public http(s) URL of the audio file, e.g. https://example.com/talk.mp3 (mp3, wav, ogg, m4a, webm; up to 10 MB)

### `blackwood_image_generate_status` (~40 tokens)

Image generation (status)

Free. Status and result of a job created by blackwood_image_generate. Poll until done is true.

Input parameters:

- `jobId` (string, required)

Output parameters:

- `done` (boolean)
- `error` (object)
- `jobId` (string)
- `output`
- `status` (string)

### `blackwood_image_generate` (~235 tokens)

Image generation

Use when you need image generation, an AI image generator or text to image from a prompt for illustrations, mockups or social posts. Do not use for image edits, specific sizes, photos of real people or more than one image per call. Returns JSON with an AI-generated image from a text prompt: a 1024x1024 JPEG made by FLUX.1 schnell on Workers AI, as base64 for 0.03 USDC per call. Result in the same call (about 10000 ms); a status tool polls for free if it takes longer. Category: Media.

Input parameters:

- `prompt` (string, required): What the image should show, in English, e.g. a lighthouse on a cliff at sunset, watercolor
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `steps` (integer): Diffusion steps (1-8, 4 when omitted); more steps, more detail

### `blackwood_token_price` (~210 tokens)

Token price on Base

Use when you need a crypto token price or market data for a Base token, quoted from on-chain liquidity. Do not use for tokens that only trade off Base or on other DEXs (Aerodrome is not read), price history or OHLC. Returns JSON with the USD price of a token on Base computed on-chain from its deepest Uniswap v3 pool against USDC or WETH, with pool, fee tier and depth for 0.002 USDC per call. Typical response time 1200 ms (p95). Category: Trading.

Input parameters:

- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `token` (string, required): Token on Base: contract address (0x...) or a symbol like WETH, cbBTC, AERO, DEGEN, VIRTUAL

### `blackwood_wallet_balances` (~273 tokens)

Wallet balances on Base

Use when you need a wallet balance, token balances or the ERC20 balance of an address on Base, read live from the chain. Do not use for ethereum mainnet or other chains, NFTs, transaction history or USD values. Returns JSON with the wallet balance of an address on Base: ETH and ERC20 token balances read on-chain in one block, 21 major tokens plus any you list for 0.003 USDC per call. Typical response time 1200 ms (p95). Category: Data.

Input parameters:

- `address` (string, required): Wallet address on Base, e.g. 0x5A6c77758820182484EA8DE614FC65423E80749a
- `includeZero` (boolean): Also list tokens with zero balance (false when omitted)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `tokens` (array): Extra ERC20 token addresses on Base to check, e.g. ["0x4200000000000000000000000000000000000006"] (up to 20, beyond the 21 major ones)

### `blackwood_news_search` (~271 tokens)

News headlines search

Use when you need news articles or headlines from the last 72 hours about a topic, company or person. Do not use for full article text, paywalled sources, non-English coverage or news older than 72 hours. Returns JSON with recent news articles matching keywords: headline, URL, source, publish time, authors, tone, image and the people and organizations named, from GDELT for 0.008 USDC per call. Typical response time 600 ms (p95). Category: Search.

Input parameters:

- `domain` (string): Only articles from this source domain, e.g. reuters.com
- `hours` (integer): How far back to look, in hours (1-72, 24 when omitted)
- `limit` (integer): Maximum articles to return (1-50, 20 when omitted)
- `query` (string, required): Keywords to find in headlines, people and organizations, e.g. nvidia earnings (all words must match)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `sort` (string): recent (default) or relevance

### `blackwood_crypto_news` (~251 tokens)

Crypto news

Use when you need crypto news or crypto market news headlines about a token or the market from recent articles. Do not use for prices, full article text, social media posts or news older than 72 hours. Returns JSON with the latest crypto news headlines from the last 72 hours (title, link, source, time, tone, people and organizations) about bitcoin, ethereum and blockchain news, from the GDELT news graph for 0.005 USDC per call. Typical response time 1500 ms (p95). Category: Search.

Input parameters:

- `hours` (integer): How far back to search, in hours (1-72, default 24)
- `limit` (integer): Most articles to return (1-50, default 20), newest first
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `token` (string): Narrow to one coin, chain or company, e.g. solana, xrp or coinbase (any crypto news when omitted)

### `blackwood_random_generate` (~307 tokens)

Random numbers

Use when you need a random number generator, dice rolls, a coin flip, a uuid or random bytes that no one can predict. Do not use for verifiable on-chain randomness (VRF) or reproducible seeded sequences. Returns JSON with cryptographically secure random values: integers in a range, dice rolls, coin flips, UUIDs or hex bytes, from the Workers Web Crypto CSPRNG for 0.005 USDC per call. Typical response time 500 ms (p95). Category: Infrastructure.

Input parameters:

- `count` (integer): How many values (1-100, default 1); ignored for bytes
- `kind` (string, required): integer (count values between min and max), dice (count rolls of a die with sides faces), coin (count flips), uuid (count UUID v4) or bytes (length random bytes as hex)
- `length` (integer): bytes: how many random bytes (1-256, default 32)
- `max` (integer): integer: highest value, inclusive (default 100)
- `min` (integer): integer: lowest value, inclusive (default 1)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `sides` (integer): dice: faces of the die (default 6)

### `blackwood_timezone_convert` (~281 tokens)

Time zones

Use when you need timezone conversion between time zones, the current time in a zone or a utc offset with daylight saving. Do not use for places given only by city or address without an IANA zone name, or dates before 1970. Returns JSON converting a date and time between IANA time zones with daylight saving rules, with UTC offsets, abbreviations and the current time in each zone, from the IANA tz database for 0.003 USDC per call. Typical response time 500 ms (p95). Category: Data.

Input parameters:

- `from` (string): IANA time zone of a local time, e.g. America/Sao_Paulo (UTC when omitted)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `time` (string): Date and time to convert, ISO 8601: local wall time like 2026-10-17T15:30 (read in the from zone) or an instant with Z or an offset; now when omitted
- `to` (array, required): IANA time zones to convert to, e.g. ["Europe/London", "Asia/Tokyo"]

### `blackwood_text_summarize` (~248 tokens)

Summarize text

Use when you need to summarize text such as an article, notes or a transcript into a short summary. Do not use for uRLs or PDFs (extract the text first), exact quotes or citations. Returns JSON with a concise summary of the plain text you send (up to 20,000 characters): one short paragraph and key bullet points, written by IBM Granite 4.0 Micro on Workers AI for 0.008 USDC per call. Typical response time 8000 ms (p95). Category: Inference.

Input parameters:

- `language` (string): Language for the summary, e.g. English or Portuguese (default: the language of the text)
- `maxBullets` (integer): Most bullet points to return (1-10, default 5)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `text` (string, required): Plain text to summarize, e.g. an article or a transcript (80 to 20,000 characters)

### `blackwood_airport_delays` (~199 tokens)

Airport delays

Use when you need airport delays, FAA ground stops or the airport status of a US airport right now, such as departure delays or closures. Do not use for the status of a flight number, airports outside the US or historical delays. Returns JSON with current US airport delays from the FAA: ground stops, ground delay programs with average and maximum delay, arrival and departure delays and closures, for all airports or one for 0.007 USDC per call. Typical response time 1500 ms (p95). Category: Data.

Input parameters:

- `airport` (string): US airport code to filter, e.g. SFO or KSFO (all airports with delays when omitted)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_speech_synthesize` (~232 tokens)

Text to speech

Use when you need text to speech, tts, a voice audio file or spoken narration of a short text. Do not use for voice cloning, a chosen voice, SSML or audio longer than about two minutes. Returns JSON with text to speech (TTS): your text read aloud as WAV voice audio (base64, 44.1 kHz mono) by MeloTTS on Workers AI, in English, Spanish, French, Chinese, Japanese or Korean for 0.023 USDC per call. Typical response time 8000 ms (p95). Category: Media.

Input parameters:

- `lang` (string): Speech language: en (default), es, fr, zh, ja or ko
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `text` (string, required): Text to read aloud, e.g. Welcome to our store (up to 1000 characters)

### `blackwood_headers_audit` (~195 tokens)

Security headers

Use when you need an http security headers audit of a website or URL, with a grade and what to fix. Do not use for vulnerability scans, TLS cipher analysis or pages behind a login. Returns JSON auditing the HTTP security headers of a public URL (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, cookies) with a grade and fixes for 0.007 USDC per call. Typical response time 2500 ms (p95). Category: Infrastructure.

Input parameters:

- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `url` (string, required): Public http(s) URL to audit, e.g. https://example.com

### `blackwood_qrcode_generate` (~256 tokens)

QR code

Use when you need a qr code generator for a URL, text, Wi-Fi or payment link as an SVG image. Do not use for reading or decoding an existing QR code, logos, colored codes or PNG output. Returns JSON with a QR code for your text or URL as SVG markup and an SVG data URL, with error correction level and border options, generated by the uqr library for 0.004 USDC per call. Typical response time 500 ms (p95). Category: Media.

Input parameters:

- `border` (integer): Quiet zone around the code, in modules (default 2)
- `ecc` (string): Error correction level: L 7%, M 15% (default), Q 25%, H 30%
- `pixelSize` (integer): SVG units per module (default 10)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `text` (string, required): Text or URL to encode, e.g. https://example.com (up to 2000 characters)

### `blackwood_text_translate` (~249 tokens)

Translate text

Use when you need to translate text, a language translation or a text translation of a sentence or paragraph between two languages. Do not use for formatting that must be preserved, certified or legal translation, or speech (transcribe first). Returns JSON with text translation between about 100 languages by Meta M2M100 1.2B on Workers AI: the translated text with the source and target languages used for 0.012 USDC per call. Typical response time 5000 ms (p95). Category: Inference.

Input parameters:

- `from` (string): Source language as an ISO 639-1 code (default en)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `text` (string, required): Text to translate, e.g. Pay only for the requests you make (up to 2000 characters)
- `to` (string, required): Target language as an ISO 639-1 code, e.g. es, fr, pt, de, ja, zh

### `blackwood_fx_rates` (~244 tokens)

Currency exchange rates

Use when you need currency exchange rates, fx rates or forex conversion of an amount between two currencies like EUR and GBP. Do not use for live trading quotes, intraday or crypto rates (ECB rates update once per business day). Returns JSON with currency exchange rates: official ECB euro reference FX rates (free at ecb.europa.eu) for about 30 currencies, rebased to any base as cross rates, with optional conversion for 0.005 USDC per call. Typical response time 1500 ms (p95). Category: Data.

Input parameters:

- `amount` (number): Amount in the base currency to convert, e.g. 100
- `base` (string): Base currency, ISO 4217 (EUR when omitted), e.g. USD
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `symbols` (array): Currencies to return, e.g. ["BRL", "JPY"] (all ECB currencies when omitted)

### `blackwood_x402_check` (~244 tokens)

x402 endpoint check

Use when you need an x402 endpoint check or x402 endpoint test, or to validate x402 endpoint listings before paying or integrating. Do not use for actually paying the endpoint, or endpoints behind authentication. Returns JSON with an x402 check of an endpoint without paying: whether it answers 402, its payment options (scheme, network, asset, amount, payTo), Bazaar metadata and problems found for 0.007 USDC per call. Typical response time 2500 ms (p95). Category: Infrastructure.

Input parameters:

- `body` (object): JSON body to send with POST, e.g. {"url": "https://example.com"} (no payment is ever attached)
- `method` (string): HTTP method of the endpoint (GET when omitted)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `url` (string, required): Public http(s) URL of the x402 endpoint, e.g. https://x402.org/protected

### `blackwood_text_sentiment` (~225 tokens)

Sentiment analysis

Use when you need sentiment analysis, text sentiment or opinion mining of reviews, comments or headlines in English. Do not use for neutral or emotion labels, non-English text or aspect-level sentiment. Returns JSON with sentiment analysis of English text: a positive or negative label with a confidence score, from DistilBERT SST-2 on Workers AI, for one text or a batch of up to 20 for 0.004 USDC per call. Typical response time 1500 ms (p95). Category: Inference.

Input parameters:

- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `text` (string): One English text to classify, e.g. The checkout was fast (up to 2000 characters)
- `texts` (array): Or a batch of up to 20 English texts, e.g. ["Great support", "Broken on arrival"]

### `blackwood_fx_history` (~330 tokens)

Historical exchange rates

Use when you need historical exchange rates, a historical FX rate series, forex history or a currency trend. Do not use for rates older than 90 days, live quotes or crypto (one ECB rate per business day). Returns JSON with historical exchange rates: 90 days of daily ECB euro reference rates (free at ecb.europa.eu) for up to 10 currencies, rebased to any base as cross rates, with min, max and percent change for 0.005 USDC per call. Typical response time 1500 ms (p95). Category: Data.

Input parameters:

- `base` (string): Base currency, ISO 4217 (EUR when omitted), e.g. USD
- `days` (integer): Calendar days back from endDate, 1 to 90 (90 when omitted; ignored with startDate), e.g. 30
- `endDate` (string): Last day, YYYY-MM-DD (latest ECB day when omitted), e.g. 2026-09-30
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `startDate` (string): First day, YYYY-MM-DD, within the last 90 days, e.g. 2026-09-01
- `symbols` (array, required): Currencies to return, ISO 4217, up to 10, e.g. ["USD", "BRL"]

### `blackwood_email_batch` (~204 tokens)

Email list check

Use when you need bulk email validation, email list verification or to verify email lists before a send or import. Do not use for one address (email-check is cheaper), proving a mailbox exists (no SMTP probe) or sending email. Returns JSON checking up to 20 email addresses in one call: syntax, MX records, disposable, free and role flags, SPF, DMARC and a verdict each, plus counts by verdict for 0.02 USDC per call. Typical response time 2500 ms (p95). Category: Data.

Input parameters:

- `emails` (array, required): Email addresses to check, 1 to 20, e.g. ["jane@example.com", "info@ietf.org"]
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_ens_lookup` (~298 tokens)

ENS name lookup

Use when you need to resolve an ENS name to an address, reverse-resolve an address to its ENS name, or read an ENS avatar and profile records. Do not use for registering or renewing names, or non-ENS naming such as Solana SNS. Returns JSON with an ENS lookup on Ethereum in one call: the address of a name, the verified primary name of an address (reverse), the avatar and text records such as url, twitter and github for 0.003 USDC per call. Typical response time 2000 ms (p95). Category: Data.

Input parameters:

- `address` (string): Ethereum address to reverse-resolve, e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 (send name or address, not both)
- `name` (string): ENS name to resolve, e.g. vitalik.eth (send name or address, not both)
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `texts` (array): Text record keys to read (avatar, url, description, com.twitter, com.github and email when omitted), e.g. ["url", "com.github"]

### `blackwood_gas_fees` (~206 tokens)

Gas price and fees

Use when you need the current gas price, an ethereum gas fee estimate before a transaction, or to compare gas fees across chains. Do not use for gas units of a given transaction, gas history or chains beyond Ethereum, Base and Solana. Returns JSON with the gas price and gas fees on Ethereum and Base (base fee, slow, standard and fast EIP-1559 fees in gwei, transfer cost) plus Solana priority fees for 0.002 USDC per call. Typical response time 1500 ms (p95). Category: Data.

Input parameters:

- `chains` (array): Chains to read (ethereum, base and solana when omitted), e.g. ["base", "ethereum"]
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_wallet_portfolio` (~298 tokens)

Wallet portfolio and history

Use when you need a multi-chain wallet balance, a wallet portfolio or wallet transaction history on Ethereum, Base or Solana. Do not use for uSD values, NFTs, DeFi positions, long-tail tokens or chains beyond Ethereum, Base and Solana. Returns JSON with a multi-chain wallet balance and transaction history: native and major-token balances on Ethereum, Base or Solana plus the latest transfers, without airdrop spam for 0.003 USDC per call. Typical response time 3000 ms (p95). Category: Data.

Input parameters:

- `address` (string, required): Wallet address: 0x... for Ethereum and Base, or a Solana address, e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
- `chains` (array): Chains to read (ethereum and base for a 0x address, solana for a Solana address, when omitted), e.g. ["base"]
- `historyLimit` (integer): Latest transfers to return per chain, 0 to 25 (10 when omitted), e.g. 5
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_news_briefing` (~255 tokens)

News research briefing

Use when you need a news briefing, a research summary of recent coverage or an analysis of what the press says about a topic or company. Do not use for breaking news, paywalled pages or one known article (use blackwood_webpage_markdown). Returns JSON with a research briefing on a topic in one call: up to 3 recent GDELT news articles, each read and summarized, with source and link, below the price of separate calls for 0.04 USDC per call. Typical response time 15000 ms (p95). Category: Search.

Input parameters:

- `hours` (integer): How far back to look for news, in hours, 1 to 72 (24 when omitted), e.g. 48
- `language` (string): Language of the summaries (English when omitted), e.g. Portuguese
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `topic` (string, required): Topic, company or person to research, e.g. stablecoin regulation

### `blackwood_company_dossier` (~240 tokens)

Company research dossier

Use when you need company research, due diligence or a quick analysis of a business from its website domain and optional ticker. Do not use for private financials, credit scores, people search or businesses without a website. Returns JSON with a company research dossier in one call: domain registration and DNS, email and website security, latest news and, with a ticker, SEC financials, priced below the separate calls for 0.03 USDC per call. Typical response time 8000 ms (p95). Category: Data.

Input parameters:

- `domain` (string, required): Company website domain, e.g. stripe.com
- `name` (string): Company name for the news search (taken from the domain when omitted), e.g. Stripe
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…
- `ticker` (string): Stock ticker for SEC financials, US filers only (no financials when omitted), e.g. AAPL

### `blackwood_wallet_value` (~250 tokens)

Wallet value in USD

Use when you need a wallet portfolio value in USD, a wallet net worth or token balances with USD value for a 0x address. Do not use for solana wallets, transaction history, NFTs, DeFi positions or long-tail tokens. Returns JSON with a wallet's USD value on Ethereum and Base in one call: native and major-token balances priced on-chain from Uniswap v3 pools on Base, per-chain totals and the tokens left unpriced for 0.003 USDC per call. Typical response time 5000 ms (p95). Category: Trading.

Input parameters:

- `address` (string, required): Wallet address (0x...) on Ethereum and Base, e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
- `chains` (array): Chains to value (ethereum and base when omitted), e.g. ["base"]
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

### `blackwood_altcoin_discovery` (~291 tokens)

Altcoin discovery on Base

Use when you need altcoin discovery, new token listings or fresh Base tokens with real liquidity to research. Do not use for established coins, other chains or DEXs, price history, trading signals or token safety audits. Returns JSON with new tokens on Base that just got liquidity: Uniswap v3 pools created in the last hours against WETH or USDC, read on-chain from pool creation events, with price, depth and age for 0.003 USDC per call. Typical response time 3000 ms (p95). Category: Trading.

Input parameters:

- `hours` (integer): Look back this many hours for new pools, 1 to 72 (24 when omitted), e.g. 24
- `limit` (integer): Tokens to return, 1 to 25 (10 when omitted), e.g. 5
- `minDepthUsd` (number): Minimum USD on the WETH or USDC side of the pool (5000 when omitted), e.g. 10000
- `quote` (string): Quote side of the pool (any when omitted), e.g. "WETH"
- `response_format` (string): concise (the default when omitted) keeps the JSON short: long fields such as base64 images or audio come back as separate image/audio content blocks and other long strings are cut with a marker; deta…

## Diagnostics

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

## Score history

- 2026-10-22: 65
- 2026-10-21: 65
- 2026-10-20: 65
- 2026-10-19: 65
- 2026-10-18: 65
- 2026-10-17: 67

## Common questions

### What is the Blackwood State MCP server?

Blackwood State is an MCP server listed in the public MCP registry as io.github.Blackwood-State/blackwood-state. Pay-per-call tools for agents: onchain data, ECB FX rates, text tools. USDC on Base, x402. This page covers its hosted endpoint (https://x402-gateway.blackwoodstate8.workers.dev/mcp).

### Is the Blackwood State MCP server safe to use?

Blackwood State scores 65 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 Blackwood State MCP server expose?

Blackwood State exposes 38 tools: blackwood_credits_balance, blackwood_webpage_markdown, blackwood_sec_facts, blackwood_pdf_extract_status, blackwood_pdf_extract, and 33 more. Their descriptions and schemas cost roughly 8,399 tokens of context every time the server is loaded.

### Does the Blackwood State MCP server require authentication?

No. We connected to Blackwood State without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Blackwood State MCP server still maintained?

Blackwood State is still listed as active in the MCP registry. We last reached this channel on 22 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://x402-gateway.blackwoodstate8.workers.dev/mcp
- Website: https://x402-gateway.blackwoodstate8.workers.dev/
- Changelog RSS feed: https://verifymcp.io/servers/blackwood-state-blackwood-state/x402-gateway.xml
- Changelog JSON feed: https://verifymcp.io/servers/blackwood-state-blackwood-state/x402-gateway.json
- HTML version of this page: https://verifymcp.io/servers/blackwood-state-blackwood-state/x402-gateway
