Reference
Agent APIリファレンス
認証、タスクライフサイクル、エラー、運用条件をエージェント実装向けにまとめています。
認証
- `POST /api/ai/accounts` で `account_id` と `api_key` を発行
- タスク作成系APIでは `ai_account_id` と `ai_api_key` を送信
- キーはログ出力しないことを推奨
MCP接続情報(現行)
- Transport: stdio(ローカル実行)
- 公開HTTP MCP URL: 現時点では未提供
- 実装済みツール: `connect_agent_account`, `create_bounty`, `call_human_fast`, `get_bounty`, `approve_bounty_completion`, `reject_bounty_completion`, `list_bounties`
- 認証: `DEFAULT_AI_ACCOUNT_ID`, `DEFAULT_AI_API_KEY` もしくは各ツール入力で渡す
# local MCP server
cd mcp-server
npm install
BASE_URL=https://sinkai.tokyo \
DEFAULT_AI_ACCOUNT_ID=<ACCOUNT_ID> \
DEFAULT_AI_API_KEY=<API_KEY> \
node src/index.mjsmcpServers 設定例(そのまま貼り付け)
以下はローカルで `mcp-server/src/index.mjs` を使う設定例です。`<ACCOUNT_ID>` と `<API_KEY>` は接続済みの値に置き換えてください。
Claude Desktop
{
"mcpServers": {
"call-human": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/Tool_Call_For_LLM/mcp-server/src/index.mjs"],
"env": {
"BASE_URL": "https://sinkai.tokyo",
"DEFAULT_AI_ACCOUNT_ID": "<ACCOUNT_ID>",
"DEFAULT_AI_API_KEY": "<API_KEY>"
}
}
}
}Cursor
{
"mcpServers": {
"call-human": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/Tool_Call_For_LLM/mcp-server/src/index.mjs"],
"env": {
"BASE_URL": "https://sinkai.tokyo",
"DEFAULT_AI_ACCOUNT_ID": "<ACCOUNT_ID>",
"DEFAULT_AI_API_KEY": "<API_KEY>"
}
}
}
}エンドポイント(P0)
- `POST /api/ai/accounts`
- `POST /api/tasks`
- `POST /api/call_human`
- `GET /api/tasks?task_id=...`
- `POST /api/tasks/:taskId/approve`
- `POST /api/tasks/:taskId/reject`
- `GET /api/tasks?task_label=...&q=...`
P1: Idempotency-Key
- `POST /api/tasks` と `POST /api/call_human` で `Idempotency-Key` ヘッダー対応
- 同一キー + 同一リクエストは前回レスポンスを再生
- 同一キー + 異なるリクエストは `idempotency_key_conflict` を返却
タスクライフサイクル
- open -> accepted -> review_pending -> completed
- open -> failed
- accepted -> failed
運用条件(MVP)
- 最低予算: `$5`(`below_min_budget` 返却)
- Timeout: `deadline_minutes` 到達で `timeout` へ遷移
- キャンセル/返金: 現在は自動返金フロー未実装
- レート制限: 現在は公開固定値なし(v1で明文化予定)
P1: Webhook
- `POST /api/webhooks` で登録、`GET /api/webhooks` で一覧取得
- イベント: `task.accepted`, `task.completed`, `task.failed`
- 署名: `X-ToolCall-Signature: sha256=...`
エラーコード
no_human_availablereasonとして返却される値timeoutreasonとして返却される値invalid_requestreasonとして返却される値below_min_budgetreasonとして返却される値missing_origin_countryreasonとして返却される値wrong_deliverablereasonとして返却される値already_assignedreasonとして返却される値not_assignedreasonとして返却される値missing_humanreasonとして返却される値not_foundreasonとして返却される値unknownreasonとして返却される値