callable

API for AI agents to delegate tasks to real humans.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
100%
Calidad de los nombres
100%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,036Tokens (definiciones de herramientas)
~3.1 KBTamaño de respuesta típico
Impacto moderado en la atención (0.81% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "callable": {
      "url": "https://getcallable.dev/api/mcp"
    }
  }
}

Puntos de conexión remotos

https://getcallable.dev/api/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (3)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡submit_task(task_type, instructions, deadline_minutes, callback_url, payment_credential)

Submit an account verification task to a real human operator. Use this when your agent is blocked on something only a real person can complete — a KYC check, a platform sign-in or 2FA prompt, a CAPTCHA, an identity confirmation, or any verification step that requires a human. The task is charged automatically via Stripe ($39). A vetted operator claims it, performs the verification on real hardware, and returns the result (with optional screenshot) to your callback_url or via get_task_status. Typical completion: 30 minutes.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "task_type": {
      "type": "string",
      "enum": [
        "account_verification"
      ],
      "description": "account_verification — a real human verifies an account, KYC check, sign-in, or CAPTCHA on real hardware and returns structured proof ($39)."
    },
    "instructions": {
      "type": "object",
      "description": "Structured input for account_verification. Required fields: platform (e.g. 'gmail', 'stripe'), url (where to perform the verification), credentials (login info or how to obtain the code), what_to_verify (what the operator must confirm). Optional: screenshot_required (boolean, default true), additional_notes."
    },
    "deadline_minutes": {
      "type": "integer",
      "minimum": 20,
      "description": "Time in minutes the operator has to complete the verification after claiming it. Minimum 20. Recommended: 30."
    },
    "callback_url": {
      "type": "string",
      "description": "Webhook URL to receive a POST request with the task result when completed. Recommended for async agent workflows. If omitted, poll get_task_status instead."
    },
    "payment_credential": {
      "type": "object",
      "description": "Stripe Link Agent Wallet Single-use Payment Token (SPT) for fully autonomous agent payments with no human intervention required. Omit if the developer account has a saved card on file."
    }
  },
  "required": [
    "task_type",
    "instructions",
    "deadline_minutes"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "Unique identifier for the submitted task"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "in_progress",
        "pending_review",
        "completed",
        "disputed"
      ],
      "description": "Current task status"
    },
    "message": {
      "type": "string",
      "description": "Confirmation or error message"
    },
    "estimated_completion": {
      "type": "string",
      "description": "Estimated completion time based on deadline_minutes"
    }
  },
  "required": [
    "task_id",
    "status"
  ]
}
🟢get_task_status(task_id)

Poll the status and retrieve the result of a previously submitted task. Returns the current status (pending, in_progress, pending_review, completed, disputed), the result payload, and any output URLs (video, screenshot). Use this in a polling loop after submit_task if no callback_url was provided.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "The task ID returned when the task was submitted"
    }
  },
  "required": [
    "task_id"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "in_progress",
        "pending_review",
        "completed",
        "disputed"
      ]
    },
    "result": {
      "type": "object",
      "description": "Task result payload when completed"
    },
    "output_url": {
      "type": "string",
      "description": "URL to download output file (video, screenshot, etc.)"
    },
    "completed_at": {
      "type": "string",
      "description": "ISO timestamp of completion"
    },
    "operator": {
      "type": "string",
      "description": "Name of the operator who completed the task"
    }
  },
  "required": [
    "task_id",
    "status"
  ]
}
🟢review_task(task_id, decision, dispute_reason, what_is_needed)

Optional. Approve or dispute a task that is in `pending_review` status. Use this after get_task_status reports the operator has completed the work. Approving releases the operator payout. Disputing requires a reason and a description of what is needed for acceptance; the operator is then allowed to resubmit. If you never call review_task, tasks are auto-approved after the review window expires.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "The task ID returned by submit_task."
    },
    "decision": {
      "type": "string",
      "enum": [
        "approve",
        "dispute"
      ],
      "description": "approve to accept the result and release payment; dispute to reject it and request a resubmission."
    },
    "dispute_reason": {
      "type": "string",
      "description": "Required when decision = 'dispute'. What went wrong with the submission."
    },
    "what_is_needed": {
      "type": "string",
      "description": "Required when decision = 'dispute'. What the operator must do for the submission to be accepted."
    }
  },
  "required": [
    "task_id",
    "decision"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "status": {
      "type": "string",
      "enum": [
        "completed",
        "disputed"
      ]
    }
  },
  "required": [
    "success",
    "status"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada3 herramientas
verificadoversión no registrada3 herramientas
verificadoversión no registrada3 herramientas