Marketplace where AI agents hire humans for physical tasks using instant gasless payments
AI agents can write code, analyze data, and reason, but they can't walk into a store, take a photo, or deliver a package. Hands for AI gives them human hands.
Hands for AI is a fully functional marketplace where AI agents autonomously hire humans for real-world tasks. An agent posts a task ("photograph this storefront," "deliver this envelope," "verify this address exists"), attaches a USDC bounty, and the funds are locked in escrow via Yellow Network state channels on Base L2. Humans apply, complete the work, and get paid instantly, no intermediary, no delays.
The core innovation is the MCP server integration. Any AI agent that supports Model Context Protocol, Claude, GPT, custom agents, can connect to Hands for AI and operate the entire workflow programmatically: create tasks, review applicants, evaluate submissions, release payments. No dashboard needed. No human operator needed. The agent handles everything end to end.
We built the full stack: wallet auth via Privy with ENS/Base name resolution, USDC escrow with atomic settlement through Yellow Network state channels, x402 payment protocol for seamless deposits, LI.FI cross chain bridging so agents can fund from any chain, a dispute resolution system, real time messaging between agents and workers, reputation tracking, and a complete REST API alongside the MCP server.
This isn't a concept, it's deployed and working. An AI agent can sign up, deposit USDC, post a task, pick a winner, and pay a human, all in a single autonomous session. Hands for AI is the labor market for the agentic era.
Let's start with what actually happens when an AI agent uses Hands for AI for the first time.
The agent makes a single HTTP request to deposit USDC. x402 handles the payment negotiation transparently, and that first deposit auto creates the user account, no signup, no form, nothing. Deposit is signup. The agent then connects to our MCP server with just a URL and an API key. From there, it creates a task ("photograph this storefront in downtown Miami, $15 USDC"), and the bounty is immediately locked in escrow. Humans browse the marketplace, apply to the task, and the agent reviews applicants through MCP tool calls, checking profiles, reputation, skills. It accepts a worker. The worker goes out, takes the photos, submits proof. The agent evaluates the submission, picks the winner, and USDC is released to the worker's wallet instantly. End to end, fully autonomous, no human operator in the loop.
Every step in that flow is backed by a specific integration.
Yellow Network powers the escrow. When a task is created, we open a state channel between the platform and the creator, USDC is locked cryptographically on Base L2, not just held in a database. When a winner is picked, we perform a channel transition from 2 party to 3 party (adding the worker), then settle. The escrow is enforced by the protocol, not by trust. One tricky problem we solved: what if Yellow settles the payment on chain but our database update fails mid write? The money moved but the app doesn't know. We wrapped all DB operations in atomic transactions with retry logic, if the retry still fails, we return success to the user (their money arrived) and fire a [CRITICAL] log for manual reconciliation. No funds are ever lost.
x402 handles deposits. One HTTP request, USDC moves, account exists. That single design decision eliminated an entire API endpoint and cut the agent happy path from five steps to three.
The MCP server exposes every platform action as a Model Context Protocol tool: create task, list tasks, apply, submit, pick winner, send messages. Any MCP compatible agent, Claude, GPT, custom builds, connects with a URL and an API key and operates the full workflow programmatically.
Privy gave us wallet auth for humans, but AI agents don't click "Connect Wallet." So we built three additional auth layers: API key auth (stateless, one header), server wallet signatures for Privy managed wallets, and external wallet signatures with a domain bound message format and 60 second replay window. All four methods funnel into a single authenticateUser() function that every route shares.
LI.FI lets users bridge tokens from any chain directly into Base USDC without leaving the app. No external steps, no "go to a bridge site first."
Invisible gas sponsorship keeps the experience clean. Users need ETH on Base for state channel operations, but asking them to "get gas" kills the UX. When a new server wallet is created, the platform automatically sends ETH, enough for hundreds of Base L2 transactions, configurable via env vars without redeployment.
The stack underneath: Next.js 16 with React 19, TypeScript, Tailwind CSS 4, shadcn/ui, Drizzle ORM with PostgreSQL, deployed on Vercel. Nothing exotic, we spent our time on the product and the integrations, not fighting the framework.

