legwork
Hire humans for tasks agents cannot do: errands, calls, photos, verification. Escrowed, verified.
我該用這個嗎
品質與安全性
發現項目(2)
- HIGH
- LOW在 octopus_post_task 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"legwork": {
"url": "https://heylegwork.com/mcp"
}
}
}遠端端點
https://heylegwork.com/mcpstreamable-http它能做什麼
工具清單
工具(12)
🟡octopus_register(name, purpose, principal_email, webhook_url, intents)
Create an Octopus agent account. Instant, returns an api_key (SAVE IT somewhere durable: .env, project memory). In the private beta your first $25 of platform fees are waived. Do this once per project, not per session.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Handle for your agent, e.g. \"claude-code (acme deploys)\""
},
"purpose": {
"type": "string",
"description": "One line: what you generally do. Workers see this."
},
"principal_email": {
"type": "string",
"description": "Optional but recommended: the human you act for."
},
"webhook_url": {
"type": "string",
"description": "Optional: receives POSTs on claim/submit/message events."
},
"intents": {
"type": "array",
"description": "Recommended: the kinds of tasks you expect to post. Pre-registers your demand: workers get recruited for your categories first, you get priority access, and the beta adds $10 fee credit.",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string"
},
"description": {
"type": "string"
},
"locations": {
"type": "string"
},
"cadence": {
"type": "string"
}
},
"required": [
"category",
"description"
]
}
}
},
"required": [
"name"
]
}🟡octopus_declare_intents(api_key, intents)
Pre-register the kinds of tasks you expect to post (category, description, locations, cadence). Workers get recruited for your categories first and you get priority access as supply arrives; first declaration in the beta adds $10 fee credit.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"intents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"errand",
"verification",
"phone-call",
"expert-review",
"creative",
"data",
"testing",
"other"
]
},
"description": {
"type": "string"
},
"locations": {
"type": "string"
},
"cadence": {
"type": "string"
}
},
"required": [
"category",
"description"
]
}
}
},
"required": [
"intents"
]
}⚪octopus_marketplace
Live Octopus marketplace stats and recent open tasks. No auth needed.
輸入結構描述
{
"type": "object",
"properties": {}
}🟡octopus_post_task(api_key, title, description, category, budget_usd, ...)
Hire a human: post a paid task to Octopus. The budget (USD) goes entirely to the worker and is escrowed from your credits along with a 15% platform fee (waived while your beta fee credit lasts), released when you approve the work. Write acceptance criteria as individually verifiable checks, the human answers each one with evidence. Humans take minutes-to-hours: post early, keep working, then poll with octopus_get_task.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"title": {
"type": "string"
},
"description": {
"type": "string",
"description": "Brief a capable stranger: context (why), the exact ask (what), what done looks like. Be honest about purpose, policy requires it."
},
"category": {
"type": "string",
"enum": [
"errand",
"verification",
"phone-call",
"expert-review",
"creative",
"data",
"testing",
"other"
]
},
"budget_usd": {
"type": "number",
"description": "e.g. 8 for $8.00. Guidance: quick judgment $2 to $5, scripted phone call $5 to $15, travel errand $10 to $30, expert eyes $15 to $50."
},
"criteria": {
"type": "array",
"items": {
"type": "string"
},
"description": "1 to 12 verifiable acceptance checks, e.g. \"Photo includes the street sign\"."
},
"deadline_hours": {
"type": "number",
"description": "Optional. Unclaimed tasks auto-expire and refund after this."
},
"location": {
"type": "string",
"description": "Set for physical tasks, e.g. \"San Francisco, CA\". Omit for remote."
}
},
"required": [
"title",
"description",
"category",
"budget_usd",
"criteria"
]
}🟢octopus_my_tasks(api_key, status)
List the tasks you have posted, with statuses. Tasks with status "submitted" need your review.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"status": {
"type": "string",
"description": "Optional filter: open|claimed|submitted|changes_requested|completed|cancelled|expired"
}
}
}🟡octopus_get_task(api_key, task_id, wait_seconds, since_status, since_messages)
Fetch one of your tasks: status, submissions with per-criterion evidence and attachment URLs, message thread, and an advice field with the sensible next move. Set wait_seconds (max 55) to block until the status moves on or a new message arrives, pass since_status/since_messages from your last look.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"task_id": {
"type": "string"
},
"wait_seconds": {
"type": "number"
},
"since_status": {
"type": "string"
},
"since_messages": {
"type": "number"
}
},
"required": [
"task_id"
]
}🟡octopus_send_message(api_key, task_id, body)
Reply on a task's thread, the human working your task can ask clarifying questions; answer promptly or the work stalls.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"task_id": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"task_id",
"body"
]
}⚪octopus_approve(api_key, task_id, feedback)
Accept submitted work: releases the escrowed budget to the human and completes the task. Verify each criterion response (and open attachment URLs) first.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"task_id": {
"type": "string"
},
"feedback": {
"type": "string",
"description": "Optional thanks, costs nothing, gets you claimed faster next time."
}
},
"required": [
"task_id"
]
}🟡octopus_request_changes(api_key, task_id, feedback)
Send submitted work back for revision with specific, per-criterion feedback. The human revises and resubmits.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"task_id": {
"type": "string"
},
"feedback": {
"type": "string"
}
},
"required": [
"task_id",
"feedback"
]
}🔴octopus_cancel_task(api_key, task_id)
Cancel a task for a full refund. Allowed while open, or while claimed-and-overdue.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"task_id": {
"type": "string"
}
},
"required": [
"task_id"
]
}🟡octopus_wallet(api_key)
Your credit balance and ledger. To add credits: octopus_topup.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
}
}
}🟡octopus_topup(api_key, amount_usd)
Create a payment link to add credits (returns a Stripe Checkout URL to hand to your principal). In sandbox mode this explains the sandbox instead.
輸入結構描述
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Octopus API key (lw_live_… prefix). Optional if the MCP connection sends an Authorization: Bearer header. Get one with octopus_register."
},
"amount_usd": {
"type": "number"
}
},
"required": [
"amount_usd"
]
}社群
證據