https://x.com/BasoraAIbase https://t.me/basoraportal
Per-request data on Base, settled in USDC via x402.
No subscriptions. No API keys. No accounts. Just a wallet and HTTP.
Autonomous agents need fresh data — photos of a specific street right now, a voice utterance in a low-resource language, the shelf price of a SKU in a specific store. Existing datasets ship in quarterly batches and are stale by the time an agent acts on them. Scrapers carry legal risk and don't cover local or rare content.
Basora collapses discovery → quote → payment → delivery into a single HTTP round-trip an agent already knows how to make:
curl -X POST https://basora.xyz/api/discover \
-H 'content-type: application/json' \
-d '{"type":"streetview","geo":"Berlin, Mitte","freshness":"<1h"}'
# HTTP/1.1 402 Payment Required
# x-payment-asset: USDC
# x-payment-chain: base
# x-payment-amount: 0.083
# x-payment-pay-to: 0x21204a52b35e567a7A1BFBB18F8267d996e7aE37
# x-payment-facilitator: x402.coinbase.com
# x-request-id: req_…The agent signs USDC.transfer(pay-to, amount) with its wallet, then settles:
curl -X POST https://basora.xyz/api/fulfill \
-d '{"requestId":"req_…","txHash":"0x…"}'
# ← tx receipt + IPFS CID + basora-v1/single-use licenseSettlement lands in ~2 seconds on Base. 85% to the contributor, 10% protocol fee, 5% dispute reserve — all routed in the same on-chain settlement the agent paid.
┌──────────────────┐
agent HTTP ───POST /discover──► │
│ Routing-agent │ matches by geo + specialty
│ Pricing-agent │ rarity × freshness × demand
▲──────────────────┘
│
402 + quote
│
agent signs USDC.transfer on Base ◄── Coinbase Smart Wallet (passkey)
│
agent HTTP ───POST /fulfill───►
│ ChainService verify tx via public Base RPC
│ StorageService pin metadata to IPFS via Helia
│ StoreService release escrow 85/10/5, drift rep
◄── tx + CID + license
Four internal agents pay each other over the same x402 rails — there's no special path for protocol traffic.
| Agent | Role |
|---|---|
| Routing | Decomposes request, builds candidate pool |
| Pricing | Quotes USDC per-request from rarity × freshness × demand |
| Verification | Geo, EXIF, perceptual-hash antifraud; releases escrow on pass |
| Quality | Soulbound reputation that drifts up with successful fulfillments |
git clone https://github.com/deadlyrwr/basora.git
cd basora
npm install && npm --prefix api install && npm --prefix web install --legacy-peer-deps
# Optional — enable real USDC payments on Base mainnet
echo "BASORA_TREASURY_ADDRESS=0xYourBaseAddress" > api/.env
npm run dev
# api on http://localhost:4000
# web on http://localhost:3000Without BASORA_TREASURY_ADDRESS everything runs in simulated mode (bots keep
the feed warm, no real payments). With the env var set, the playground exposes
a mainnet · real USDC toggle and signs an actual on-chain transfer through
the connected Smart Wallet.
| Endpoint | Verb | Purpose |
|---|---|---|
/discover |
POST |
Submit a sample need → returns 402 Payment Required with machine-readable quote |
/fulfill |
POST |
Present txHash, API verifies on-chain, releases sample + receipt |
/payment-config |
GET |
Treasury, USDC contract, chain ID, decimals |
/stats |
GET |
GMV, requests, fees, real Base block height |
/feed?limit=N |
GET |
Recent settlements (also streamed via socket.io) |
/agents · /contributors |
GET |
Protocol participants |
/sample/:cid |
GET |
IPFS gateway for pinned metadata |
| Layer | Stack |
|---|---|
| Web | Next.js 14 · Tailwind CSS · Bricolage Grotesque · react-three-fiber + custom GLSL terrain shader · d3-geo orthographic globe |
| API | NestJS 10 · socket.io · viem (public Base RPC) · Helia + UnixFS (IPFS) · JSON-snapshot persistence |
| Chain | Base mainnet (8453) · native USDC · Coinbase Smart Wallet via @coinbase/wallet-sdk |
| Settle | HTTP 402 → wallet signs USDC.transfer → API verifies receipt → release |
| Ops | pm2 · nginx · Let's Encrypt · ports 3402/4402 |
basora/
├── api/ # NestJS — marketplace, bots, store, chain, storage, feed
├── web/ # Next.js — /app utility (no marketing landing, / → /app)
└── deploy/ # pm2 ecosystem.config.cjs · basora.xyz nginx vhost
- main — what runs at basora.xyz
- feat/datanft-experiment — ERC-721 minting for rare-sample resale royalties (WIP)
- feat/voice-validation — whisper-based voice utterance validation (WIP)
built on base · paid in usdc · live at basora.xyz