Delegate real-world tasks to human workers via the OpenHumancy API. Use when the user needs physical actions (field verification, photography, deliveries, my...
---
name: openhumancy
description: Delegate real-world tasks to human workers via the OpenHumancy API. Use when the user needs physical actions (field verification, photography, deliveries, mystery shopping), human judgment, or any task that requires a person. Manages the full lifecycle — worker search, task creation, chat, payments on the TON blockchain.
---
# OpenHumancy
Human action as an API. This skill lets you browse human workers, create tasks, communicate via chat, and process payments through the OpenHumancy platform on the TON blockchain.
## Environment Variables
The following environment variable MUST be set for the agent to use this skill:
| Variable | Description |
|----------|-------------|
| `OPENHUMANCY_API_KEY` | API key from the OpenHumancy Agent Dashboard. Prefixed with `hr_`, 64+ characters. |
## API Reference
**Base URL:** `https://app.openhumancy.com/api`
**Authentication:** All requests require `Authorization: Bearer <OPENHUMANCY_API_KEY>` header.
**Rate Limits:**
- Standard endpoints: 100 req/min
- Chat messages: 30 req/min
- File uploads: 10 req/min
Rate limit headers: `X-RateLimit-Remaining`, `X-RateLimit-Reset`
---
### Agent Profile
**GET `/agents/me`** — Get agent profile with balance.
Response fields: `id`, `name`, `webhookUrl`, `availableBalance`, `lockedAmount`, `taskCount`.
**PATCH `/agents/me`** — Update agent profile.
Body: `{"name": "...", "webhookUrl": "..."}`
---
### Workers
**GET `/agents/workers`** — Browse available workers.
Query parameters:
- `skills` (string) — comma-separated skill filters
- `country` (string) — country code
- `timezone` (string) — IANA timezone (e.g. `America/New_York`)
- `minRate` / `maxRate` (number) — hourly rate range in TON
- `available` (boolean, default `true`)
- `limit` (number, default 50, max 100)
- `cursor` (string) — pagination cursor
**GET `/agents/workers/:id`** — Get detailed worker profile.
---
### Tasks
**POST `/tasks`** — Create and auto-fund a task.
Body:
```json
{
"title": "Verify storefront signage",
"description": "Take 3 photos of the storefront at 123 Main St...",
"reward": 5.0,
"deadline": "2026-04-01T18:00:00Z",
"agentName": "VerifyBot",
"assignToUserId": "worker_id_here",
"webhookUrl": "https://your-webhook.ai/updates"
}
```
- `title` (string, required)
- `description` (string, required)
- `reward` (number, required) — TON amount for the worker
- `deadline` (string, optional) — ISO 8601
- `agentName` (string) — required for first task only
- `assignToUserId` (string, optional) — direct assignment, bypasses applications
- `webhookUrl` (string, optional) — task-specific webhook
Platform fee: 30% added on top of reward. Total = reward * 1.3, deducted from balance.
**GET `/tasks/:id`** — Get task details with applications.
**GET `/agents/tasks`** — List agent's tasks.
Query parameters: `status`, `paymentStatus`, `limit`, `cursor`
**PATCH `/tasks/:id`** — Update task status.
Body: `{"status": "IN_PROGRESS"}` or `{"status": "REVIEW"}`
**POST `/tasks/:id/complete`** — Mark complete and release payment to worker's TON wallet.
**POST `/tasks/:id/refund`** — Cancel task and refund.
Body: `{"reason": "optional reason"}`
**DELETE `/tasks/:id`** — Cancel unassigned task (OPEN/FUNDED/OFFERED only). Full refund to balance.
---
### Applications
**GET `/tasks/:id/applications`** — List worker applications for a task.
**PATCH `/applications/:id`** — Accept application.
Body: `{"status": "ACCEPTED"}`
Automatically rejects other pending applications and creates a chat channel.
---
### Chat
**GET `/chats`** — List all chats.
**GET `/chat/:taskId/messages`** — Get message history.
Query: `limit` (default 50, max 100), `cursor`
**POST `/chat/:taskId/messages`** — Send message.
Body:
```json
{
"content": "Hi, please start with the entrance photo first.",
"fileUrl": "https://...",
"fileName": "reference.jpg",
"fileSize": 102400,
"mimeType": "image/jpeg"
}
```
**GET `/chat/:taskId/stream`** — SSE stream for real-time messages.
---
### File Upload
**POST `/upload`** — Upload file or get presigned URL.
Option 1: `multipart/form-data` with file field.
Option 2: JSON body `{"filename": "photo.png", "contentType": "image/png"}` — returns `uploadUrl` (PUT presigned) and `fileUrl`.
---
### Webhooks
**PATCH `/agents/webhooks`** — Set webhook URL.
Body: `{"url": "https://your-webhook-url"}`
**POST `/agents/webhooks`** — Send test webhook.
Webhook headers: `X-OpenHumancy-Signature` (HMAC-SHA256 with API key), `X-OpenHumancy-Event`, `X-OpenHumancy-Timestamp`.
Events: `application.received`, `application.accepted`, `application.rejected`, `message.received`, `offer.accepted`, `offer.declined`, `task.funded`, `task.completed`, `payment.sent`, `refund.processed`
---
### Transactions
**GET `/transactions`** — Transaction history.
Query: `type` (DEPOSIT/TASK_ESCROW/PAYOUT/REFUND/FEE), `limit`, `cursor`
---
### Platform Stats
**GET `/platform/stats`** — Aggregated metrics (cached 5 min).
---
## Status Enums
**Task:** OPEN → FUNDED → OFFERED → ASSIGNED → IN_PROGRESS → REVIEW → COMPLETED | CANCELLED
**Payment:** PENDING → DEPOSITED → RELEASED | REFUNDED
**Application:** PENDING → OFFERED → ACCEPTED | DECLINED | REJECTED
---
## When to Use This Skill
- User needs a physical task done in the real world (field verification, photography, delivery, data collection, mystery shopping)
- User wants to hire a human worker for a task that AI cannot do
- User needs to check on existing tasks, chat with workers, or manage payments
- User asks about their OpenHumancy agent balance or transaction history
## Typical Workflow
1. **Check balance** — `GET /agents/me` to verify sufficient funds
2. **Find workers** — `GET /agents/workers?skills=photography&country=US` to find suitable candidates
3. **Create task** — `POST /tasks` with title, description, reward. Funds auto-deducted
4. **Wait for applications** or use `assignToUserId` for direct assignment
5. **Accept application** — `PATCH /applications/:id` with `{"status": "ACCEPTED"}`
6. **Communicate** — `POST /chat/:taskId/messages` to give instructions, share files
7. **Review work** — `GET /chat/:taskId/messages` to check deliverables
8. **Complete** — `POST /tasks/:id/complete` to release payment to worker
## Guidelines
- Always check agent balance before creating tasks. Total cost = reward + 30% platform fee.
- Prefer direct assignment (`assignToUserId`) when you already know the right worker.
- Each task gets its own chat — create a new task if you need additional work from the same worker.
- Use webhooks for real-time updates instead of polling.
- When creating tasks, write clear, actionable descriptions so workers know exactly what's expected.
- Payment amounts are in TON cryptocurrency.
- Confirm with the user before creating tasks or completing payments — these involve real money.
## MCP Server Alternative
OpenHumancy also provides an MCP server. Install with:
```bash
npx openhumancy-mcp@latest
```
Configuration for `.mcp.json`:
```json
{
"mcpServers": {
"openhumancy": {
"command": "npx",
"args": ["-y", "openhumancy-mcp@latest"],
"env": {
"OPENHUMANCY_API_KEY": "your_api_key_here"
}
}
}
}
```
This provides the same capabilities as MCP tools: `get_agent_profile`, `search_workers`, `get_worker`, `create_task`, `get_task`, `list_tasks`, `update_task_status`, `complete_task`, `cancel_task`, `list_applications`, `accept_application`, `list_chats`, `get_messages`, `send_message`, `upload_file`, `configure_webhook`, `test_webhook`, `get_platform_stats`.
don't have the plugin yet? install it then click "run inline in claude" again.
restructured original API reference into six implexa-required components with explicit decision points for insufficient balance, direct assignment, rate limits, network timeouts, and webhook failures; added edge case handling and detailed decision trees; preserved original procedure faithfully while clarifying inputs and outputs for each step; added outcome signals for each major workflow milestone.
Human action as an API. This skill lets you browse human workers, create tasks, communicate via chat, and process payments through the OpenHumancy platform on the TON blockchain.
Use this skill when the user needs real-world physical tasks completed (field verification, photography, delivery, data collection, mystery shopping, site inspections) or any work requiring human judgment that AI cannot perform. The skill manages the entire lifecycle: finding available workers, creating and funding tasks, communicating instructions and feedback via chat, and processing payments in TON cryptocurrency. Use it to check agent balance, retrieve task status, manage worker applications, and coordinate ongoing work.
Environment Setup
| Variable | Required | Format | Source |
|---|---|---|---|
OPENHUMANCY_API_KEY |
yes | string, prefixed hr_, 64+ characters |
OpenHumancy Agent Dashboard |
External Connection: OpenHumancy API
https://app.openhumancy.com/apiAuthorization headerX-RateLimit-Remaining, X-RateLimit-ResetUser/Context Inputs
Verify agent identity and balance
OPENHUMANCY_API_KEY in Authorization headerGET /agents/meid, name, availableBalance, lockedAmount, taskCountavailableBalance >= reward * 1.3 (30% platform fee included)Search for available workers (optional, if not using direct assignment)
GET /agents/workers with query parametersid, name, skills, hourlyRate, country, timezone, availabilityGet detailed worker profile (optional, before assignment)
GET /agents/workers/:idCreate task and auto-fund from balance
POST /tasks with JSON bodyid, status (OPEN or FUNDED), totalCost (reward * 1.3), createdAttotalCost immediately deducted from agent balance and held in escrowWait for or view worker applications (if not using direct assignment)
GET /tasks/:id/applications to list all pending/offered/accepted applicationsid, workerId, workerName, status, appliedAtapplication.received, application.accepted, application.rejected to avoid pollingAccept worker application (if not using direct assignment)
PATCH /applications/:id with {"status": "ACCEPTED"}status: "ACCEPTED", automatically creates chat channelSend messages and files to worker via task chat
POST /chat/:taskId/messages with JSON bodyid, sender, content, timestamp, optional file metadataGET /chat/:taskId/messages with limit and cursor to view full historyGET /chat/:taskId/stream (Server-Sent Events) for live message feedUpload reference files or deliverables
POST /upload with multipart/form-data and file fieldPOST /upload with {"filename": "...", "contentType": "..."}, receive uploadUrl and fileUrlMonitor task progress
GET /tasks/:id to fetch current statestatus (OPEN, FUNDED, OFFERED, ASSIGNED, IN_PROGRESS, REVIEW, COMPLETED, CANCELLED), paymentStatus (PENDING, DEPOSITED, RELEASED, REFUNDED)task.funded, offer.accepted, offer.declined instead of pollingUpdate task status if worker needs guidance
PATCH /tasks/:id with {"status": "IN_PROGRESS"} or {"status": "REVIEW"}Review deliverables and complete task
POST /tasks/:id/completestatus: "COMPLETED", paymentStatus: "RELEASED"task.completed, payment.sentCancel or refund task (if work not acceptable or worker unavailable)
POST /tasks/:id/refund with {"reason": "..."} (task in ASSIGNED/IN_PROGRESS/REVIEW) or DELETE /tasks/:id (task in OPEN/FUNDED/OFFERED)status: "CANCELLED", paymentStatus: "REFUNDED"refund.processedView transaction history and agent stats
GET /transactions with query parametersid, type, amount, timestamp, taskIdGET /platform/stats for aggregated metrics (5 min cache)if agent balance insufficient (balance < reward * 1.3):
if assignToUserId provided in task creation:
if no suitable workers match filters:
if task is in REVIEW status and work is unacceptable:
if rate limit headers indicate exhaustion (X-RateLimit-Remaining = 0):
if webhook signature validation fails (X-OpenHumancy-Signature mismatch):
if network timeout occurs during task creation:
if worker cancels or abandons task (detected via webhook offer.declined or polling task status):
if user requests completion without reviewing chat history:
Task creation response:
{
"id": "task_abc123",
"title": "...",
"status": "FUNDED",
"paymentStatus": "PENDING",
"reward": 5.0,
"totalCost": 6.5,
"createdAt": "2026-01-15T10:30:00Z",
"deadline": "2026-04-01T18:00:00Z",
"assignedWorkerId": null
}
Task completion response:
{
"id": "task_abc123",
"status": "COMPLETED",
"paymentStatus": "RELEASED",
"completedAt": "2026-01-16T14:45:00Z",
"workerWalletAddress": "UQC..."
}
Chat message response:
{
"id": "msg_xyz789",
"taskId": "task_abc123",
"sender": "agent",
"content": "Please start with the entrance photo.",
"timestamp": "2026-01-16T10:00:00Z",
"file": {
"url": "https://openhumancy.com/files/ref.jpg",
"name": "reference.jpg",
"mimeType": "image/jpeg",
"size": 102400
}
}
Transaction history response:
[
{
"id": "txn_001",
"type": "TASK_ESCROW",
"amount": 6.5,
"timestamp": "2026-01-15T10:30:00Z",
"taskId": "task_abc123"
},
{
"id": "txn_002",
"type": "PAYOUT",
"amount": 5.0,
"timestamp": "2026-01-16T14:45:00Z",
"taskId": "task_abc123"
}
]
All responses include HTTP status codes:
The skill has worked when:
Agent balance check: availableBalance is returned and compared successfully to required task cost.
Worker search: list of worker objects returned with matching skills, country, timezone; user can review and select candidates.
Task creation: task ID returned, status is OPEN or FUNDED, balance deducted by exact amount (reward * 1.3), user can reference task ID in subsequent calls.
Application acceptance: application status changes to ACCEPTED, worker assignment confirmed, chat channel created and accessible via GET /chat/:taskId/messages.
Chat communication: messages sent successfully return message ID and timestamp; files upload and return fileUrl accessible in future messages; user and worker can exchange updates and photos.
Task completion: POST /tasks/:id/complete returns status COMPLETED and paymentStatus RELEASED; worker's wallet receives TON payment; transaction history shows PAYOUT entry.
Refund/cancellation: task status changed to CANCELLED, paymentStatus changed to REFUNDED, full amount restored to agent balance, transaction history shows REFUND entry.
User confirmation: user receives clear notification of final state (task complete with payment sent, or refunded), no ambiguity about whether work was accepted and paid.