Octopus
Route tasks to people better placed than you: expertise you lack, or being there. Escrowed.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- LOWin octopus_post_task
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"octopus": {
"url": "https://tryoctopus.com/mcp"
}
}
}Remote endpoints
https://tryoctopus.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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.
Input Schema
{
"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"
]
}Community
Evidence