About vend-api-merchant
vend-api-merchant is a set of pay-per-call APIs for web and network intelligence, for callers that need search and extraction. Requests are settled in Nano through x402 v2 challenges, with no signup or API key required.
Key features
- 01Web text and Markdown extraction
- 02Web search and link checks
- 03Domain, IP, and Nano account data
- 04YouTube captions and PDF text extraction
- 05AI job and arXiv paper search
Use cases
- 01Extract web content for LLM use
- 02Check link status and redirects
- 03Look up IP geolocation and domain data
- 04Search AI jobs or arXiv papers
MCP support
The input does not specify MCP support.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://extract.paypercall.dev/mcpclaude mcp add --transport http dev-paypercall-extract-vend-api-merchant https://extract.paypercall.dev/mcp{"mcpServers":{"dev-paypercall-extract-vend-api-merchant":{"type":"http","url":"https://extract.paypercall.dev/mcp"}}}Open in Cursor{"servers":{"dev-paypercall-extract-vend-api-merchant":{"type":"http","url":"https://extract.paypercall.dev/mcp"}}}Open in VS Code{"mcpServers":{"dev-paypercall-extract-vend-api-merchant":{"type":"http","url":"https://extract.paypercall.dev/mcp"}}}{"mcpServers":{"dev-paypercall-extract-vend-api-merchant":{"serverUrl":"https://extract.paypercall.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEVend — Autonomous API Merchant
Pay-per-call APIs settled in Nano (XNO). No signup, no API keys — just HTTP 402 with an x402 v2 challenge.
Endpoints
| Endpoint | Price (XNO) | What it does |
|---|---|---|
GET /api/v1/extract?url= | 0.0001 | Extract clean text/markdown from any web page |
GET /api/v1/check-link?url= | 0.0001 | Check HTTP status, response time, redirect chain |
GET /api/v1/status?url= | 0.0001 | URL status, redirects, TLS expiry, content-drift |
GET /api/v1/domain-info?domain= | 0.0005 | Full domain intelligence: DNS, WHOIS, SSL, HTTP headers |
GET /api/v1/web-search?q= | 0.0001 | Web search via DuckDuckGo — titles, URLs, snippets |
GET /api/v1/geoip?ip= | 0.0001 | IP geolocation — country, city, coordinates, ISP, ASN |
GET /api/v1/youtube-transcript?url= | 0.0005 | Captions + timestamped transcript from a YouTube video |
GET /api/v1/nano-info?account= | 0.0005 | Nano account intelligence — balance, representative, block count, frontier, weight, pending |
GET /api/v1/youtube-transcript?url= | 0.0005 | Captions/transcript from a YouTube video |
GET /api/v1/select?url=&selector= | 0.0001 | CSS-selector structured field extraction from a page (prices, headings, links) |
GET /api/v1/links?url= | 0.0001 | Extract every anchor link on a page as structured JSON (crawl, audit, sitemap) |
GET /api/v1/pdf-extract?url= | 0.0005 | Extract text from a PDF URL, page-structured, ready for LLM consumption |
GET /api/v1/ai-jobs?q= | 0.0002 | Search 19,800+ live AI/AI-adjacent job postings with filters |
GET /api/v1/arxiv-paper?arxiv_id= | 0.0001 | Clean arXiv paper metadata by ID or search: title, authors, primary category, abstract, published, DOI, PDF link |
Quick buyer guide
BUYERS_GUIDE.md — full step-by-step walkthrough with curl, Python, JavaScript, and wallet instructions.
The short version: call any endpoint -> get 402 -> send Nano -> retry with block hash.
How it works (buyer flow)
1. GET /api/v1/extract?url=https://example.com
→ HTTP 402 with x402 payment challenge
2. Send 0.0001 XNO to nano_1yo6c1t64ahfjdw1dxizmbbnpdmbrckwhw9phbg5pdkeubrizga4qhnjmnx7
→ Get back a 64-char block hash
3. GET /api/v1/extract?url=https://example.com -H "X-PAYMENT: <block-hash>"
→ HTTP 200 with the extracted text
Python example
import httpx
# Step 1: Probe unpaid
resp = httpx.get("https://search.paypercall.dev/api/v1/web-search?q=nano")
assert resp.status_code == 402
challenge = resp.json()
# Step 2: Extract payment info
accept = challenge["accepts"][0]
print(f"Pay {challenge['price_xno']} XNO to {accept['payTo'][:15]}...")
# Step 3: Send Nano payment, get block hash (use your wallet)
# Step 4: Retry with payment
result = httpx.get(
"https://search.paypercall.dev/api/v1/web-search?q=nano",
headers={"X-PAYMENT": "your-64-char-block-hash"}
)
print(result.json())
See examples/python-buyer.py for a full working script with error handling.
Conformance
All endpoints pass the Stelar x402 Doctor at 100.0/A:
- extract: https://api.stelardigital.com/doctor?url=https://extract.paypercall.dev/api/v1/extract
- check-link: https://api.stelardigital.com/doctor?url=https://check.paypercall.dev/api/v1/check-link
- domain-info: https://api.stelardigital.com/doctor?url=https://domain.paypercall.dev/api/v1/domain-info
- web-search: https://api.stelardigital.com/doctor?url=https://search.paypercall.dev/api/v1/web-search
- geoip: https://api.stelardigital.com/doctor?url=https://geoip.paypercall.dev/api/v1/geoip
- nano-info:
https://extract.paypercall.dev/api/v1/nano-info(nano.paypercall.dev DNS is still pointing at a dead deployment, so every advertised URL names this host)
x402 v2 challenge in both header and body. Per-endpoint subdomains. Bazaar input schema on every endpoint.
Discovery
- x402 manifest:
https://extract.paypercall.dev/.well-known/x402(also at check, domain, search) - OpenAPI spec:
https://extract.paypercall.dev/openapi.json(also at check, domain, search) - agent-tools.cloud: https://agent-tools.cloud/services/extract-paypercall-dev-sub822
Running locally
# Our package is not on PyPI yet (the `vend` name on PyPI is an unrelated packaging tool).
# Run from this repo instead:
uv sync
export VEND_WALLET_ADDRESS="nano_..."
uv run python -m vend
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.