# MCPツール

> BotdoorのすべてのMCPツールとパラメーター：list_accounts、create_post、upload_media、get_post、approve_postなど。

Source: https://docs.botdoor.co/ja/mcp/tools/

ツールは14個です（キーなしの場合にのみ提供される`signup`を含めると15個）。

| ツール | 機能 | パラメーター |
|---|---|---|
| `list_accounts` | 連携済みアカウントを`id`、`platform`、`username`、`avatarUrl`付きで一覧表示します。`id`は`accountIds`に使います。 | なし |
| `get_connect_url` | 人間のユーザーがアカウントを連携・再連携するためのブラウザ用URLを返します。 | `platform`（必須）、`reconnectAccountId`（zernioAccountId） |
| `new_claim_link` | 新しい受け取りリンクをメールで送ります（未受け取りのワークスペースのみ）。 | なし |
| `upload_media` | 画像または動画を1つ、base64で10 MBまでアップロードします。メディアIDを返します。 | `filename`、`contentType`、`dataBase64`（すべて必須） |
| `create_post` | 投稿を作成、予約、またはドライランします。ルールはPOST /postsと同じです。 | `accountIds`（必須）、`content`、`mediaIds`、`dryRun`、`requireApproval`、`scheduledFor`、`firstComment`、`thread`、`firstReply`、`poll`、`cover`、`tiktokAiGenerated`、`idempotencyKey` |
| `get_post` | 投稿のアカウントごとのステータスを返します。`settled`がtrueになるまでポーリングします。 | `postId`（必須） |
| `list_posts` | 最近の投稿を新しい順に返します。 | `limit`（1–100、デフォルト20） |
| `approve_post` | 承認待ちの投稿を承認します。キーでは拒否されます（人間のみ）。 | `postId`（必須）、`publishNow`、`scheduledFor` |
| `reject_post` | 承認待ちの投稿を完全に却下します。キーが却下できるのは、そのキー自身が作成した投稿だけです（それ以外は`reject_not_own_post`）。 | `postId`（必須）、`reason` |
| `retry_post` | 失敗した投稿を、新しい試行として再試行します。キーが再試行できるのは、そのキー自身が作成した投稿だけです（それ以外は`retry_not_own_post`）。承認制のキーで再試行すると、投稿は再び承認待ちになります。 | `postId`（必須） |
| `cancel_post` | 承認待ちまたは予約済みの投稿をキャンセルします。キーがキャンセルできるのは、そのキー自身が作成した投稿だけです（それ以外は`cancel_not_own_post`）。 | `postId`（必須） |
| `delete_post` | 一度も送信されていない投稿（承認待ち、却下済み、キャンセル済み、またはすべてのネットワークで失敗）を、失敗した送信がZernioに残したコピーとともに削除します。キーが削除できるのは、そのキー自身が作成した投稿だけです（それ以外は`delete_not_own_post`）。 | `postId`（必須） |
| `reschedule_post` | 公開前に`scheduledFor`を変更します。キーが日時を変更できるのは、そのキー自身が作成した投稿だけです（それ以外は`reschedule_not_own_post`）。 | `postId`、`scheduledFor`（どちらも必須） |
| `retry_first_comment` | 失敗した最初のコメントを再試行します。二重に投稿されることはありません。 | `postId`（必須） |
| `signup` | キーなしの場合のみ。人間のユーザーのためにFreeワークスペースを作成し、キーを取得します。 | `email`（必須）、`workspaceName`、`agentName`、`locale`（`en`または`ja`。受け取りメールの言語） |

各フィールドの意味はRESTリファレンスと同じです：[POST /posts](https://docs.botdoor.co/ja/api/posts-create/)、[投稿の操作](https://docs.botdoor.co/ja/api/post-actions/)、[メディア](https://docs.botdoor.co/ja/api/media/)、[アカウント](https://docs.botdoor.co/ja/api/accounts/)、[連携](https://docs.botdoor.co/ja/api/connect/)。

## 典型的な流れ

1. `list_accounts`を呼び出し、使う`id`を選びます。
2. ファイルごとに`upload_media`を呼び出します。
3. `dryRun: true`で`create_post`を呼び出し、指摘された点を修正します。次に`dryRun`を外し、`idempotencyKey`を付けてもう一度呼び出します。
4. `settled`がtrueになるまで`get_post`を呼び出します。`needs_approval`と表示されたら、アプリで承認するよう人間のユーザーに伝えてください。

## 呼び出し例

```json
{"jsonrpc": "2.0", "id": 3, "method": "tools/call",
 "params": {"name": "create_post", "arguments": {"content": "Fresh sourdough at 7am", "accountIds": ["2ae8…"], "dryRun": true}}}
```

## よくある質問

### 投稿用のツールが表示されないのはなぜですか？

キーなしで接続しているため、signupだけが提供されています。Authorization: Bearer <key>を付けて再接続してください。

### MCPツールはRESTと同じデータを返しますか？

はい。ツール結果の中に、RESTのレスポンスと同じJSONが入っています。

### 呼び出しがタイムアウトしたとき、二重投稿を防ぐには？

create_postを再試行するときに、同じidempotencyKeyを渡してください。
