callable
API for AI agents to delegate tasks to real humans.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"callable": {
"url": "https://getcallable.dev/api/mcp"
}
}
}원격 엔드포인트
https://getcallable.dev/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (3)
🟡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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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.
입력 스키마
{
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "The task ID returned when the task was submitted"
}
},
"required": [
"task_id"
]
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"completed",
"disputed"
]
}
},
"required": [
"success",
"status"
]
}커뮤니티
증거