@humanops/mcp-server 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -0
- package/dist/index.js +1 -1
- package/package.json +3 -3
package/README.md
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# @humanops/mcp-server
|
|
2
|
+
|
|
3
|
+
MCP server for AI agents to dispatch real-world tasks to verified human operators.
|
|
4
|
+
|
|
5
|
+
HumanOps bridges the gap between AI capabilities and physical-world actions. When your agent needs something done in the real world — verifying a business address, filling out a form, solving a CAPTCHA, procuring an API key — it dispatches a task to a verified human operator through this MCP server.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"mcpServers": {
|
|
12
|
+
"humanops": {
|
|
13
|
+
"command": "npx",
|
|
14
|
+
"args": ["@humanops/mcp-server"],
|
|
15
|
+
"env": {
|
|
16
|
+
"HUMANOPS_API_KEY": "your-api-key"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Environment Variables
|
|
24
|
+
|
|
25
|
+
| Variable | Required | Description |
|
|
26
|
+
|----------|----------|-------------|
|
|
27
|
+
| `HUMANOPS_API_KEY` | Yes | Your HumanOps API key |
|
|
28
|
+
| `HUMANOPS_API_URL` | No | API base URL (default: `https://api.humanops.io`) |
|
|
29
|
+
| `HUMANOPS_SANDBOX` | No | Set to `true` for sandbox mode |
|
|
30
|
+
|
|
31
|
+
## Available Tools
|
|
32
|
+
|
|
33
|
+
### Physical Tasks
|
|
34
|
+
|
|
35
|
+
| Tool | Description |
|
|
36
|
+
|------|-------------|
|
|
37
|
+
| `search_operators` | Find available operators near a location |
|
|
38
|
+
| `post_task` | Create a physical task (verification, photo, delivery, inspection) |
|
|
39
|
+
|
|
40
|
+
### Digital Tasks (Tier 1)
|
|
41
|
+
|
|
42
|
+
| Tool | Description |
|
|
43
|
+
|------|-------------|
|
|
44
|
+
| `dispatch_digital_task` | Create a remote digital task |
|
|
45
|
+
| `list_digital_categories` | List available categories with pricing |
|
|
46
|
+
|
|
47
|
+
Categories: `CAPTCHA_SOLVING`, `FORM_FILLING`, `BROWSER_INTERACTION`, `CONTENT_REVIEW`, `DATA_VALIDATION`
|
|
48
|
+
|
|
49
|
+
### Credential Tasks (Tier 2, E2EE)
|
|
50
|
+
|
|
51
|
+
| Tool | Description |
|
|
52
|
+
|------|-------------|
|
|
53
|
+
| `dispatch_credential_task` | Create an encrypted credential delivery task |
|
|
54
|
+
| `retrieve_credential` | Decrypt and retrieve delivered credentials |
|
|
55
|
+
|
|
56
|
+
Categories: `ACCOUNT_CREATION`, `API_KEY_PROCUREMENT`, `PHONE_VERIFICATION`, `SUBSCRIPTION_SETUP`
|
|
57
|
+
|
|
58
|
+
Credential tasks use end-to-end encryption (P-256 ECDH + AES-256-GCM). The server never sees plaintext credentials.
|
|
59
|
+
|
|
60
|
+
### Task Management
|
|
61
|
+
|
|
62
|
+
| Tool | Description |
|
|
63
|
+
|------|-------------|
|
|
64
|
+
| `get_task_result` | Get task status, proof, and verification result |
|
|
65
|
+
| `check_verification_status` | Check AI Guardian verification status |
|
|
66
|
+
| `cancel_task` | Cancel a pending/accepted task (refunds escrowed funds) |
|
|
67
|
+
| `list_tasks` | List your tasks with optional status filter |
|
|
68
|
+
|
|
69
|
+
### Payments (USDC)
|
|
70
|
+
|
|
71
|
+
| Tool | Description |
|
|
72
|
+
|------|-------------|
|
|
73
|
+
| `get_deposit_address` | Get your USDC deposit address |
|
|
74
|
+
| `fund_account` | Verify a USDC deposit (Base, Polygon, Ethereum, Arbitrum) |
|
|
75
|
+
| `get_balance` | Check deposit and escrow balances |
|
|
76
|
+
| `request_payout` | Request operator payout |
|
|
77
|
+
|
|
78
|
+
## Example Usage
|
|
79
|
+
|
|
80
|
+
### Dispatch a physical verification task
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
post_task({
|
|
84
|
+
title: "Verify business is open",
|
|
85
|
+
description: "Visit 123 Main St and confirm the restaurant is operating",
|
|
86
|
+
location: { lat: 40.7128, lng: -74.0060, address: "123 Main St, New York, NY" },
|
|
87
|
+
reward_usd: 15,
|
|
88
|
+
deadline: "2026-02-08T18:00:00Z",
|
|
89
|
+
proof_requirements: ["photo of storefront", "photo of business hours sign"],
|
|
90
|
+
task_type: "VERIFICATION"
|
|
91
|
+
})
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Dispatch a digital task
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
dispatch_digital_task({
|
|
98
|
+
title: "Fill out vendor registration form",
|
|
99
|
+
description: "Complete the vendor registration at example.com/register",
|
|
100
|
+
digital_category: "FORM_FILLING",
|
|
101
|
+
reward_usd: 12,
|
|
102
|
+
deadline: "2026-02-08T12:00:00Z",
|
|
103
|
+
proof_requirements: ["screenshot of confirmation page"],
|
|
104
|
+
digital_instructions: "1. Go to example.com/register\n2. Fill in company details\n3. Submit and screenshot confirmation"
|
|
105
|
+
})
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Dispatch a credential task (E2EE)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
dispatch_credential_task({
|
|
112
|
+
title: "Create API account on DataService",
|
|
113
|
+
description: "Sign up for a free account and retrieve the API key",
|
|
114
|
+
digital_category: "API_KEY_PROCUREMENT",
|
|
115
|
+
reward_usd: 20,
|
|
116
|
+
deadline: "2026-02-08T12:00:00Z",
|
|
117
|
+
proof_requirements: ["screenshot of account dashboard"],
|
|
118
|
+
digital_instructions: "1. Go to dataservice.io/signup\n2. Create account\n3. Navigate to API keys\n4. Generate and submit the key"
|
|
119
|
+
})
|
|
120
|
+
// Returns { task_id, private_key } — save the private_key!
|
|
121
|
+
|
|
122
|
+
// Later, retrieve the credential:
|
|
123
|
+
retrieve_credential({ task_id: "...", private_key: "..." })
|
|
124
|
+
// Returns { credential: "sk-abc123..." }
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Task Lifecycle
|
|
128
|
+
|
|
129
|
+
1. **PENDING** — Task created, funds escrowed
|
|
130
|
+
2. **ACCEPTED** — Operator picked up the task
|
|
131
|
+
3. **SUBMITTED** — Operator submitted proof
|
|
132
|
+
4. **VERIFIED** / **REJECTED** — AI Guardian reviewed the proof
|
|
133
|
+
5. **COMPLETED** — Task finished, operator paid
|
|
134
|
+
|
|
135
|
+
## Security
|
|
136
|
+
|
|
137
|
+
- All inputs validated with Zod schemas
|
|
138
|
+
- SSRF protection on callback URLs
|
|
139
|
+
- API key sent only to `*.humanops.io` (configurable)
|
|
140
|
+
- Redirects blocked to prevent key exfiltration
|
|
141
|
+
- Credential tasks use client-side E2EE (server never sees plaintext)
|
|
142
|
+
- Single-read credential retrieval (cleared after first read)
|
|
143
|
+
|
|
144
|
+
## License
|
|
145
|
+
|
|
146
|
+
MIT
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@humanops/mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"mcpName": "io.github.thepianistdirector/humanops",
|
|
5
5
|
"description": "MCP server for AI agents to dispatch real-world tasks to verified human operators via HumanOps",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
8
8
|
"bin": {
|
|
9
|
-
"humanops-
|
|
9
|
+
"@humanops/mcp-server": "dist/index.js"
|
|
10
10
|
},
|
|
11
|
-
"files": ["dist/*.js", "dist/*.d.ts"],
|
|
11
|
+
"files": ["dist/*.js", "dist/*.d.ts", "README.md"],
|
|
12
12
|
"scripts": {
|
|
13
13
|
"start": "node dist/index.js",
|
|
14
14
|
"dev": "tsx watch src/index.ts",
|