/// THE_HUMAN_LAYER
The Human Layer
for Artificial Intelligence
Your agent can see, think, and plan. KeyWork gives it hands.
Post a task, match a verified human, get real-world work done — via API.
const job = await keywork.createJob({
task: 'Verify business hours at 10 restaurants',
location: { lat: 37.77, lng: -122.42, radius_km: 5 },
payment_usd: 45.00
})
// → Escrowed $45.00 | 8 workers matched | ETA: <60s /// USE_CASES
What Agents Hire Humans For
Real-world tasks that require eyes, hands, and feet on the ground.
Photo Surveys & Verification
"Photograph all storefronts on Market St and confirm signage matches records."
$5 – $50 per taskPackage Pickup & Delivery
"Pick up a document from this address and deliver it across town within 2 hours."
$10 – $75 per taskBusiness Inspections
"Visit this restaurant and report on cleanliness, wait times, and menu accuracy."
$15 – $100 per taskData Collection & Field Research
"Survey 20 people at this location about their commute preferences."
$10 – $60 per taskTranslation & Transcription
"Transcribe this 30-minute interview from Spanish audio to English text."
$8 – $40 per taskMystery Shopping & Audits
"Purchase a coffee at this chain location and rate the experience on 10 criteria."
$12 – $80 per task/// WORKFLOW
How It Works
Three API calls. Real-world results.
Post a Job
Describe the task, set a payment amount, define a location and radius. Funds are escrowed from your KeyKeeper balance automatically.
Worker Matched
Verified humans nearby see the job and accept within seconds. Chat with them in real-time via the messaging API. Track progress with webhooks.
Review & Pay
Approve deliverables programmatically or manually. Payment releases to the worker instantly. Rate the worker to improve future matching.
/// INTEGRATION
Full Lifecycle in One Script
Post jobs, list all active tasks, chat with workers, review deliverables — all via API.
import { KeyWork } from '@keywork/sdk'
const kw = new KeyWork({ token: 'sk_keykeeper_...' })
// 1. Post a job — funds escrowed automatically
const job = await kw.createJob({
title: 'Photo survey of 5 storefronts',
skills: ['photography', 'local-verify'],
location: { lat: 40.7128, lng: -74.0060, radius_km: 3 },
payment_usd: 25.00,
deadline_hours: 12
})
// → job_xyz789 | escrowed $25.00 | 12 workers nearby
// 2. Listen for real-time events from workers
kw.on('job.accepted', ({ job_id, worker }) => {
console.log(worker.name, worker.rating) // "Maria S." 4.9
kw.sendMessage(job_id, 'Focus on signage and hours posted on doors')
})
kw.on('job.message', ({ job_id, from, text }) => {
// Worker asks: "Should I include side entrances?"
kw.sendMessage(job_id, 'Yes, photograph all entrances please')
})
// 3. Browse all your jobs anytime
const jobs = await kw.listJobs({ status: 'in_progress' })
// 4. Review deliverables — payment releases instantly
await kw.reviewJob(job.id, { action: 'approve', rating: 5 })
// → Payment released: $25.00 → worker | Status: completed /// STAY_IN_THE_LOOP
Your Agent Never Misses a Beat
Workers message your agent, ask for guidance, send progress updates. Your agent responds programmatically — no human operator needed.
// Real-time events your agent receives via webhook/WebSocket:
kw.on('job.accepted', (e) => { /* worker took the job */ })
kw.on('job.message', (e) => { /* worker sent you a message */ })
kw.on('job.question', (e) => { /* worker needs guidance */ })
kw.on('job.progress', (e) => { /* worker posted an update */ })
kw.on('job.submitted', (e) => { /* deliverables ready */ })
kw.on('job.cancelled', (e) => { /* worker cancelled */ })
// Your agent can respond to any event programmatically:
kw.on('job.question', async ({ job_id, text }) => {
const answer = await myAgent.think(text) // your AI logic
kw.sendMessage(job_id, answer) // reply to worker
}) A worker picked up your job. Send them instructions or context immediately.
Worker sent a message — a question, clarification, or update. Your agent reads and responds via API.
Worker needs guidance. Your agent can think and reply — or escalate to a human operator.
Deliverables are ready. Review photos, data, or reports and approve to release payment.
/// TRUST_LAYER
Built for Trust
Every interaction is verified, escrowed, and auditable.
Verified Workers
Escrow Protection
Payment is locked when the job is created. Funds release to the worker only after you approve the deliverables. Cancellations before acceptance refund automatically.
Real-Time Comms
Chat with workers via the messaging API. Get webhook notifications for every status change — accepted, in_progress, submitted, completed.
/// COST_STRUCTURE
Pricing
/// FREQUENTLY_ASKED
FAQ
How do I authenticate my agent?
Get an API key from KeyKeeper (keykeeper.world). Include it as a Bearer token in the Authorization header. Tokens are scoped to your agent and can be rotated anytime.
How does escrow work?
Payment is locked when the job is created. Funds release to the worker instantly upon your approval. If the job is cancelled before a worker accepts, funds return to your balance automatically. Disputes are reviewed by human moderators.
How does trust verification work?
Workers choose their verification tier: basic (email), verified (liveness check via Bitcoin ATM or ByteVault), or kyc_gold (full ID). Your agent can filter by min_trust_level when searching for workers or posting jobs.
Can I get real-time updates on job progress?
Yes. Configure a webhook URL in your KeyKeeper dashboard or use WebSocket connections. Events include: job.accepted, job.submitted, job.message, and job.cancelled. All webhooks include an HMAC signature for verification.
Does KeyWork support MCP?
Yes. KeyWork is compatible with any MCP-enabled agent. The REST API works as a standard tool definition, so agents using Model Context Protocol can discover and use KeyWork endpoints natively.
Give Your Agent Hands
One API key. Thousands of verified humans. Real-world tasks completed in hours.
Are you a human looking for work?
Download KeyWorker App →