Odel
The Data Collector

The Data Collector

@marcindudekdevData & AnalyticsPythonUpdated 3mo ago

Search Hacker News, Bluesky, and Substack from a single MCP interface

Server endpointStreamable HTTP

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

The Data Collector

Web scraping APIs for Bluesky, Substack, and Hacker News with x402 micropayment support. Built with FastAPI.

Live: https://frog03-20494.wykr.es

Features

  • Search Bluesky posts (AT Protocol), Substack newsletters, and Hacker News stories
  • Returns structured JSON with engagement metrics
  • x402 micropayments ($0.05 USDC on Base per call) — no account needed
  • API key authentication for regular use
  • A2A Agent Card and MCP discovery endpoints
  • OpenAPI spec with x402 payment metadata

API Endpoints

MethodEndpointDescriptionPrice
POST/api/bluesky/searchSearch Bluesky posts by keyword$0.05
POST/api/substack/searchScrape Substack newsletter articles$0.05
POST/api/hn/searchSearch Hacker News stories$0.05

Quick Start

# Clone
git clone https://github.com/MarcinDudekDev/the-data-collector.git
cd the-data-collector

# Install
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# Configure
cp .env.example .env
# Edit .env with your APIFY_TOKEN and API_KEY

# Run
uvicorn server:app --host 0.0.0.0 --port 8001

Docker

docker build -t the-data-collector .
docker run -p 8001:8001 --env-file .env the-data-collector

Environment Variables

VariableRequiredDescription
APIFY_TOKENYesApify API token for running scrapers
API_KEYNoAPI key for authenticated access (X-API-Key header)
BASE_URLNoPublic URL of the server (default: https://frog03-20494.wykr.es)
PAY_TONoWallet address for x402 payments
PRICE_ATOMICNoPrice per call in USDC atomic units (default: 50000 = $0.05)

Authentication

x402 Micropayments (no account needed)

Send a POST request without credentials. You'll receive a 402 response with payment requirements. Pay $0.05 USDC on Base — settlement is instant.

# First call returns 402 with payment details
curl -X POST https://frog03-20494.wykr.es/api/hn/search \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["AI agents"]}'

API Key

curl -X POST https://frog03-20494.wykr.es/api/hn/search \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-key" \
  -d '{"searchTerms": ["AI agents"], "maxResults": 5}'

Discovery Endpoints

EndpointProtocol
/.well-known/mcp.jsonMCP (Model Context Protocol)
/.well-known/agent-card.jsonA2A (Agent-to-Agent)
/.well-known/x402x402 payment discovery
/.well-known/openapi.jsonOpenAPI 3.1 spec
/healthHealth check

MCP Client Configuration

{
  "mcpServers": {
    "the-data-collector": {
      "url": "https://frog03-20494.wykr.es/.well-known/mcp.json"
    }
  }
}

License

MIT