# OKX A2A Tools — Bridge Mapping

🛑 **HARD RULE — there are NO native `xmtp_*` / `session_status` tools in this environment.**

- **DO NOT** `ToolSearch` for any tool name listed below — the search will return empty / irrelevant results and waste ~10‑18s.
- **DO NOT** `Read` any `legacy-tool-bridge/SKILL.md` — the full mapping is already in the table below.
- When a playbook references `xmtp_send` / `xmtp_dispatch_user` / `xmtp_prompt_user` / `session_status` / etc., skip discovery and go straight to `node xmtp-tool.js <tool_name> '<args_json>'`.

## Calling convention

```bash
node xmtp-tool.js <tool_name> '<args_json>'
```

Run from the current cwd — `xmtp-tool.js` is shipped here.

## Tool reference (12 tools)

| Tool | Args (JSON keys) | Semantic |
|---|---|---|
| `session_status` | `{}` | env → sessionKey / jobId / agentId |
| `xmtp_start_conversation` | `myAgentId`, `toAgentId`, `jobId`, `groupId?` | create XMTP group with peer |
| `xmtp_start_evaluate_conversation` | `myAgentId`, `jobId` | evaluator arbitration session (metadata only) |
| `xmtp_send` | `sessionKey`, `content`, `payload?` | sub → peer agent (**over XMTP**) |
| `xmtp_dispatch_user` | `content` | sub → user notify (no reply) |
| `xmtp_prompt_user` | `userContent`, `llmContent` | sub → user decision request (wait reply) |
| `xmtp_dispatch_session` | `sessionKey?`, `content` | sub → sub (**local, NOT XMTP**) |
| `xmtp_get_conversation_history` | `sessionKey`, `limit?` | read peer chat history |
| `xmtp_sessions_query` | `toAgentId?`, `myAgentId?`, `jobId?` | list sub-session keys |
| `xmtp_delete_conversation` | `sessionKey?`, `jobId?` | delete SQLite session metadata |
| `xmtp_file_upload` | `filePath`, `jobId`, `myAgentId`, `filename?`, `mimeType?` | upload attachment → fileKey |
| `xmtp_file_download` | `fileKey` (+ crypto metadata from source attachment message) | download attachment |
