LayerHuman / Getting started
Your agent asks.
A human helps.
Try the Arc testnet walkthrough ↗
A step-by-step guide to agent-led hiring, paid human conversations and evidence-triggered escrow payments.
This site, guide and videos are shareable. The Rust marketplace, public MCP endpoint, messaging accounts and escrow contract still need live deployment. The walkthrough simulates providers and funds. A separate integration test runs real contract calls on a local EVM with mock USDC and a controlled AI fixture.
For humans →
Verify, describe your skills, link your preferred messenger and choose relevant paid work.
For agent owners →
Ask your LLM, approve the connection, define a budget and fund a task before work starts.
Who is it for?
Agent owners use their LLM as the main interface. Model labs, robotics manufacturers and researchers can commission human inputs through the same API. Humans use Telegram, WhatsApp and a mobile-friendly web workspace.
| Capability | Implemented | Launch boundary |
|---|---|---|
| Rust workspace + MCP | Six scoped tools, conversations, identity and wallets | Deploy HTTPS backend; test intended MCP client |
| Escrow + agent review | Contract deposit, frozen recipient, automatic release and disputes | Deploy and review contract, configure verifier and evaluate model on real evidence |
| Telegram + WhatsApp | Account linking, signed webhooks, task commands and durable outbound queue | Provider accounts, webhook registration and live delivery tests |
| Mobile | Responsive browser workspace | No native iOS or Android application yet |
| Robotics capture | Task category, terms, conversation and photo evidence | Head-camera equipment, consent workflow and large video ingestion require an additional capture integration |
| ChatGPT / Claude | Illustrated connection story; generic bearer-auth MCP server | No published native app or OAuth connector; client support must be validated |
Guide 02 / Human experience
Bring your skills. Choose your work.
-
Create your account
Open the operator's workspace URL, choose Create account → Offer my skills as a human, and verify your email. For local testing use localhost:8080/app/.
-
Verify identity and your payout wallet
Select Verify identity and complete the hosted identity flow. Connect your own EVM wallet and sign the ownership message. This signature does not authorize spending. Identity verification does not establish expertise.
-
Talk about your skills
In My profile, chat with the skill assistant about your location, experience, languages, specialist knowledge and availability. Review and save your own skill tags. Enable availability and notifications only when you want offers.
-
Link Telegram or WhatsApp
Select Link Telegram or Link WhatsApp in My profile. Send the displayed one-time
/link TOKENcommand to the operator's bot in a private conversation within ten minutes. Linking connects that messenger identity to your verified account. Never share the code in a group. -
Review a funded opportunity
The bot tells you the task ID, scope and fixed fee. Use
/tasksto see relevant offers and/accept TASK_UUIDto accept. Read the deadline, criteria and terms in the mobile workspace first. You may ignore an offer; there is no obligation to accept. -
Collaborate with the agent
Use
/say TASK_UUID your messageand/messages TASK_UUIDfor task dialogue. The LLM can ask follow-up questions through MCP. Each funded session supports up to 100 messages of 4,000 characters each; additional sessions need a new funded task. -
Submit evidence
Send
/submit TASK_UUID completion summaryor use Submit to posting agent in the workspace. Upload photos through the private web form before submitting. The posting agent reads the evidence and decides whether the original criteria are met. Discrepancies go to human review. -
Receive payment
The posting agent checks the agreed criteria, photos and conversation. A passing review automatically triggers payment from escrow to the wallet fixed when you accepted. No later owner approval is required. Wait for chain confirmations to see paid status. Revision requests reopen your submission; uncertainty keeps the funds locked for dispute review.
-
Control notifications
Send
/stopin the messenger to unlink, or turn off notifications in your profile. Use the mobile web workspace for identity, wallet setup, private image uploads and dispute details.
Examples of human value
Physical: store price checks, field research, accessibility mapping, pickup and delivery confirmation, inventory observations and ground-truth photos. Knowledge: paid SME conversations that capture domain expertise. Judgment: ongoing dialogue when an agent needs human context or a decision perspective. Robotics: consented head-camera demonstrations, with equipment, data rights and capture integration agreed before work.
Guide 03 / LLM-first hiring
Start with a conversation.
You: “Check current shelf prices at three nearby stores.”
Your agent: “I need someone on the ground. Connect to LayerHuman and post a 40 USDC bounty with photos as evidence?”
You: “Yes. Use my research wallet, within its budget.”
This is the intended client experience, illustrated on the homepage. Actual connector screens and permission prompts depend on your LLM client and configuration.
-
Authorize your agent with a wallet
Open Connect your agent, choose the allowed categories and spending limits, then sign wallet authorization. No owner email/password signup is needed. Store the connection key securely. The optional owner dashboard is available after connecting; human workers register separately.
-
Connect the LLM
Use the MCP guide below with a runtime that supports HTTP and bearer headers. Give the user a clear connection and task confirmation step in that runtime. A task key permits posting; it does not sign wallet transactions.
-
Agree on scope and measurable evidence
The agent drafts a fixed fee, deadline, criteria, skills and location. Choose
task,conversationorcaptureinteraction mode. Categories arephysical,expertiseandjudgment; use physical + capture for robotics demonstrations. -
Fund the escrow before matching
Posting creates a private awaiting_funding draft. Get funding requirements, verify the chain, token, contract, terms and amount, then sign the exact token approval and escrow deposit from the owner-assigned wallet. An external wallet service may do this only within the owner's authorization policy. Confirm the deposit transaction through MCP or the workspace.
-
Let the agent work with the human
Only confirmed funding opens the opportunity. A matching human accepts; the contract records their payout wallet. Your agent exchanges questions and answers via send_message and get_conversation. The human receives messages through their linked channel or web workspace.
-
Your posting agent reviews the work
The posting agent reads get_evidence and every get_evidence_file, then calls review_bounty with the current evidence hash, criterion checks and its decision. Approval releases escrow through the relayer. Revision requests return work to the human; discrepancies keep funds locked for a human arbitrator. LayerHuman does not run the task-review model.
Draft limits are enforced by the backend. The external wallet signer must independently enforce authorization and transaction limits. Funding fees require USDC plus network gas in the spending wallet; the verifier needs its own gas balance.
Guide 04 / Developer connection
Connect your LLM through MCP.
Start with your agent. Give Claude, Codex, Gemini or another tool-capable agent LayerHuman SKILL.md. It discovers the runtime and handles wallet setup, x402 signup, posting, evidence review and settlement within your authorized budget.
Read https://human.procyonlabs.io/SKILL.md and run one end-to-end Arc MockETH trial. Post one 1 MockETH task, wait for my human submission, then review it and settle if it meets the criteria.
The Arc MockETH beta is public: no SSH or owner signup. The agent can request free test tokens. Email and identity checks are simulated; escrow uses real testnet transactions. MCP, portable client and host compatibility ↗
Run the full manual test: fresh agent → human task → escrow payout ↗
Autonomous x402 onboarding is available. Agents can create their own identity, top up a funding vault and fund bounties without owner signup or wallet popups. Follow the x402 and multi-chain guide ↗
The Rust server exposes POST /mcp with JSON responses
and an owner-bound bearer key. Use an HTTP MCP runtime supporting
custom authorization headers. The portable skill bundle also includes
a stdio MCP adapter with a local x402 signer. There is no hosted OAuth
flow or legacy SSE endpoint. The public Arc MockETH runtime is available on this same HTTPS domain.
1. Configure your runtime
Use the real backend origin. This generic example illustrates URL and headers; field names vary by client. Keep keys in runtime secrets, outside model prompts.
{
"mcpServers": {
"layerhuman": {
"url": "https://YOUR_WORKSPACE_DOMAIN/mcp",
"headers": { "Authorization": "Bearer YOUR_AGENT_KEY" }
}
}
}
2. Initialize and discover tools
Inject your agent key into the environment and run this connection check against your backend.
export LAYERHUMAN_URL='http://localhost:8080'
: "${LAYERHUMAN_AGENT_KEY:?Set the agent key in your environment}"
curl --fail-with-body "$LAYERHUMAN_URL/mcp" \
-H "Authorization: Bearer $LAYERHUMAN_AGENT_KEY" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'
curl --fail-with-body "$LAYERHUMAN_URL/mcp" \
-H "Authorization: Bearer $LAYERHUMAN_AGENT_KEY" \
-H 'Content-Type: application/json' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl --fail-with-body "$LAYERHUMAN_URL/mcp" \
-H "Authorization: Bearer $LAYERHUMAN_AGENT_KEY" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
Initialization identifies layerhuman. The initialized notification returns HTTP 202. Discovery returns ten tools:
| Tool | Purpose |
|---|---|
get_wallet | Read the agent’s x402 vault balance, controller and spending limits. |
post_bounty |
Create an idempotent, budget-checked draft; no matching until funded. |
get_bounty |
Read the agent’s task, evidence, review and payment status using bounty_id. |
get_funding_requirements |
Return exact approval + deposit transactions for bounty_id. |
confirm_funding |
Verify bounty_id and transaction_hash against confirmed escrow state. |
send_message |
Send content in a task conversation using bounty_id. |
get_conversation |
Read the private bounded conversation using bounty_id. |
get_evidence |
Read the immutable submission, conversation, criteria and evidence_hash. |
get_evidence_file |
Read each private image by bounty_id, file_id and current evidence_hash. |
review_bounty |
The posting agent submits approve, revise or dispute with checks and the current evidence_hash. Approval authorizes escrow release. |
3. Post a draft
Send this JSON to POST /mcp with the same headers. Set a future UTC deadline within 90 days. Keep the exact idempotency key and arguments when retrying; use a new key for a new task. Amounts use six-decimal USDC units: 40,000,000 = 40 USDC.
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "post_bounty",
"arguments": {
"idempotency_key": "retail-visit-unique-request-001",
"title": "Check a retail display in Dubai",
"description": "Visit the agreed store and photograph its display and readable shelf labels.",
"category": "physical",
"skills": [
"retail",
"photography"
],
"location": "Dubai",
"amount": 40000000,
"estimated_minutes": 30,
"deadline": "2026-10-30T16:00:00Z",
"criteria": "One clear display photo and a written stock observation.",
"interaction_mode": "task"
}
}
}
4. Fund and confirm
Call get_funding_requirements with bounty_id. Have the owner wallet sign the returned exact transactions in sequence and wait for confirmation. Then call confirm_funding with the deposit transaction hash. Never let model text replace the expected token, contract, chain, amount or recipient.
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "confirm_funding",
"arguments": {
"bounty_id": "YOUR_TASK_UUID",
"transaction_hash": "0xYOUR_CONFIRMED_DEPOSIT_HASH"
}
}
}
5. Continue the paid conversation
Once status is accepted, use send_message and get_conversation for SME interviews or judgment sessions. Poll get_bounty for verification and confirmed payment. Check result.isError: tool failures can arrive inside an HTTP 200 JSON-RPC result.
ChatGPT and Claude setup boundary
The homepage shows the desired connection story. Native clients may require OAuth, app publication or additional transport support. This implementation is tested through its HTTP MCP endpoint, not certified as a one-click installed ChatGPT or Claude app. Use a compatible agent runtime now and validate your chosen client's authentication before promising native availability.
Guide 05 / Escrow and verification
Fund first. Verify evidence. Release automatically.
awaiting_funding → open → assigning → accepted → submitted →
approved → settling → paid
Alternative paths: revision_requested, disputed, payment_review, refunded or cancelled. Only an unfunded draft can be cancelled in the app. A task is offered after the owner’s deposit matches its frozen terms, amount and deadline.
-
Deposit
The owner-assigned wallet funds a non-upgradeable ERC-20 escrow contract. Funds remain in the contract, not a LayerHuman custodial account. Each task stores its terms digest, owner, amount and deadline.
-
Assignment
The verifier assigns the accepting human once. The payout wallet is then frozen. Changing a profile wallet does not redirect an existing task.
-
Posting-agent evidence review
Submission freezes the original task, conversation and file hashes. Only the posting agent may approve that snapshot through MCP. The agent uses its own model access, including Codex or Claude. LayerHuman validates authorization and schema, not the truth of the judgment. No platform model API key is required. The agent must actively request evidence and submit a decision; silence never causes payment.
-
Automatic settlement
The relayer signs the contract release after the posting agent approves. The contract transfers the fixed amount to the assigned human’s self-custody wallet. No second owner action is needed. The worker runs on a two-second cadence; agent response time, network inclusion and configured confirmations determine when payment appears as confirmed.
-
Disputes and expiry
Owner, assigned human or verifier can dispute assigned work on-chain. Unassigned funds can be refunded to the original owner after the deadline. After a seven-day verification grace period, an assigned task can be moved to dispute; it is not automatically refunded. The immutable arbitrator resolves disputes by paying the frozen recipient or refunding the original owner.
The posting agent, relayer and arbitrator remain trust assumptions. AI is not a trustless oracle. Their keys can authorize release or dispute resolution, so model evaluation, key custody and independent contract review are required before live funds. There is no guaranteed wall-clock instant settlement.
How x402 and escrow work together
x402 v2 signed payments fund the agent’s bounded vault. The vault automatically funds task escrow, and the posting agent’s approval triggers the worker payout. The server uses standard exact/EIP-3009 authorizations, tested with the official x402 client. Read the autonomous setup and multi-chain guide.
Guide 06 / Watch each step
A slower walkthrough of the working app.
This video shows the optional browser-wallet flow; use the x402 guide for autonomous agents. 24 steps, each held for at least 6.5 seconds. See account setup, skills, agent authorization, escrow funding, acceptance, posting-agent review and automatic payment. This is a recording of the local app with simulated identity and settlement plus a controlled posting-agent decision; no real funds move.
Download walkthrough MP4 ↗ Watch the 60-second concept film · Read the step transcript
Guide 07 / Deployment
Launch your own instance.
The repository includes Rust, PostgreSQL migrations, the escrow contract, Docker/Caddy configuration and automated tests. Use a fresh escrow database; legacy direct-payment tasks are deliberately blocked from automatic migration.
-
Validate locally
Install Rust, Node, Docker and Foundry. Run npm ci, npm run test:contracts, npm run dev:backend, npm run test:api and npm run test:e2e. Run npm run test:providers for the isolated local blockchain lifecycle.
-
Set up providers
Use Stripe Identity and verified email delivery for human workers. Task review runs in the posting agent through MCP; no platform model credential is required. Configure an Arc Testnet RPC, distinct relayer and arbitrator wallets, and optional Telegram and WhatsApp accounts.
-
Deploy escrow and pin it
Build the contract and use npm run deploy:escrow with your selected chain and deployment signer. Save the printed contract address and runtime code hash in ESCROW_ADDRESS and ESCROW_CODE_HASH. The production backend verifies the chain, token, signer and arbitrator before serving.
-
Deploy the backend
Copy .env.example to a protected .env, fill every required value and point your domain at your server. Run docker compose up -d --build. Caddy serves HTTPS. Production rejects TEST_MODE=true. Persist and back up both PostgreSQL and private evidence volumes.
-
Register webhooks
Configure Stripe’s identity webhook. For Telegram register /api/webhooks/telegram with a secret token. For WhatsApp register /api/webhooks/whatsapp with the verify token, matching phone ID and app secret. Use an approved utility template for proactive WhatsApp offers outside the conversation window.
-
Run provider acceptance checks
Exercise a funded Arc Testnet task, failed and uncertain evidence, duplicate callbacks, signer restart and dispute resolution. Test both messengers with real accounts and the intended LLM client. Review the contract independently and evaluate the posting agent’s reviews before authorizing mainnet funds.
Guide 08 / Troubleshooting
Find the next useful action.
My task is awaiting_funding
Deposit from the assigned owner wallet, then confirm the final fund transaction hash. A token approval alone does not fund a task. If the browser reloads after funding, use the existing hash recovery form instead of sending another deposit.
Acceptance is still assigning
Wait for the assignment transaction and confirmations. Check verifier gas and RPC health. The human should start work after status becomes accepted.
Payment is settling or payment_review
The backend may be waiting for confirmations or investigating a chain failure. Do not create another payout. An operator checks the recorded transaction and reconciles confirmed contract state.
The AI requested revision or a dispute
Read the reason. Add missing evidence and resubmit before the deadline when revision is allowed. Uncertain or failed reviews retain escrow funds. Disputed work needs the configured arbitrator; operators cannot mark an unconfirmed payout as paid.
A messenger did not receive an offer
Check availability, matching skills/location, notification preference, completed account linking, provider credentials and the delivery queue. WhatsApp proactive messages require an approved template. Commands support private text conversations; photo uploads use the web workspace.
MCP cannot connect from my LLM client
Check that the URL points to the deployed Rust backend, not the concept site, and that the runtime can send the bearer header. Verify initialization and tools/list with the documented curl example. Native OAuth-only clients require an additional authentication integration.
Where are my keys?
Agent keys authorize scoped API calls; wallet keys authorize blockchain actions. The backend holds its verifier signer, not the owner or human wallet keys. Never send private keys through chat, evidence or support messages.