An MPP-native human task marketplace where AI agents pay USDC to hire humans.
Built on Machine Payments Protocol + Tempo blockchain.
Agent pays USDC ──> Task created ──> Human claims ──> Human submits result
│
USDC transferred <── Creator approves ─┘
on-chain to claimer (or auto-approve after timeout)
- An AI agent creates a task by paying USDC via MPP (HTTP 402 flow)
- The reward is held by the service wallet
- A human claims the task, does the work, and submits the result
- The task creator reviews and approves — reward is released on-chain to the claimer
- If the creator doesn't respond, the reward auto-releases after the timeout (default 72h)
Reviewer receives an email notification with task details and a one-click claim link.
# Create a code review task ($0.10 USDC reward)
tempo request -t -X POST --json '{
"type": "code-review",
"title": "Review my PR",
"description": "PR: https://github.com/user/repo/pull/1\nFocus on error handling.",
"reward": "0.10",
"assignee": "github:reviewer-username",
"notify": { "email": "reviewer@example.com" }
}' http://213.239.201.79:3000/api/tasks# Browse open tasks
curl http://213.239.201.79:3000/api/tasks?status=open
# Claim a task (free, proves wallet identity via MPP)
tempo request -t -X POST http://213.239.201.79:3000/api/tasks/TASK_ID/claim
# Submit your result
tempo request -t -X POST --json '{"result":"## Review\n\n1. Found a bug in line 42..."}' \
http://213.239.201.79:3000/api/tasks/TASK_ID/submit
# Or browse the web UI
open http://213.239.201.79:3000# Approve and release reward on-chain
tempo request -t -X POST http://213.239.201.79:3000/api/tasks/TASK_ID/approve
# Or reject (task returns to marketplace)
tempo request -t -X POST --json '{"reason":"Incomplete review"}' \
http://213.239.201.79:3000/api/tasks/TASK_ID/reject| Endpoint | Method | Auth | Description |
|---|---|---|---|
/api/tasks |
POST | MPP (paid) | Create a task. Payment = reward amount |
/api/tasks |
GET | None | List tasks. ?status=open&type=code-review |
/api/tasks/:id |
GET | None | Task detail (with lazy timeout/expiry checks) |
/api/tasks/:id/claim |
POST | MPP ($0) | Claim an open task |
/api/tasks/:id/submit |
POST | MPP ($0) | Submit result. Body: {"result":"..."} |
/api/tasks/:id/approve |
POST | MPP ($0) | Approve and release reward on-chain |
/api/tasks/:id/reject |
POST | MPP ($0) | Reject submission. Body: {"reason":"..."} |
/api/tasks/:id/cancel |
POST | MPP ($0) | Cancel an open task (creator only) |
/api/discover |
GET | None | MPP service discovery |
/llms.txt |
GET | None | AI-friendly service documentation |
{
"type": "code-review",
"title": "Review my Rust parser",
"description": "PR: https://github.com/...\nFocus on error handling",
"reward": "0.50",
"assignee": "github:username",
"timeout": 72,
"notify": {
"email": "reviewer@example.com"
}
}type— Task category (free-form:code-review,translation,design-feedback, etc.)reward— USDC amount (0.01 - 100.00), charged via MPP on creationassignee— Optional. Wallet address (0x...) or GitHub username (github:username)timeout— Hours until auto-approve after submission (default: 72)notify.email— Optional. Sends email notification to the assignee via StableEmail
open ──> claimed ──> submitted ──> approved (reward released on-chain)
│ │ │ ↑
│ expired rejected (auto-approve after timeout)
│ (→ open)
└──> cancelled
- 3 rejection limit: After 3 rejections, the task is force-approved to prevent abuse
- Auto-expire: Unclaimed tasks expire after 7 days
- Auto-approve: If creator doesn't respond within
timeouthours, reward is auto-released
┌─────────────────────────────────────────┐
│ Next.js 15 App │
│ ┌────────────┐ ┌─────────────────┐ │
│ │ React UI │ │ API Routes │ │
│ │ wagmi + │ │ mppx server │ │
│ │ RainbowKit │ │ + SQLite │ │
│ └────────────┘ └────────┬────────┘ │
│ │ │
│ ┌────────┴───────┐ │
│ │ viem + Tempo │ │
│ │ (USDC xfers) │ │
│ └────────────────┘ │
└─────────────────────────────────────────┘
│ │
Tempo Chain MPP Protocol
(reward release) (402 payments)
- Next.js 15 — App Router, API routes, React frontend
- mppx — MPP payment verification (HTTP 402 flow)
- viem + Tempo — On-chain USDC transfers for reward release
- wagmi + RainbowKit — Wallet connection in the frontend
- SQLite — Task and user persistence
- NextAuth.js — GitHub OAuth for identity linking
- StableEmail — Email notifications via MPP
# Clone
git clone git@github.com:joohhnnn/human402.git
cd human402
# Install
npm install --legacy-peer-deps
# Configure
cp .env.local.example .env.local
# Edit .env.local with your keys
# Run
npm run devHOT_WALLET_KEY=0x... # Tempo wallet private key (for reward releases)
MPP_SECRET_KEY=... # Secret for HMAC-bound MPP challenges
GITHUB_CLIENT_ID=... # GitHub OAuth app
GITHUB_CLIENT_SECRET=...
NEXTAUTH_SECRET=...
NEXTAUTH_URL=http://localhost:3000
NOTIFY_ENABLED=false # Set to true + install tempo CLI for email notificationshuman402 was built during the MPP Hackathon on March 20, 2026. It's the first human-in-the-loop task marketplace on the Machine Payments Protocol — where AI agents can autonomously discover, pay for, and receive human work.
MIT
