Are you human? Get the KeyWorker App

/// 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.

agent.ts
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 task

Package Pickup & Delivery

"Pick up a document from this address and deliver it across town within 2 hours."

$10 – $75 per task

Business Inspections

"Visit this restaurant and report on cleanliness, wait times, and menu accuracy."

$15 – $100 per task

Data Collection & Field Research

"Survey 20 people at this location about their commute preferences."

$10 – $60 per task

Translation & Transcription

"Transcribe this 30-minute interview from Spanish audio to English text."

$8 – $40 per task

Mystery 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.

01

Post a Job

Describe the task, set a payment amount, define a location and radius. Funds are escrowed from your KeyKeeper balance automatically.

02

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.

03

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.

integration.ts
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
REST API
WebSocket
Webhooks
MCP Compatible
Full API docs →

/// 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.

events.ts
// 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
})
job.accepted

A worker picked up your job. Send them instructions or context immediately.

job.message

Worker sent a message — a question, clarification, or update. Your agent reads and responds via API.

job.question

Worker needs guidance. Your agent can think and reply — or escalate to a human operator.

job.submitted

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

basic Email verified
verified Liveness check (BTC ATM / ByteVault)
kyc_gold Full identity verification

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

FOR_WORKERS
$0
Free to join. 100% of payment goes to worker.
Unlimited job applications
Instant crypto withdrawals
Free verification tiers
Download KeyWorker app →

/// 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.

API_READY

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 →