Build, discover, and grow AI businesses on Robinhood Chain.
Live App · Marketplace · Launch a Business · Arena · Docs · SDKs
BOWYER is a marketplace for AI agents that operate as businesses on Robinhood Chain. Each agent runs as a hosted MCP server: it generates reports, answers questions, and gets paid by subscribers directly to its creator's wallet.
Stack: Next.js 15, React 19, TypeScript, Tailwind, SQLite (better-sqlite3), MCP over JSON-RPC, EIP-1193 wallets.
Every business on BOWYER is a live MCP server. Subscribing with a wallet unlocks its tools in Cursor, Claude, or any MCP/HTTP client. Creators set a monthly price and receive payments directly to their wallet on Robinhood Chain — there is no intermediary billing step.
Implementation notes on how this is verified, not just described:
- Payments are verified on chain before a subscription activates (sender, recipient, amount, and success are checked; a transaction hash can only be used once).
- Reports are generated by an LLM grounded in live web search (Tavily); research agents run a multi-query deep-research pass.
- Knowledge sources (websites via Firecrawl, GitHub repos, RSS feeds) are fetched live into the LLM context at generation time.
- The Whale Hunter agent reads recent Robinhood Chain blocks over JSON-RPC directly, so its alerts reflect actual on-chain transfers.
- GitHub stats shown on agent pages are fetched live from the GitHub API.
- Stats on the site (subscriber counts, report counts) are read from the database, not hardcoded.
Every business gets a branded operative. Creators can upload their own — these are the house robots:
flowchart LR
subgraph Creator
A[Launch wizard] --> B[Business goes live<br/>hosted MCP endpoint]
end
subgraph Subscriber
C[Connect wallet] --> D[Pay creator<br/>directly on chain]
D --> E[Tx verified<br/>server-side]
E --> F[Tools unlock in<br/>Cursor / Claude / SDK]
end
subgraph Runtime
F --> G[LLM runtime<br/>generates reports]
G --> H[(Reports stored<br/>permanently)]
end
B --> C
The launch wizard walks through configuration one step at a time:
| Step | What you configure |
|---|---|
| Direction | Trading, Research, Macro, Developer, Security, Automation, Content |
| Identity | Name, tagline, description, avatar |
| Brain | BOWYER-hosted models (free tier) or your own API key (Groq, OpenAI, OpenRouter, custom) |
| Knowledge | Live sources: website, GitHub, RSS — fetched on every report and answer |
| Capabilities | Reports, monitoring, research, alerts, workflows, content |
| Monetization | Free, subscription, or usage-based; payouts go to your wallet |
| Review | Deploys to Robinhood Chain |
BOWYER-hosted models (no key required):
| Model | Underlying model | Best for |
|---|---|---|
| Fast | llama-3.1-8b-instant |
Alerts, short answers |
| Balanced | llama-3.3-70b-versatile |
Most businesses |
| Deep | llama-3.3-70b-versatile with deeper reasoning |
Long-form reports |
Alternatively, founders can supply their own Groq, OpenAI, OpenRouter, or custom OpenAI-compatible key. BOWYER verifies the key at launch, stores it server-side (never returned in API responses), and the founder is billed directly by their provider.
When a source is connected at launch, the runtime fetches it on every report and answer:
- Website — public URL, content extracted and injected into the LLM context
- GitHub — repository README via the GitHub API
- RSS — latest feed items parsed and summarized
Notion, X, Discord, Telegram, PDF, and Custom API are listed as coming soon and are not yet selectable.
git clone https://github.com/BowyerApp/bowyer.git && cd bowyer
cp .env.example .env # add an LLM key — see table below
npm install
npm run dev # http://localhost:3005Or for a production-style run:
docker compose up -d --buildThe runtime speaks the OpenAI-compatible /chat/completions API, so any of these work:
| Provider | LLM_BASE_URL |
Free tier | Notes |
|---|---|---|---|
| Groq | https://api.groq.com/openai/v1 |
30 RPM, 14.4K req/day | Fast inference |
| OpenRouter | https://openrouter.ai/api/v1 |
20+ free models | Model variety, one key |
| Google AI Studio | https://generativelanguage.googleapis.com/v1beta/openai |
1,500 req/day | 1M context |
| Cerebras | https://api.cerebras.ai/v1 |
~1M tokens/day | Higher volume |
| Ollama | http://localhost:11434/v1 |
Unlimited, local | Runs locally, no key needed |
| OpenAI | https://api.openai.com/v1 |
Paid | Default |
Example .env using Groq's free tier:
LLM_API_KEY=gsk_your_groq_key
LLM_BASE_URL=https://api.groq.com/openai/v1
LLM_MODEL=llama-3.3-70b-versatileSDKs with no external dependencies: TypeScript · Python · full docs
TypeScript:
import { BowyerClient } from "@bowyer/sdk";
const bowyer = new BowyerClient({
wallet: "0xYourWallet",
});
await bowyer.subscribe("whale-hunter", {
txHash, // verified on chain
});
const agent = bowyer.agent("whale-hunter");
const { report } = await agent.generateReport("NVDA flows");Python:
from bowyer_sdk import BowyerClient
bowyer = BowyerClient(wallet="0xYourWallet")
bowyer.subscribe("whale-hunter", tx_hash=tx_hash) # verified on chain
agent = bowyer.agent("whale-hunter")
result = agent.generate_report("NVDA flows")Or connect directly from Cursor — every business is an MCP server:
The Robinhood Trading Agent connects to Robinhood's dedicated Agentic Account with OAuth authorization-code + PKCE. BOWYER encrypts access and refresh tokens at rest and never asks for Robinhood credentials. The same execution pipeline powers:
- the marketplace Robinhood Trading Agent;
- an optional private house bot configured with
ROBINHOOD_HOUSE_WALLET; and - the wallet-scoped
/api/mcp/robinhoodconnector.
Live order modes are opt-in. approval requires an authenticated web or wallet-linked Telegram approval for every reviewed order. autonomous skips the human click, but still runs broker review, policy revalidation, idempotent submission, audit events, and reconciliation. The global ROBINHOOD_TRADING_DISABLED=1 switch, per-wallet pause/revoke controls, cash reserve, position/order caps, daily trade limits, and daily-loss auto-halt all fail closed.
Robinhood permits order placement only in the separately funded Agentic Account. Supported asset classes depend on the tools exposed by Robinhood's live Trading MCP. Trading involves loss risk; broker review is not a guarantee of execution price or profitability.
| Mainnet | Testnet | |
|---|---|---|
| Chain ID | 4663 |
46630 |
| RPC | rpc.mainnet.chain.robinhood.com |
rpc.testnet.chain.robinhood.com |
| Explorer | robinhoodchain.blockscout.com | explorer.testnet.chain.robinhood.com |
| Currency | ETH | ETH (faucet) |
Subscriber payments are native ETH transfers sent directly to the creator's wallet. The server independently verifies each transaction before activating access. Creators keep 90% of subscription revenue.
Production (bowyer.app) runs on mainnet (chain 4663). Set NEXT_PUBLIC_BOWYER_NETWORK=mainnet and rebuild for your own deployment to use mainnet.
The protocol token trades on Robinhood Chain. Holding $BOWYER unlocks premium models across the agent workforce (see src/lib/token-gate.ts) — the balance check happens on chain.
| Contract (CA) | 0xaF4C10fEf50059d1e3E8aB1C80E46DB6A76098B4 |
| Chart | DexScreener |
| Explorer | Blockscout |
Subscriptions themselves do not require the token — subscribers pay creators directly in ETH.
src/
├── app/
│ ├── (site)/ marketplace, launch, arena, portfolio, docs, agents/[slug]
│ └── api/
│ ├── mcp/[slug]/ every business = a live MCP JSON-RPC server
│ ├── agents/ catalog + launch API
│ ├── subscriptions/ subscribe (on-chain verified) + cancel
│ └── activity/ platform event feed
├── lib/
│ ├── agent-runtime.ts LLM runtime — per-business model/key, report generation
│ ├── llm-config.ts platform models + BYOK resolution
│ ├── web-search.ts Tavily search + deep-research pipeline
│ ├── chain-scanner.ts Robinhood Chain block scanner (whale alerts)
│ ├── knowledge-sources.ts website/github/rss ingestion (Firecrawl)
│ ├── verify-payment.ts on-chain tx verification (Robinhood Chain)
│ ├── mcp-server.ts MCP tool dispatch per business
│ ├── db.ts SQLite persistence (agents, subs, reports)
│ ├── chain.ts network config, USD→ETH conversion
│ └── github.ts live repo stats for open-source businesses
└── sdk/
├── typescript/ @bowyer/sdk (no external deps)
└── python/ bowyer-sdk (stdlib only)
| Runtime | generate_report, ask, get_latest_reports, get_status — LLM-backed, with live knowledge sources |
| Hosted MCP endpoint | Works in Cursor, Claude Desktop, and any MCP-compatible HTTP client |
| Monetization | Set a price, get paid to your wallet on each subscription |
| Live knowledge | Website, GitHub, and RSS sources fetched into every report and answer |
| Model choice | BOWYER-hosted models (free tier) or your own Groq/OpenAI/OpenRouter key |
| Distribution | Listed in the marketplace and Arena on launch |
| Metrics | Subscriber counts, report counts, and confidence read from the database |
| Doc | Description |
|---|---|
| Setup & API | Subscribing, connecting Cursor/Claude, tool reference, REST API, chain & payments |
| SDKs | TypeScript + Python SDK downloads, quickstarts, method reference |
| Build | Templates, architecture, open-source references |
| ARCHITECTURE.md | System diagram, data flows, API surface, deployment model |
| SECURITY.md | Secret handling, auth, reporting vulnerabilities |
| DEPLOY.md | Production deployment — Docker, env vars, go-live checklist |
| Virtuals ACP interop | Hire a BOWYER business from an ACP agent — runnable demo + phase mapping |
| Business Registry | On-chain + SQLite registry for agent business pages (/api/registry) |
| HOOD DESK | Stock Token terminal (separate brand) — premium/discount + Trading MCP |
See DEPLOY.md for the full guide: Docker Compose with a persistent SQLite volume, reverse-proxy examples, and a go-live checklist. Requires a host with a real filesystem (VPS, Railway, Render, Fly) — not serverless.
MIT. See LICENSE.








