A

Surf — MPP Grade A

datasearchsocial
Preview responses and set spending limits for this service through use.mpp.land Free budget controls, response samples, and reliability routing.

On-chain Activity

11,892 Total txs
1,529 7d txs
$6.96 7d volume
$66.15 Total volume
8 Unique payers
0 Unique clients
7-day activity ▅█▁▁▁▃▄

Compliance Checks

All paid ops declare 402 response MUST 10pt
All x-payment-info valid MUST 10pt
Challenge has Cache-Control: no-store MUST 5pt
Challenge digest on POST SHOULD 3pt
Challenge has expires SHOULD 3pt
Challenge has Problem Details SHOULD 2pt
Challenge has required params MUST 5pt
Challenge has WWW-Authenticate MUST 5pt
Challenge returns 402 MUST 10pt
Correct Content-Type MUST 5pt
Has Cache-Control on discovery SHOULD 5pt
Has input schemas SHOULD 5pt
Has llms.txt SHOULD 5pt
Has /openapi.json at root MUST 10pt
Has required top-level fields MUST 10pt
Served over HTTPS MUST 10pt
Uses standard categories SHOULD 2pt
2 issues
  • 402 response missing Cache-Control: no-store
  • POST endpoint challenge missing digest parameter (SHOULD per spec)

Paid Operations (17)

POST /api/v1/twitter/search 0.005 USDC.e
Search tweets

Search Twitter with advanced operators. Returns ~20 tweets per page with engagement summary. Use cursor for pagination.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
cursor string No Pagination cursor
end_date string No Only tweets before this time. YYYY-MM-DD (inclusive through end of day UTC) or ISO 8601 datetime with Z/offset (e.g. 2026-04-13T14:30:00Z)
expand_urls boolean No When true, auto-crawl entity URLs and attach crawled_content to tweets. Off by default: responses can grow by up to 4KB per expanded URL. Use surf_web_crawl(url) for targeted crawls instead.
query string Yes Search query with advanced operators
sort string No Sort order: "latest" (newest first) or "top" (most engaged). Default: "latest".
enum: latest, top
start_date string No Only tweets on or after this time. YYYY-MM-DD (UTC midnight) or ISO 8601 datetime with Z/offset (e.g. 2026-04-13T14:30:00Z)
POST /api/v1/twitter/tweet 0.005 USDC.e
Fetch tweet

Fetch a tweet with full thread context (all conversation participants), parent tweet, and optionally replies/quotes. Each section returns ~20 items per upstream page with pagination cursors.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
expand_urls boolean No When true, auto-crawl entity URLs and attach crawled_content to tweets. Off by default: responses can grow by up to 4KB per expanded URL. Use surf_web_crawl(url) for targeted crawls instead.
include array No Optional data to include
ref string Yes Tweet ID or URL
POST /api/v1/twitter/user 0.005 USDC.e
Fetch user profile

Fetch a user profile with ~20 recent tweets per page. Use cursor for pagination. Optionally include replies in timeline and mentions.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
cursor string No Pagination cursor from next_cursor
expand_urls boolean No When true, auto-crawl entity URLs and attach crawled_content to tweets. Off by default: responses can grow by up to 4KB per expanded URL. Use surf_web_crawl(url) for targeted crawls instead.
include_mentions boolean No Include mentions timeline
include_replies boolean No Include replies
ref string Yes Username or @username
POST /api/v1/reddit/search 0.005 USDC.e
Search Reddit

Search posts across Reddit with sort and time filters.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
cursor string No Pagination cursor
end_date string No Only posts before this date (YYYY-MM-DD)
limit integer No Max results
default: 25
query string Yes Search query
sort string No Sort order
enum: relevance, hot, top, new, comments
default: relevance
start_date string No Only posts on or after this date (YYYY-MM-DD)
time string No Time range
enum: hour, day, week, month, year, all
default: all
POST /api/v1/reddit/post 0.005 USDC.e
Fetch Reddit post

Fetch a Reddit post with comments, depth/sort control.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
comment_depth integer No Max nesting depth
default: 5
comment_limit integer No Max comments
default: 50
comment_sort string No Comment sort
enum: confidence, top, new, controversial, old, qa
default: confidence
ref string Yes Post ID or Reddit URL
POST /api/v1/reddit/subreddit 0.005 USDC.e
Fetch subreddit

Fetch subreddit info and top posts.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
limit integer No Max posts
default: 25
name string Yes Subreddit name
sort string No Post sort
enum: hot, new, top, rising
default: hot
time string No Time range
enum: hour, day, week, month, year, all
default: day
POST /api/v1/reddit/user 0.005 USDC.e
Fetch Reddit user

Fetch a Reddit user profile with recent posts and comments.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
include_comments boolean No Include recent comments
include_posts boolean No Include recent posts
default: true
max_results integer No Max posts/comments
default: 25
ref string Yes Reddit username
POST /api/v1/web/search 0.01 USDC.e
Web search

Semantic web search powered by Exa. Returns titles, URLs, and a query-relevant excerpt per result.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.01 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
exclude_domains array No Exclude results from these domains. Useful for filtering noisy aggregators or SEO farms when you've seen them dominate results (e.g. ['pinterest.com', 'quora.com']).
include_domains array No Restrict results to these domains (e.g. ['arxiv.org'])
published_within_days integer No Restrict to results published within the last N days. Skip this for broad queries - it excludes pages without publish-date metadata. Common values: 1, 7, 30, 365.
query string Yes Search query
POST /api/v1/web/crawl 0.002 USDC.e
Crawl web pages

Extract content from a web page as markdown, HTML, text, or JSON.

Amount
0.002 (raw 2000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.002 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
format string No Output format. Use 'json' when you want the structured SSR blob (TikTok, Pinterest, etc.) instead of article text.
enum: markdown, html, text, json
default: markdown
selector string No CSS selector
url string Yes URL to crawl

Response Schema (200)

FieldTypeDescription
alternatives array[string] When outcome=unsupported_target, alternative URL patterns or tools that may work.
content array[string] -
outcome string Classified result type. Use this to branch your retry / strategy logic.
paywalled boolean True when the URL is paywalled. Equivalent to outcome === 'paywall'.
status integer -
unsupported_reason string When outcome=unsupported_target, why the URL pattern is permanently unsupported.
url string -
POST /api/v1/github/search 0.002 USDC.e
Search GitHub

Search GitHub repositories and conversations (issues + PRs). Supports GitHub search syntax.

Amount
0.002 (raw 2000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.002 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
kind string No What to search: repos or conversations (issues+PRs)
enum: repos, conversations
default: repos
order string No Sort direction (default: desc)
enum: desc, asc
default: desc
page integer No Page number
default: 1
per_page integer No Results per page
default: 20
query string Yes Search query (supports GitHub search syntax)
sort string No Sort field. Repos: stars, forks, updated, help-wanted-issues. Conversations: comments, reactions, interactions, created, updated. Default: best-match (relevance)
enum: best-match, stars, forks, updated, help-wanted-issues, comments, reactions, interactions, created
default: best-match
POST /api/v1/github/get 0.002 USDC.e
Fetch GitHub data

Fetch repository data: metadata, readme, files, tree, commits, branches, releases, PRs, or issues.

Amount
0.002 (raw 2000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.002 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
kind string Yes What to fetch
enum: repo, readme, file, tree, commits, branches, releases, pr, issue
number integer No PR or issue number (required for kind=pr|issue)
owner string Yes Repository owner
page integer No Page number for paginated results
default: 1
path string No File path (required for kind=file)
per_page integer No Results per page
default: 30
ref string No Branch, tag, or commit SHA
repo string Yes Repository name
POST /api/v1/github/snapshot 0.005 USDC.e
Repository snapshot

Generate or retrieve a downloadable repository snapshot bundle. Returns cached by default (free). Set refresh=true to trigger new build (paid). Pass job_id to poll status.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
job_id string No Job ID to poll build status
owner string Yes Repository owner
ref string No Branch or tag (default: repo default branch)
refresh boolean No Set true to trigger a new snapshot build (paid)
repo string Yes Repository name
POST /api/v1/amazon/search 0.005 USDC.e
Search Amazon

Search Amazon by keyword (query) or browse bestsellers by category (category_slug). Regional TLDs: com, co.uk, de, fr, es, it. Returns ranked products with VAT-exclusive net price computed alongside gross.

Amount
0.005 (raw 5000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.005 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
category string No Amazon node ID to narrow results (returned in `refinements` from a prior call)
category_slug string No Amazon bestsellers category slug, e.g. 'electronics' (.com), 'elektronik' (.de), 'electronique' (.fr). Invalid slugs return 'not_found' - retry with a correct slug.
currency string No Override display currency. Validated against per-tld allow-list.
geo string No Postal code Amazon uses to compute shipping & delivery dates (e.g. '28001' for Madrid)
include_paid boolean No Include sponsored ad results (default: dropped)
include_suggested boolean No Include 'people also searched for' suggestions (default: dropped)
merchant string No Filter to a specific seller ID
min_reviews integer No Drop hits with fewer than N reviews. Pair with sort_by='most_reviewed' for a trust-weighted result. Applied client-side to organic/paid/suggested.
page integer No Page number (1-20)
default: 1
query string No Free-text keyword query (mutually exclusive with category_slug)
response_format string No 'concise' drops images/variants/deep seller metadata; 'detailed' keeps everything
enum: concise, detailed
default: concise
sort_by string No Server-side sort, except 'most_reviewed' which re-ranks the current page client-side by review count desc (rating tiebreaker). Pair 'most_reviewed' with min_reviews to skip thinly-reviewed items.
enum: most_recent, price_low_to_high, price_high_to_low, featured, average_review, bestsellers, most_reviewed
tld string No Amazon marketplace: com | co.uk | de | fr | es | it
enum: com, co.uk, de, fr, es, it
default: com
POST /api/v1/amazon/product 0.01 USDC.e
Fetch Amazon product

Fetch live product detail by 10-char ASIN on a regional marketplace (com, co.uk, de, fr, es, it). Runs 2 upstream calls in parallel (amazon_product + amazon_pricing), returning buybox + full offer listing (including used-condition breakdown) + embedded top reviews.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.01 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
asin string Yes 10-char Amazon product ID (e.g. B0F59XT8QM)
currency string No Override display currency. Validated against per-tld allow-list.
geo string No Postal code for region-accurate pricing and delivery dates
response_format string No 'concise' drops images/variants/deep seller metadata; 'detailed' keeps everything
enum: concise, detailed
default: concise
tld string No Amazon marketplace: com | co.uk | de | fr | es | it
enum: com, co.uk, de, fr, es, it
default: com
POST /api/v1/youtube/subtitles 0.01 USDC.e
Fetch YouTube subtitles (VTT file via presigned URL)

Fetch YouTube subtitles/transcript for an 11-char video_id in the requested language and origin (uploader_provided | auto_generated). Returns a presigned download URL to a WebVTT file (transcripts can be 50K+ chars, so file delivery instead of inline text). URL expires in ~1 hour; call again to refresh. Cached 7 days server-side — repeat calls on the same (video_id, language_code, origin) tuple are free after the first.

Amount
0.01 (raw 10000)
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: price: 0.01 pricingMode: fixed protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
format string No 'inline' (default): include vtt in response when transcript fits the inline cap; otherwise omit it and set vtt_omitted_reason. 'url': never include vtt; caller fetches download_url. download_url is always present.
enum: inline, url
default: inline
language_code string No ISO 639-1 language code (e.g. 'en', 'de', 'fr')
default: en
origin string No 'uploader_provided' for human captions (default), 'auto_generated' for YouTube auto-captions.
enum: uploader_provided, auto_generated
default: uploader_provided
video_id string Yes 11-char YouTube video ID (e.g. dQw4w9WgXcQ)
POST /api/v1/inference/v1/chat/completions dynamic USDC.e
Chat completion

OpenAI-compatible chat completion endpoint. Supports streaming via SSE. Dynamic pricing based on model and token usage.

Amount
dynamic
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: pricingMode: quote protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
max_completion_tokens No Max completion tokens (preferred over max_tokens)
max_tokens No Max tokens to generate
messages array Yes Chat messages
model string Yes Model identifier
stream boolean No Enable SSE streaming
temperature No Sampling temperature (0-2)
tools array No Tool definitions
top_p No Nucleus sampling

Response Schema (200)

FieldTypeDescription
choices array[object] -
created integer -
id string -
model string -
object string -
usage object -
POST /api/v1/inference/v1/messages dynamic USDC.e
Anthropic Messages API compatible chat

Anthropic Messages API compatible endpoint. Translates to OpenAI format internally, routes through OpenRouter. Supports streaming via SSE.

Amount
dynamic
Currency
USDC.e
Method
tempo
Intent
charge
402 Declared
Yes
Non-standard x-payment-info fields: pricingMode: quote protocols: [x402 mpp]

Input Schema

FieldTypeRequiredDescription
max_tokens integer Yes Maximum tokens to generate
messages array Yes Conversation messages
model string Yes Model identifier
stop_sequences array No Custom stop sequences
stream boolean No Enable SSE streaming
system No System prompt
temperature No Sampling temperature (0-1)
tool_choice No Tool selection mode
tools array No Tool definitions
top_k No Top-K sampling
top_p No Nucleus sampling

Payment Methods

Methods
tempo
Intents
charge
Currencies (discovery)
USDC.e
Currency (challenge)
USDC.e on Tempo Mainnet Presto (Tempo Mainnet Presto)
Multiple Challenges
Yes

Recipients

  • 0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
Per-endpoint breakdown
POST /api/v1/reddit/post
0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
POST /api/v1/reddit/search
0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
POST /api/v1/reddit/subreddit
0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
POST /api/v1/twitter/search
0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
POST /api/v1/twitter/tweet
0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb
POST /api/v1/twitter/user
0x2BB201f1bb056eb738718BD7A3ad1BEF24b883bb

Security

TLS Version
TLSv1.3
Challenge ID Unique
Yes
Challenge ID Length
43
Digest Binding
-

Uptime

Discovery
Reachable (63ms)
Challenge
Reachable (45ms)
Last Checked

Schema Completeness

Paid Operations
17
With Input Schema
17
With Description
17

Documentation

Homepage
https://surf.cascade.fyi
API Reference
https://surf.cascade.fyi/openapi.json
llms.txt
https://surf.cascade.fyi/llms.txt reachable

Discovery

OpenAPI URL
https://surf.cascade.fyi/openapi.json
OpenAPI Version
3.1.0
Service Version
1.0.0
Document Size
40342 bytes
Document Hash
9d4f93e7bf1a645ad8c99b537de4fcd4451ac5ae7cbd2e64bf85828ebb0cc8fa

Version History (52 snapshots)

  • document hash changed (no semantic differences detected)
Grade: F (13%) → A (90%)
Grade: A (90%) → F (13%)
Grade: B (84%) → A (90%)
Grade: A (90%) → B (84%)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
Grade: F (13%) → A (90%)
Grade: B (84%) → F (13%)
Grade: A (90%) → B (84%)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
  • new endpoint: POST /api/v1/youtube/subtitles
  • new endpoint: POST /api/v1/amazon/product
  • new endpoint: POST /api/v1/amazon/search
Grade: F (13%) → A (90%)
Grade: A (90%) → F (13%)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
  • document hash changed (no semantic differences detected)
Grade: F (13%) → A (90%)
Grade: A (90%) → F (13%)
  • document hash changed (no semantic differences detected)
Scan snapshots
Date Grade Score Response Status
2026-04-06 A 90% 389ms Up
2026-04-07 A 90% 136ms Up
2026-04-08 A 90% 70ms Up
2026-04-09 A 90% 63ms Up
2026-04-10 A 90% 114ms Up
2026-04-11 F 13% 85ms Up
2026-04-12 A 90% 54ms Up
2026-04-13 A 90% 103ms Up
2026-04-14 A 90% 60ms Up
2026-04-15 A 90% 34ms Up
2026-04-16 A 90% 72ms Up
2026-04-17 A 90% 57ms Up
2026-04-18 A 90% 58ms Up
2026-04-19 A 90% 114ms Up
2026-04-20 A 90% 79ms Up
2026-04-21 A 90% 80ms Up
2026-04-22 A 90% 82ms Up
2026-04-23 A 90% 251ms Up
2026-04-24 A 90% 65ms Up
2026-04-25 A 90% 59ms Up
2026-04-26 A 90% 81ms Up
2026-04-27 A 90% 53ms Up
2026-04-28 A 90% 71ms Up
2026-04-29 A 90% 64ms Up
2026-04-30 A 90% 70ms Up
2026-05-01 A 90% 79ms Up
2026-05-02 A 90% 58ms Up
2026-05-03 A 90% 46ms Up
2026-05-04 A 90% 62ms Up
2026-05-05 A 90% 62ms Up
2026-05-06 A 90% 83ms Up
2026-05-07 A 90% 70ms Up
2026-05-08 A 90% 229ms Up
2026-05-09 A 90% 45ms Up
2026-05-10 A 90% 94ms Up
2026-05-11 A 90% 64ms Up
2026-05-12 A 90% 105ms Up
2026-05-13 A 90% 42ms Up
2026-05-14 A 90% 71ms Up
2026-05-15 A 90% 91ms Up
2026-05-16 A 90% 83ms Up
2026-05-17 A 90% 81ms Up
2026-05-18 A 90% 301ms Up
2026-05-19 A 90% 77ms Up
2026-05-20 A 90% 62ms Up
2026-05-21 A 90% 84ms Up
2026-05-22 A 90% 89ms Up
2026-05-23 A 90% 78ms Up
2026-05-24 A 90% 368ms Up
2026-05-25 A 90% 50ms Up
2026-05-26 A 90% 47ms Up
2026-05-27 A 90% 57ms Up