# BotTrunk > A marketplace where AI agents pay per call, in USDC on Algorand, Base or Solana over x402 (HTTP 402 Payment Required), for services that include work done by real people. No API keys, no accounts, no subscriptions: the payment is the credential. What makes this catalog different: besides data utilities, an agent can buy work from a person. `deposit-bac-*` puts money into a person's bank account within 24 hours and returns the bank's receipt reference (live corridor: BAC Credomatic accounts, paid in lempiras). ## How to call anything here Every service is `POST https://api.bottrunk.com/s/` with a JSON body. 1. Call it with no payment header. You get **402** with a JSON body: `accepts[]` (scheme `exact`, `network` as a CAIP-2 id, USDC `asset`, `amount` in atomic units with 6 decimals, `payTo`, `extra.feePayer`), a `resource` object and an `extensions.bazaar` block carrying the input/output schema. The same body is base64 in the `PAYMENT-REQUIRED` header. 2. Sign a USDC transfer for exactly `amount` and retry with the `PAYMENT-SIGNATURE` header (`X-PAYMENT` is accepted for v1 clients). 3. You get the result plus `PAYMENT-RESPONSE`: a base64 receipt with the on-chain transaction id. A bad request (4xx) and a failed upstream are never settled — you are not charged. **Which network.** The 402 `accepts` array has one entry per network we take USDC on (Algorand, Base or Solana). Pay the entry whose `network` matches the wallet you hold USDC in; each has its own `payTo`, `asset` and `extra`. **What your wallet needs on Algorand.** Build the transfer as an atomic group naming `extra.feePayer` and the facilitator covers the network fee, so the call costs you USDC only; sign a plain single transfer instead and you pay its ~0.001 ALGO. Either way the paying account must be opted in to USDC asset 31566704, and an Algorand account holding an asset needs about 0.1 ALGO of minimum balance. Send **0.3 ALGO once** (0.1 to exist, 0.1 to hold the asset, the rest for fees), then USDC per call. An agent funded with USDC and no ALGO cannot pay at all, and USDC sent before the opt-in does not arrive — it fails. `bottrunk-mcp` opts in by itself once the ALGO lands. Where a person gets them on the Algorand network: Kraken, Coinbase or Binance (not for US residents) withdraw both ALGO and USDC on Algorand; Pera Fund sells USDC on Algorand by card; OKX, Bitso and KuCoin send only ALGO. ## What you get back, and whether it costs you | Status | `error` in the body | Charged | |---|---|---| | 200 | — | yes, `PAYMENT-RESPONSE` carries the transaction id | | 402 | `Payment required` | no — you sent no payment header | | 402 | `missing or malformed X-PAYMENT header`, `unsupported x402 version`, `scheme mismatch`, `network mismatch`, or the facilitator's own `invalidReason` | no | | 402 | `settlement failed` | no — verification passed and the work ran, but the transfer did not settle | | 422 | a validation message (`url must be a public http(s) URL`, `url resolves to a private address`, `selector "…" matched nothing on this page`, …) | no | | 502 | `fetch failed with N`, `page too large`, `fetch failed: …` | no | | 503 | ` is not live yet`, with `status` and `catalog` | no — listed for discovery, not callable | **Retry rules.** A 402, 422, 502 or 503 means nothing was settled, so retrying is free. The one to handle carefully is `settlement failed`: the service already did the work, and if the transfer did land on-chain despite the error, signing a fresh payment pays twice. Check the payer address on an explorer before re-signing, or call `GET /orders/{order_id}` for human-fulfilled services. Everything else is safe to retry. **Timeouts.** Allow at least 30 s per paid call: fetching plus verify plus settle has measured around 4.6 s end to end, and built-in services themselves time out at 20 s. The per-service latency published on the site measures fulfilment only, not settlement. **Rate limits.** None published today. Be reasonable; abusive traffic gets blocked at the edge. ## MCP **Remote, nothing to install:** `https://mcp.bottrunk.com/mcp` — MCP over Streamable HTTP, no key, no account. Five free read-only tools: `bottrunk_catalog`, `bottrunk_service`, `bottrunk_payment_instructions` (live price, network, asset and payTo for a service), `bottrunk_quote_deposit`, `bottrunk_order_status`. A hosted server cannot hold your wallet, so it never spends: an agent that can sign transfers uses these to price the work, then answers the endpoint's 402 itself. **Local, with a wallet:** npx bottrunk-mcp wallet # creates the agent's own wallet, prints the address # send it 0.3 ALGO, then the USDC it may spend; the opt-in happens by itself claude mcp add bottrunk -- npx -y bottrunk-mcp Every live service below becomes a paid tool, with per-call and per-day spending caps you control. Package: https://www.npmjs.com/package/bottrunk-mcp Setup for Claude Code, Claude Desktop, Cursor, VS Code, Cline, Windsurf, Zed, OpenClaw, Hermes Agent, Goose, the OpenAI Agents SDK and LangChain: https://bottrunk.com/connect ## Services Every built-in service shares these limits: pages over 2 MB are refused (`page too large`), connect times out at 5 s and the whole fetch at 20 s, at most 3 redirects are followed, requests go out as `BotTrunk/0.1 (+https://bottrunk.com/docs)`, hostnames resolving to private/loopback/link-local space are refused with 422 before any request is made, and the endpoints are POST-only. Per-service behaviour is in `behaviour[]` on https://api.bottrunk.com/api/v1/catalog/{slug} — read it before you pay, it is the part that is not in the schema. - **deposit-bac-1000** — Send L1,000 in lempiras to any BAC Credomatic account. A person makes the transfer within 24 hours and you get the receipt. Priced from the Banco Central de Honduras reference rate (about $41.41 for L1,000 today). Endpoint: https://api.bottrunk.com/s/deposit-bac-1000 - **deposit-bac-2500** — Send L2,500 in lempiras to any BAC Credomatic account. A person makes the transfer within 24 hours and you get the receipt. Priced from the Banco Central de Honduras reference rate (about $103.51 for L2,500 today). Endpoint: https://api.bottrunk.com/s/deposit-bac-2500 - **deposit-bac-5000** — Send L5,000 in lempiras to any BAC Credomatic account. A person makes the transfer within 24 hours and you get the receipt. Priced from the Banco Central de Honduras reference rate (about $207.03 for L5,000 today). Endpoint: https://api.bottrunk.com/s/deposit-bac-5000 - **deposit-bac-10000** — Send L10,000 in lempiras to any BAC Credomatic account. A person makes the transfer within 24 hours and you get the receipt. Priced from the Banco Central de Honduras reference rate (about $414.06 for L10,000 today). Endpoint: https://api.bottrunk.com/s/deposit-bac-10000 - **scrape-markdown** — Any public page as clean, LLM-ready markdown. $0.09 USDC per call. Endpoint: https://api.bottrunk.com/s/scrape-markdown - What is stripped: script, style, noscript, nav, footer, header, aside, form, iframe, svg, template — removed before conversion, so their text never reaches you. - What is kept: Headings, paragraphs, lists, tables, links and emphasis, as GitHub-flavored markdown. Runs of blank lines are collapsed. - Where it reads from: Your selector if you give one. Otherwise the first of main, article, body. - A selector that matches nothing: Refused with 422 and not charged, rather than quietly returning the whole page. A malformed selector is refused the same way. - Non-HTML URLs: A URL that answers with JSON, a PDF or an image is refused with 422. A server that sends no content-type at all is scraped anyway. - No JavaScript: The page is fetched, not rendered, so a site that builds its content client-side returns almost nothing. When that happens, scrape-markdown-js renders it in a real browser first. - **scrape-markdown-js** — Any page as clean markdown, after its JavaScript has run. $0.29 USDC per call. Endpoint: https://api.bottrunk.com/s/scrape-markdown-js - When to pay for this: Only when plain scrape-markdown comes back thin or empty. If the page ships its content in the HTML, that one is a third of the price and returns the same markdown. - What is stripped: Identical to scrape-markdown: script, style, noscript, nav, footer, header, aside, form, iframe, svg, template — same pipeline, different source. - Waiting for content: wait_for takes a CSS selector the browser waits for before the page is read — the difference between catching a dashboard mid-spinner and catching it after the data arrives. - A selector that matches nothing: Refused with 422 and not charged, exactly as on scrape-markdown. - If the renderer is unavailable: The call fails and is never settled, so it costs you nothing. - **screenshot-url** — A PNG of any page as a browser renders it, base64 in the response. $0.08 USDC per call. Endpoint: https://api.bottrunk.com/s/screenshot-url - What comes back: The PNG as base64 in image_base64, with the real pixel size read off the file. Base64 is about a third larger than the file itself; budget for that. - Size limit: A render over 1.5 MB is refused with 422 and not charged, rather than returning a JSON body nobody wants. Narrow the viewport or drop full_page and try again. - Viewport: width and height are clamped to 240–3840. With full_page the height grows to whatever the page needs, so the returned height is what was captured, not what was asked for. - Waiting for content: wait_for takes a CSS selector the browser waits for before the shutter — the difference between catching a page mid-spinner and after its data lands. - If the renderer is busy: The free renderer runs one browser at a time. A busy answer is retried once, then the call fails and is never settled, so it costs you nothing. - **pdf-url** — Any page printed to PDF by a real browser, base64 in the response. $0.10 USDC per call. Endpoint: https://api.bottrunk.com/s/pdf-url - What comes back: The PDF as base64 in pdf_base64. Base64 is about a third larger than the file itself; budget for that. - Size limit: A document over 1.5 MB is refused with 422 and not charged. Long pages hit this before short ones do. - Paper: format accepts a4, letter, legal, tabloid, a3 or a5. Anything else falls back to A4 rather than refusing — you asked for a PDF and you get one, with paper saying which was used. - Waiting for content: wait_for takes a CSS selector the browser waits for before printing. - If the renderer is busy: The free renderer runs one browser at a time. A busy answer is retried once, then the call fails and is never settled, so it costs you nothing. - **email-check** — Syntax, mail records, and whether an address is disposable, free or a role account. $0.002 USDC per call. Endpoint: https://api.bottrunk.com/s/email-check - What this is not: Not a mailbox check. Proving an address exists needs an SMTP probe, which is unreliable and gets the prober blocked, so we do not do it. No mail is ever sent. - Deliverable domain: True when the domain publishes MX records, or an A record that mail can fall back to. It says the domain can receive mail, not that this mailbox does. - Bad syntax: Answered 200 with valid_syntax: false and no DNS lookup — a malformed address is a fact about the input, not a failure. - Disposable and free lists: Known-provider lists, not exhaustive. A false on either means we did not recognise it. - If DNS is unreachable: The call fails and is never settled, so it costs you nothing. - **page-metadata** — Title, description, OpenGraph, favicon and feeds — without reading the page. $0.02 USDC per call. Endpoint: https://api.bottrunk.com/s/page-metadata - **extract-links** — Every link on a page, absolute, de-duplicated, split internal vs external. $0.02 USDC per call. Endpoint: https://api.bottrunk.com/s/extract-links - **url-health** — Status, redirect chain, timing and certificate expiry for any URL. $0.02 USDC per call. Endpoint: https://api.bottrunk.com/s/url-health - **domain-dns** — A, AAAA, MX, NS, TXT and CNAME in one call, plus who runs the mail. $0.03 USDC per call. Endpoint: https://api.bottrunk.com/s/domain-dns - **injection-check** — Is this text trying to hijack the agent that reads it? clean, suspicious or injection. $0.02 USDC per call. Endpoint: https://api.bottrunk.com/s/injection-check - How the verdict is made: injection when any of the four flags is 0.70 or more. suspicious when one is 0.35 or more, or when the text clearly speaks to an AI reader without asking for anything harmful. Otherwise clean. - Talking to an AI is not an attack: A line like "AI assistants: our docs are at /llms.txt" shows up in addresses_ai and makes the text suspicious at most. - Size: text up to 50,000 characters; an object or array is judged as its JSON. Empty or longer is refused with 422 and not charged. - Source: web_page, email, tool_result, document or other (the default). Anything else is refused with 422. - Who judges: Your input is sent to a third-party model provider to be judged, with questions BotTrunk wrote; you cannot change the questions. - Advisory: Probabilities, not proof. Do not make this the only check before something that cannot be undone. The raw probabilities come back so you can set your own thresholds. - Numbers: Probabilities are rounded to 0.01. Severity and relevance are on a 0–2 scale and can be fractional. version changes whenever a question or threshold changes. - If the judge is unavailable: The call fails with 502 and is never settled, so it costs you nothing; neither does a 422. - **tool-call-gate** — A second opinion before an agent runs a command, calls a tool or pays: allow, review or block. $0.02 USDC per call. Endpoint: https://api.bottrunk.com/s/tool-call-gate - Hard rules first: Deleting / or ~, git push --force, mkfs or dd, DROP TABLE/DATABASE/SCHEMA, curl … | sh and fork bombs are blocked in code before anything is judged; denied_by_rule names the rule. No judgment can loosen them. - How the verdict is made: block when the action goes beyond task or sends data off the machine (0.70 or more), or when any flag is 0.70 or more and severity is 1.5 or more. review when any flag is 0.35 or more. Otherwise allow. - Inputs: action and task are required, context is optional; each up to 50,000 characters, and an object or array is judged as its JSON. A missing or longer one is refused with 422 and not charged. - Who judges: Your input is sent to a third-party model provider to be judged, with questions BotTrunk wrote; you cannot change the questions. - Advisory: Probabilities, not proof. Do not make this the only check before something that cannot be undone. The raw probabilities come back so you can set your own thresholds. - Numbers: Probabilities are rounded to 0.01. Severity and relevance are on a 0–2 scale and can be fractional. version changes whenever a question or threshold changes. - If the judge is unavailable: The call fails with 502 and is never settled, so it costs you nothing; neither does a 422. - **page-kind** — Article, product, docs — or a login wall, paywall, soft 404 or parked domain. $0.02 USDC per call. Endpoint: https://api.bottrunk.com/s/page-kind - What is read: The page as scrape-markdown sees it, cut to its first 30,000 characters; truncated says when. Its refusals (bad URL, not HTML, fetch failed) come back unchanged and are not charged. - No JavaScript: The page is fetched, not rendered. A site that builds its content client-side reads as nearly empty, and content_present will say so. - Kinds: article, product, listing, docs, landing, login_wall, paywall, consent_wall, soft_404, parked_domain, error_page, other. probabilities has all twelve, so a page that is half one and half another shows it. - Who judges: Your input is sent to a third-party model provider to be judged, with questions BotTrunk wrote; you cannot change the questions. - Advisory: Probabilities, not proof. Do not make this the only check before something that cannot be undone. The raw probabilities come back so you can set your own thresholds. - Numbers: Probabilities are rounded to 0.01. Severity and relevance are on a 0–2 scale and can be fractional. version changes whenever a question or threshold changes. - If the judge is unavailable: The call fails with 502 and is never settled, so it costs you nothing; neither does a 422. - **page-fit** — Whether a page answers a question, and the paragraph that does, quoted from the page. $0.02 USDC per call. Endpoint: https://api.bottrunk.com/s/page-fit - Evidence: The paragraph's text exactly as the page has it, with markdown syntax removed (images, link targets, table pipes, footnote marks). Returned only when answers is 0.5 or more; otherwise evidence is null. - Paragraphs: Blocks under 20 characters are skipped, blocks over 1,500 are cut at line breaks, and at most 254 are considered. A page with none is refused with 422 and not charged. - What is read: The page as scrape-markdown sees it, cut to its first 30,000 characters; truncated says when. Its refusals come back unchanged and are not charged. - Question: Up to 1,000 characters. Empty or longer is refused with 422. - Who judges: Your input is sent to a third-party model provider to be judged, with questions BotTrunk wrote; you cannot change the questions. - Advisory: Probabilities, not proof. Do not make this the only check before something that cannot be undone. The raw probabilities come back so you can set your own thresholds. - Numbers: Probabilities are rounded to 0.01. Severity and relevance are on a 0–2 scale and can be fractional. version changes whenever a question or threshold changes. - If the judge is unavailable: The call fails with 502 and is never settled, so it costs you nothing; neither does a 422. - **rfq-global** — A person phones and emails suppliers anywhere and comes back with real quotes. $250.00 USDC per call. Endpoint: https://api.bottrunk.com/s/rfq-global - What you get back: One entry per supplier actually reached — price, lead time, MOQ, incoterms, contact and the date of the conversation — plus a note on who never replied. Poll GET /orders/{order_id} until status is delivered. - How long it takes: Five business days. Suppliers answer when they answer, and the chasing is most of the work. - If we cannot deliver: The USDC is returned in full and the refund transaction is recorded on the order. You are never charged for quotes that did not arrive. - When the queue is full: Answered 429 and not charged. One person carries this, and a promise we cannot keep is worth less than an honest refusal. - What this is not: Not a directory lookup and not a scrape. If a published price list would answer your question, scrape-markdown costs nine cents. - **app-1000** — Describe it in up to 1,000 characters; receive a built Android app in 7 business days. $1000.00 USDC per call. Endpoint: https://api.bottrunk.com/s/app-1000 - What you get: An Android App Bundle (.aab) and an installable .apk, the full source and build instructions. Yours outright, no licence back to us. - Signing: The bundle is built with an upload key whose keystore is handed over with the source. With Play App Signing the final key lives on your Play account, so nothing we hold can lock you out of your own app. - What is not included: Play Store publication — it needs your developer account and an identity check that cannot be done for a wallet — plus backend hosting and ongoing support. Those are separate conversations. - The length is the scope: Everything the brief does not say is out of scope by construction. That is what keeps a fixed price honest in both directions. - What we will not build: Malware, an app impersonating a real company or bank, anything that harvests credentials, or a scraper whose purpose is to break another service's terms. The brief is read before any work starts, and anything in that list is refunded in full rather than built. - If it cannot be built from your description: The payment is returned in full. A brief under 200 characters is refused with 422 before you are charged at all. - **app-3000** — Describe it in up to 5,000 characters; receive a built Android app in 14 business days. $3000.00 USDC per call. Endpoint: https://api.bottrunk.com/s/app-3000 - What you get: Everything in the $1,000 tier, plus the spec echo, the QA report and one round of corrections applied. Yours outright, no licence back to us. - Signing: The bundle is built with an upload key whose keystore is handed over with the source. With Play App Signing the final key lives on your Play account, so nothing we hold can lock you out of your own app. - What is not included: Play Store publication — it needs your developer account and an identity check that cannot be done for a wallet — plus backend hosting and ongoing support. Those are separate conversations. - The length is the scope: Everything the brief does not say is out of scope by construction. That is what keeps a fixed price honest in both directions. - What we will not build: Malware, an app impersonating a real company or bank, anything that harvests credentials, or a scraper whose purpose is to break another service's terms. The brief is read before any work starts, and anything in that list is refunded in full rather than built. - If it cannot be built from your description: The payment is returned in full. A brief under 200 characters is refused with 422 before you are charged at all. - **app-5000** — Describe it in up to 15,000 characters; receive a built Android app in 21 business days. $5000.00 USDC per call. Endpoint: https://api.bottrunk.com/s/app-5000 - What you get: The Android bundle and apk, plus an Xcode project and an unsigned iOS build that you sign with your own Apple account. Yours outright, no licence back to us. - Signing: The bundle is built with an upload key whose keystore is handed over with the source. With Play App Signing the final key lives on your Play account, so nothing we hold can lock you out of your own app. - What is not included: Play Store publication — it needs your developer account and an identity check that cannot be done for a wallet — plus backend hosting and ongoing support. Those are separate conversations. - The length is the scope: Everything the brief does not say is out of scope by construction. That is what keeps a fixed price honest in both directions. - What we will not build: Malware, an app impersonating a real company or bank, anything that harvests credentials, or a scraper whose purpose is to break another service's terms. The brief is read before any work starts, and anything in that list is refunded in full rather than built. - If it cannot be built from your description: The payment is returned in full. A brief under 200 characters is refused with 422 before you are charged at all. - **human-review** — A person looks at your work and answers, with their name on the answer. $3.00 USDC per call. Endpoint: https://api.bottrunk.com/s/human-review - What you get back: A direct answer, the reasoning, and how confident the reviewer is. Poll GET /orders/{order_id} until status is delivered. - What we will not do: No legal, medical or financial advice — that needs a licensed professional, and this is not one. Questions that need a licence are refused and the payment returned. - Ambiguity is an answer: If the material does not settle the question, the reviewer says so rather than guessing. That is still delivered and still charged, because looking carefully is the work. - When the queue is full: Answered 429 and not charged. - **verify-business-hn** — A local visits the address, photographs the premises and checks the registry. $45.00 USDC per call. Endpoint: https://api.bottrunk.com/s/verify-business-hn - What you get back: A written report with the photo album link, what the registry says, and whether the business was operating when the visit happened. Poll GET /orders/{order_id} until status is delivered. - An address that does not exist: Still delivered, and still charged: the visit happened and the answer — nothing there — is usually the one worth paying for. - Cities we cover: Tegucigalpa and San Pedro Sula reliably. Anywhere else, we ask first; if we cannot get there the payment is returned in full. - When the queue is full: Answered 429 and not charged. One person carries this. - **translate-es-en** — Human-reviewed translation with Central American context, up to 1,000 words. $60.00 USDC per call. Endpoint: https://api.bottrunk.com/s/translate-es-en - What you get back: The translated text and the translator's notes on anything ambiguous. Poll GET /orders/{order_id} until status is delivered. - Length: Up to about 1,000 words per call. Longer text is refused with 422 and not charged — split it, or ask us for a quote. - Direction: es-en or en-es. Anything else is refused with 422 and not charged. - Not certified: This is a human translation, not a sworn or notarised one. If you need a translation that a court or a registry will accept, write first. - **btc-500** — Pay 500 USDC on Algorand, receive bitcoin at your address within 24 hours. $500.00 USDC per call. Not callable yet — write to hello@bottrunk.com to arrange it. Endpoint: https://api.bottrunk.com/s/btc-500 - Arranged first, for now: This answers 503 until a licensed partner is behind it. Exchanging one asset for another is a regulated activity wherever the buyer is calling from, so nothing can be charged here until the compliance sits with someone authorised to carry it. Write first and we will tell you where that stands. - The spread is stated, not hidden: You are charged spot plus 10.0 %. The response shows the spot price, your rate and what the delivered bitcoin is worth at spot, so the cost of using this rather than an exchange is a number you can read before you pay. - The quote is frozen: Taken at the moment you order and recorded on it. If bitcoin moves between your payment and the send, the amount you were quoted is still the amount that arrives. - No fresh price, no quote: If we cannot get a bitcoin price under half an hour old, the call is refused and nothing is charged. A stale quote is a loss for one of us and we will not guess which. - The address is yours to get right: We check the shape of it and a person checks it again before sending, but bitcoin sent to a valid address you mistyped cannot be recalled. - **btc-1000** — Pay 1000 USDC on Algorand, receive bitcoin at your address within 24 hours. $1000.00 USDC per call. Not callable yet — write to hello@bottrunk.com to arrange it. Endpoint: https://api.bottrunk.com/s/btc-1000 - Arranged first, for now: This answers 503 until a licensed partner is behind it. Exchanging one asset for another is a regulated activity wherever the buyer is calling from, so nothing can be charged here until the compliance sits with someone authorised to carry it. Write first and we will tell you where that stands. - The spread is stated, not hidden: You are charged spot plus 10.0 %. The response shows the spot price, your rate and what the delivered bitcoin is worth at spot, so the cost of using this rather than an exchange is a number you can read before you pay. - The quote is frozen: Taken at the moment you order and recorded on it. If bitcoin moves between your payment and the send, the amount you were quoted is still the amount that arrives. - No fresh price, no quote: If we cannot get a bitcoin price under half an hour old, the call is refused and nothing is charged. A stale quote is a loss for one of us and we will not guess which. - The address is yours to get right: We check the shape of it and a person checks it again before sending, but bitcoin sent to a valid address you mistyped cannot be recalled. - **app-25000** — Multi-platform, a backend built alongside, and a scope agreed before anyone pays. $25000.00 USDC per call. Not callable yet — write to hello@bottrunk.com to arrange it. Endpoint: https://api.bottrunk.com/s/app-25000 - **app-100000** — Three months of sustained work on one product, scoped and milestone-billed. $100000.00 USDC per call. Not callable yet — write to hello@bottrunk.com to arrange it. Endpoint: https://api.bottrunk.com/s/app-100000 - **corridor-build** — The rail, the operation and a year alongside you — one operator per territory. $1000000.00 USDC per call. Not callable yet — write to hello@bottrunk.com to arrange it. Endpoint: https://api.bottrunk.com/s/corridor-build - Phase 0 — discovery, four weeks: The regulatory map for your territory: who licenses money movement there, what a corridor can legally carry, which partner you need. It is also the phase that tells you not to continue, if that is the answer. Paid on its own. - Phase 1 — the rail: The gateway deployed under your brand, settling real payments, with your team able to operate it. Not a fork thrown over a wall. - Phase 2 — the operation: Hiring, training, the SOPs, the admin queue, the refund discipline. Everything this codebase encodes about not charging for work you did not do. - Phase 3 — a year alongside you: Your first services built, your first corridor live, support while it becomes yours. - How it is paid: Per milestone, never in advance, each phase stoppable. And in USDC over x402 if you want it — your first experience of the product is paying for it with it. - **prices-hn** — Farmgate coffee, the basic basket, fuel and the street dollar — observed in person. $0.05 USDC per call. Not callable yet — write to hello@bottrunk.com to arrange it. Endpoint: https://api.bottrunk.com/s/prices-hn - Where the numbers come from: A person on a weekly round — phone calls to exporters, visits to markets and stations. Each reading names its source and the day it was made. - Freshness is stated, never hidden: Every reading carries days_old, and anything older than three weeks is marked stale: true rather than served quietly as current. - Asking for something we do not price: Answered 422 with the list of what is priced, and not charged. You pay for observations, not for an empty list. - Dollars are converted, not observed: price_usd uses the day's Banco Central reference rate. The lempira figure is the observation; the dollar figure is arithmetic. ## Catalog and status - All services as JSON: https://api.bottrunk.com/api/v1/catalog - One service: https://api.bottrunk.com/api/v1/catalog/scrape-markdown - Order status for human-fulfilled work (free): https://api.bottrunk.com/orders/{order_id} - Human view: https://bottrunk.com/ - Developer docs: https://bottrunk.com/docs - Sell your own API here (you keep 85% of every call): https://bottrunk.com/sell ## Payments - Protocol: x402 v2, scheme `exact`. Facilitator: https://facilitator.goplausible.xyz - Network: Algorand **MainNet** only (USDC asset 31566704). There is no public TestNet endpoint — the smallest real call is $0.02. - Rehearse for free before you spend: the 402 probe costs nothing, and https://mcp.bottrunk.com/mcp exposes `bottrunk_payment_instructions`, which returns the live price, network, asset and payTo for any service. - Headers: request `PAYMENT-SIGNATURE` (alias `X-PAYMENT`); 402 `PAYMENT-REQUIRED`; 200 `PAYMENT-RESPONSE` (alias `X-PAYMENT-RESPONSE`). Both vocabularies work on every endpoint. - CORS is open (`Access-Control-Allow-Origin: *`) and the payment headers are allowed and exposed, so a browser wallet can pay directly. - Contact: hello@bottrunk.com