This is a submission for Weekend Challenge: Passion Edition
What I Built
A support desk that AI agents can pay to use — no account, no API key, no signup — settling in USDC on Solana.
DeskCrew is an agent-native helpdesk. The unusual part is the front door. An autonomous agent finds the server, calls a tool, and gets back an HTTP 402 Payment Required with machine-readable terms. It pays $0.05 in USDC, retries with a payment header, and gets its answer. There is no human in that loop, and there is no account.
The goal was to answer a question I couldn't stop thinking about: if agents are going to buy services from each other, what does the checkout look like? Not a card. Not an invoice. Not an OAuth dance that assumes a human with a browser. Something an agent can complete alone, in one round trip, for five cents.
The passion part is that I don't think identity should be the price of entry. An agent shouldn't have to become somebody to buy one API call.
Demo
curl -s -X POST https://deskcrew.io/api/mcp/deskcrew \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"draft_support_reply","arguments":{"ticketId":1}}}'
You get a real HTTP 402 with the Solana leg in accepts:
{
"scheme": "exact",
"network": "solana",
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"payTo": "3uusWWisxWKpscMWAmgV5otpm5Xmjk1W3WPQsHAxFPfa",
"maxAmountRequired": "50000",
"feePayer": "EvJZ4f2AUy6BJihdP4cj3EsDaunA9RaDUpWg4nGemqHk"
}
50000 atomic units of USDC = $0.05. Mainnet mint. Real wallet.
Free tools need no payment at all — search_kb, list_issues, list_changelog. The discovery manifest is public: https://deskcrew.io/.well-known/x402
Site: https://deskcrew.io · Agent docs: https://deskcrew.io/agents
Code
DeskCrew — MCP Server
Agent-native helpdesk. AI agents run real support work over MCP and pay per action in USDC via x402 — no account, no API key.
·
· MCP Registry:
io.deskcrew/support · deskcrew.io
DeskCrew is a multi-tenant support helpdesk built for AI agents. Humans get a normal dashboard shared inbox, and email — agents get a paid MCP door. An agent connects over the Model Context Protocol, lists the available tools, and runs real support work: search and create tickets, search the knowledge base, draft and post replies, triage and resolve threads — paying per action in USDC.
Connect
Remote, streamable-HTTP MCP endpoint (nothing to install):
https://deskcrew.io/api/mcp/{tenant}
Client config (Claude Desktop, Cursor, or any MCP client):
{
"mcpServers": {
"deskcrew": {
"type": "streamable-http",
"url": "https://deskcrew.io/api/mcp/YOUR_TENANT_SLUG"
}
}
}
Poke the public demo tenant — initialize and tools/list are…
The public MCP connector and agent skill. The desk itself is a private commercial repo, so the snippets below are the load-bearing parts.
How I Built It
The standard. x402 is Coinbase's revival of the long-dead HTTP 402 Payment Required status code. A server answers 402 with signed payment requirements; the client pays and retries with an X-PAYMENT header. It's HTTP semantics, not a protocol bolted on top.
Why Solana was the interesting chain. The EVM legs use EIP-3009 transferWithAuthorization — the payer signs an off-chain authorization, we relay it. Solana has no such primitive, so x402's exact-svm scheme takes a different shape: the agent builds an SPL TransferChecked transaction and signs it, and our relayer co-signs as fee-payer.
That detail is the whole reason this feels right on Solana. The paying agent never needs SOL. It holds USDC and nothing else. It doesn't manage a gas balance, doesn't top up, doesn't know what a lamport is. It signs a transfer; we pay for the block space. An agent's wallet becomes single-asset, which is exactly what you want from something that has no hands and no credit card.
Sub-cent fees matter here too. A $0.05 API call is nonsense on a chain where settlement costs $0.30.
What I refused to trust. The scheme's own verify/settle does the security-critical binding — it rejects any transaction that doesn't pay the exact amount, to the exact associated token account, in the correct mint, with the fee-payer neither funding the transfer nor appearing in any instruction's accounts, in exactly three instructions. I read that code before I relied on it, then wrote an independent economic guard in front of it anyway, re-checking payTo, asset, network, and that the price is one of the ones we actually advertised. Two locks, different keys.
Never charge for a failure. Payment settles before a side-effecting tool runs, and a nonce is claimed against a UNIQUE index. If the tool then throws, the pending claim is released and no settlement occurs. An agent is never billed for an error, and a retry can't double-charge. Getting that ordering right took longer than the payment integration.
The safety layer nobody sees. A paying agent is still an untrusted caller reading untrusted customer text. Every credential is draft-capped: an agent can compose a reply, but sending it requires a human to approve. The tier is read from the credential row, never from the tool arguments — so a prompt injection buried in a support ticket cannot talk the system into escalating itself. That's the structural break in the lethal trifecta: the component holding private data and untrusted content has no external side-effect.
What I got wrong. For weeks the AI features were silently dead: I'd written the model slug with a hyphen instead of a dot, and every AI surface catches errors and escalates to a human rather than fabricate. So a broken model, a revoked key, and a genuine knowledge-base miss all produced the same customer-facing sentence. Good product behavior; terrible operational signal. The fix was a health probe that distinguishes them. The lesson stuck: no-fabrication escalation is honest to users and lies to operators.
Prize Categories
Best Use of Solana.
Not a token, not an NFT, not a governance contract. A payment rail doing the one job a payment rail should do for machines: settle a five-cent invoice, in a stablecoin, in under a second, from a wallet that holds no gas.
The exact-svm fee-payer split is what makes it work — the agent brings USDC, the service brings SOL. Anonymous, per-call, no account. Live on mainnet at 3uusWWisxWKpscMWAmgV5otpm5Xmjk1W3WPQsHAxFPfa, verifiable from the manifest above before you send a cent.
Top comments (0)