addrbookFor publishers
← The evidence ledger

Evidence row 263396

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 476f7ccf-2264-4300-b465-bed00ada0f77
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
b1306ffba365af90e217b08fb49edd167ef9972924f98e24d563ac52d75cd05f
Leaf
0xdecd77d4c7014f078ddf3159b4428ab54db33abbf4a615cd891312234b24812d

What was observed

{
  "count": 47,
  "tools": [
    {
      "description": "MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: \"<jwt>\" } after the user pastes, or with no args to get the link.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "token": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "authenticate"
    },
    {
      "description": "Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "connect"
    },
    {
      "description": "The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\", \"consulta um CPF\", \"is there a tool for Y\". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "action": {
            "default": "search",
            "enum": [
              "search",
              "describe",
              "install",
              "uninstall",
              "subscribe",
              "cancel",
              "resume",
              "report_bug",
              "request_mcp",
              "list_tools",
              "invoke",
              "search_prompts",
              "get_prompt",
              "publish_prompt"
            ],
            "type": "string"
          },
          "arguments": {
            "default": "{}",
            "type": "string"
          },
          "cancel_comment": {
            "default": "",
            "type": "string"
          },
          "cancel_reason": {
            "enum": [
              "too_expensive",
              "missing_features",
              "switched_service",
              "unused",
              "customer_service",
              "too_complex",
              "low_quality",
              "other"
            ],
            "type": "string"
          },
          "conversation": {
            "default": "[]",
            "type": "string"
          },
          "immediate": {
            "default": false,
            "type": "boolean"
          },
          "limit": {
            "default": 10,
            "type": "number"
          },
          "mcp_id": {
            "default": "",
            "type": "string"
          },
          "message": {
            "default": "",
            "type": "string"
          },
          "prompt_body": {
            "default": "",
            "type": "string"
          },
          "prompt_category": {
            "default": "",
            "type": "string"
          },
          "prompt_description": {
            "default": "",
            "type": "string"
          },
          "prompt_slug": {
            "default": "",
            "type": "string"
          },
          "prompt_targets": {
            "default": [],
            "items": {
              "enum": [
                "claude",
                "chatgpt",
                "cursor",
                "lovable"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "prompt_title": {
            "default": "",
            "type": "string"
          },
          "prompt_tool": {
            "default": "",
            "type": "string"
          },
          "prompt_vars": {
            "default": "{}",
            "type": "string"
          },
          "query": {
            "default": "",
            "type": "string"
          },
          "report_context": {
            "default": "",
            "type": "string"
          },
          "request_details": {
            "default": "",
            "type": "string"
          },
          "request_name": {
            "default": "",
            "type": "string"
          },
          "tier_slug": {
            "default": "",
            "type": "string"
          },
          "tool_id": {
            "default": "",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "marketplace"
    },
    {
      "description": "Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "context": {
            "default": "",
            "type": "string"
          },
          "conversation": {
            "default": "[]",
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "name": "report_bug"
    },
    {
      "description": "Show the current MCP platform and adapter versions.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "show_version"
    },
    {
      "description": "Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "toolkit_info"
    },
    {
      "description": "Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid.\n\n[Flattened action: archive]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "duration_secs": {
            "type": "number"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_chat_archive"
    },
    {
      "description": "Get metadata for a single chat (subject/name, archived/pinned/muted state, unread count, timestamps). Requires chat_jid.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_chat_metadata"
    },
    {
      "description": "Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid.\n\n[Flattened action: mute]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "duration_secs": {
            "type": "number"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_chat_mute"
    },
    {
      "description": "Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid.\n\n[Flattened action: pin]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "duration_secs": {
            "type": "number"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_chat_pin"
    },
    {
      "description": "Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid.\n\n[Flattened action: unarchive]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "duration_secs": {
            "type": "number"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_chat_unarchive"
    },
    {
      "description": "Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid.\n\n[Flattened action: unmute]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "duration_secs": {
            "type": "number"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_chat_unmute"
    },
    {
      "description": "Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid.\n\n[Flattened action: unpin]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "duration_secs": {
            "type": "number"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_chat_unpin"
    },
    {
      "description": "List WhatsApp chats (individual + group). Sorted by most recent activity.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "archived": {
            "type": "boolean"
          },
          "limit": {
            "default": 50,
            "type": "number"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_chats"
    },
    {
      "description": "Show this install's editable-after-connect settings per connected number — currently the proxy (proxy_url): whether it's set and a masked preview (the raw value is never returned). Owner/admin or the connection owner.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "whatsapp_config_get"
    },
    {
      "description": "Change an editable-after-connect setting on a connected number WITHOUT re-pairing. Today the only field is `proxy_url` — the SOCKS5/HTTPS proxy WhatsApp connects through (recommended to avoid IP bans). Owner/admin or the connection owner.\n- `account`: which number (id/wa_jid, phone, or label; omit if only one is connected).\n- `values`: e.g. { \"proxy_url\": \"socks5://user:pass@host:port\" }. An empty string CLEARS the field (e.g. { \"proxy_url\": \"\" } connects with no proxy); omit the key to keep the current value.\nThe new value applies on the next (re)connection; the live session cache is invalidated so the next tool call uses it.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "values": {
            "additionalProperties": {
              "type": "string"
            },
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "values"
        ],
        "type": "object"
      },
      "name": "whatsapp_config_set"
    },
    {
      "description": "Read WhatsApp contacts.\nActions:\n- list: search across contacts (query optional — substring on name/phone). Default limit 50.\n- get: full contact info by JID.\n\n[Flattened action: get]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "jid": {
            "type": "string"
          },
          "limit": {
            "default": 50,
            "type": "number"
          },
          "query": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_contacts_get"
    },
    {
      "description": "Read WhatsApp contacts.\nActions:\n- list: search across contacts (query optional — substring on name/phone). Default limit 50.\n- get: full contact info by JID.\n\n[Flattened action: list]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "jid": {
            "type": "string"
          },
          "limit": {
            "default": 50,
            "type": "number"
          },
          "query": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_contacts_list"
    },
    {
      "description": "Group lifecycle/admin (the connected account must be a group admin for most actions).\nActions:\n- create:      { name, participants[] }\n- leave:       { group_jid }\n- update:      { group_jid, name?, description? }\n- invite_link: { group_jid, link_action: 'get'|'revoke' }\n- join:        { invite }  (invite code or full invite link)\n- requests:    { group_jid, req_action: 'list'|'approve'|'reject', users? }\n\n[Flattened action: create]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "invite": {
            "type": "string"
          },
          "link_action": {
            "enum": [
              "get",
              "revoke"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "participants": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "req_action": {
            "enum": [
              "list",
              "approve",
              "reject"
            ],
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_group_manage_create"
    },
    {
      "description": "Group lifecycle/admin (the connected account must be a group admin for most actions).\nActions:\n- create:      { name, participants[] }\n- leave:       { group_jid }\n- update:      { group_jid, name?, description? }\n- invite_link: { group_jid, link_action: 'get'|'revoke' }\n- join:        { invite }  (invite code or full invite link)\n- requests:    { group_jid, req_action: 'list'|'approve'|'reject', users? }\n\n[Flattened action: invite_link]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "invite": {
            "type": "string"
          },
          "link_action": {
            "enum": [
              "get",
              "revoke"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "participants": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "req_action": {
            "enum": [
              "list",
              "approve",
              "reject"
            ],
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_group_manage_invite_link"
    },
    {
      "description": "Group lifecycle/admin (the connected account must be a group admin for most actions).\nActions:\n- create:      { name, participants[] }\n- leave:       { group_jid }\n- update:      { group_jid, name?, description? }\n- invite_link: { group_jid, link_action: 'get'|'revoke' }\n- join:        { invite }  (invite code or full invite link)\n- requests:    { group_jid, req_action: 'list'|'approve'|'reject', users? }\n\n[Flattened action: join]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "invite": {
            "type": "string"
          },
          "link_action": {
            "enum": [
              "get",
              "revoke"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "participants": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "req_action": {
            "enum": [
              "list",
              "approve",
              "reject"
            ],
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_group_manage_join"
    },
    {
      "description": "Group lifecycle/admin (the connected account must be a group admin for most actions).\nActions:\n- create:      { name, participants[] }\n- leave:       { group_jid }\n- update:      { group_jid, name?, description? }\n- invite_link: { group_jid, link_action: 'get'|'revoke' }\n- join:        { invite }  (invite code or full invite link)\n- requests:    { group_jid, req_action: 'list'|'approve'|'reject', users? }\n\n[Flattened action: leave]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "invite": {
            "type": "string"
          },
          "link_action": {
            "enum": [
              "get",
              "revoke"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "participants": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "req_action": {
            "enum": [
              "list",
              "approve",
              "reject"
            ],
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_group_manage_leave"
    },
    {
      "description": "Group lifecycle/admin (the connected account must be a group admin for most actions).\nActions:\n- create:      { name, participants[] }\n- leave:       { group_jid }\n- update:      { group_jid, name?, description? }\n- invite_link: { group_jid, link_action: 'get'|'revoke' }\n- join:        { invite }  (invite code or full invite link)\n- requests:    { group_jid, req_action: 'list'|'approve'|'reject', users? }\n\n[Flattened action: requests]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "invite": {
            "type": "string"
          },
          "link_action": {
            "enum": [
              "get",
              "revoke"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "participants": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "req_action": {
            "enum": [
              "list",
              "approve",
              "reject"
            ],
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_group_manage_requests"
    },
    {
      "description": "Group lifecycle/admin (the connected account must be a group admin for most actions).\nActions:\n- create:      { name, participants[] }\n- leave:       { group_jid }\n- update:      { group_jid, name?, description? }\n- invite_link: { group_jid, link_action: 'get'|'revoke' }\n- join:        { invite }  (invite code or full invite link)\n- requests:    { group_jid, req_action: 'list'|'approve'|'reject', users? }\n\n[Flattened action: update]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "invite": {
            "type": "string"
          },
          "link_action": {
            "enum": [
              "get",
              "revoke"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "participants": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "req_action": {
            "enum": [
              "list",
              "approve",
              "reject"
            ],
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_group_manage_update"
    },
    {
      "description": "List the members of a WhatsApp group (live). Returns each participant's JID, phone, and admin/super-admin flag. Requires group_jid (…@g.us, from whatsapp_groups).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          }
        },
        "required": [
          "group_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_group_members"
    },
    {
      "description": "Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`.\n\n[Flattened action: add]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "group_jid",
          "users"
        ],
        "type": "object"
      },
      "name": "whatsapp_group_participants_add"
    },
    {
      "description": "Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`.\n\n[Flattened action: demote]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "group_jid",
          "users"
        ],
        "type": "object"
      },
      "name": "whatsapp_group_participants_demote"
    },
    {
      "description": "Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`.\n\n[Flattened action: promote]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "group_jid",
          "users"
        ],
        "type": "object"
      },
      "name": "whatsapp_group_participants_promote"
    },
    {
      "description": "Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`.\n\n[Flattened action: remove]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "group_jid": {
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "group_jid",
          "users"
        ],
        "type": "object"
      },
      "name": "whatsapp_group_participants_remove"
    },
    {
      "description": "List WhatsApp groups the account belongs to — subject, jid, participants count, owner.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_groups"
    },
    {
      "description": "Request OLDER messages for a chat from your phone (on-demand history sync), extending what whatsapp_messages can read. Returns { status, messages_added }:\n- \"done\"/\"partial\": it pulled messages_added new messages — read them via whatsapp_messages (paginate with `before`). \"partial\" means WhatsApp stopped early; wait and retry for more.\n- \"cooldown\": you requested this chat <60s ago (retry_after_s tells you when). WhatsApp THROTTLES back-to-back requests — DO NOT retry in a loop; wait, then try once.\n- \"timeout\": the phone didn't deliver in time (offline or throttled) — already-synced history is still readable; retry later.\nBEST-EFFORT (gated by WhatsApp): one call usually pulls a batch (~50–70 msgs); pulling much deeper repeatedly often won't work. Connects live, may take up to ~1 minute. The initial sync already loaded deep history for most chats — check whatsapp_history_coverage first; only backfill when a chat's oldest_ts isn't far enough back.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "count": {
            "default": 50,
            "type": "number"
          },
          "requests": {
            "type": "number"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_history_backfill"
    },
    {
      "description": "Show how far back the LOCAL message archive reaches per chat (oldest_ts, newest_ts, message_count, status). Use it to find pagination boundaries for whatsapp_messages and to decide whether to pull more with whatsapp_history_backfill. Optional query (filter by name/JID), kind, limit, or a single chat_jid.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "dm",
              "group",
              "broadcast",
              "newsletter",
              "unknown"
            ],
            "type": "string"
          },
          "limit": {
            "default": 100,
            "type": "number"
          },
          "query": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_history_coverage"
    },
    {
      "description": "List WhatsApp accounts paired to this install — wa_jid, phone, label, proxy on/off, status.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_list_accounts"
    },
    {
      "description": "Manage a message you can act on.\nActions:\n- delete:  { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you\n- forward: { chat_jid, message_id, to } — forward a stored message to another chat\n- edit:    { chat_jid, message_id, text } — edit one of your recent text messages\n\n[Flattened action: delete]\n\nBulk support: accepts message_ids for batched execution.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "for_everyone": {
            "type": "boolean"
          },
          "message_id": {
            "type": "string"
          },
          "message_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "text": {
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        },
        "required": [
          "chat_jid",
          "message_id"
        ],
        "type": "object"
      },
      "name": "whatsapp_message_delete"
    },
    {
      "description": "Manage a message you can act on.\nActions:\n- delete:  { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you\n- forward: { chat_jid, message_id, to } — forward a stored message to another chat\n- edit:    { chat_jid, message_id, text } — edit one of your recent text messages\n\n[Flattened action: edit]\n\nBulk support: accepts message_ids for batched execution.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "for_everyone": {
            "type": "boolean"
          },
          "message_id": {
            "type": "string"
          },
          "message_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "text": {
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        },
        "required": [
          "chat_jid",
          "message_id"
        ],
        "type": "object"
      },
      "name": "whatsapp_message_edit"
    },
    {
      "description": "Manage a message you can act on.\nActions:\n- delete:  { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you\n- forward: { chat_jid, message_id, to } — forward a stored message to another chat\n- edit:    { chat_jid, message_id, text } — edit one of your recent text messages\n\n[Flattened action: forward]\n\nBulk support: accepts message_ids for batched execution.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "for_everyone": {
            "type": "boolean"
          },
          "message_id": {
            "type": "string"
          },
          "message_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "text": {
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        },
        "required": [
          "chat_jid",
          "message_id"
        ],
        "type": "object"
      },
      "name": "whatsapp_message_forward"
    },
    {
      "description": "List messages in a chat from LOCAL history. Requires chat_jid (from whatsapp_chats). Paginate backwards by passing the oldest message's timestamp as `before` (ISO 8601); `after` pages forward; `order` sorts. NOTE: only messages already synced locally are returned — to see how far back the archive goes use whatsapp_history_coverage, and to pull OLDER messages from your phone use whatsapp_history_backfill.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "after": {
            "type": "string"
          },
          "before": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "limit": {
            "default": 100,
            "type": "number"
          },
          "order": {
            "default": "asc",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "since": {
            "type": "string"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_messages"
    },
    {
      "description": "Mark messages as read in a chat. Requires chat_jid. Optional message_id (marks up to this message; omit to mark all unread).\n\nBulk support: accepts message_ids for batched execution.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "message_id": {
            "type": "string"
          },
          "message_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "chat_jid"
        ],
        "type": "object"
      },
      "name": "whatsapp_messages_write"
    },
    {
      "description": "Send a poll or vote on one.\nActions:\n- create: { to, name, options[] (2–12), selectable_count? }\n- vote:   { chat_jid, message_id, options[] (the option texts to select) }\n\n[Flattened action: create]\n\nBulk support: accepts message_ids for batched execution.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "message_id": {
            "type": "string"
          },
          "message_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "options": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "selectable_count": {
            "type": "number"
          },
          "to": {
            "type": "string"
          }
        },
        "required": [
          "options"
        ],
        "type": "object"
      },
      "name": "whatsapp_poll_create"
    },
    {
      "description": "Send a poll or vote on one.\nActions:\n- create: { to, name, options[] (2–12), selectable_count? }\n- vote:   { chat_jid, message_id, options[] (the option texts to select) }\n\n[Flattened action: vote]\n\nBulk support: accepts message_ids for batched execution.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "message_id": {
            "type": "string"
          },
          "message_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "options": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "selectable_count": {
            "type": "number"
          },
          "to": {
            "type": "string"
          }
        },
        "required": [
          "options"
        ],
        "type": "object"
      },
      "name": "whatsapp_poll_vote"
    },
    {
      "description": "React to a message with an emoji (or remove your reaction by passing an empty emoji). Requires chat_jid + message_id.\n\nBulk support: accepts message_ids for batched execution.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "emoji": {
            "type": "string"
          },
          "message_id": {
            "type": "string"
          },
          "message_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "chat_jid",
          "message_id"
        ],
        "type": "object"
      },
      "name": "whatsapp_react"
    },
    {
      "description": "Full-text search across all stored messages (SQLite FTS5). Optional chat_jid to scope. Returns matches with context.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "chat_jid": {
            "type": "string"
          },
          "limit": {
            "default": 50,
            "type": "number"
          },
          "query": {
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "whatsapp_search"
    },
    {
      "description": "Send a WhatsApp message (text or media).\nActions:\n- text:  { to, text, reply_to? }\n- media: { to, type ('image'|'video'|'audio'|'document'|'sticker'),\n           media_url | media_base64, caption?, filename?, mimetype? }\n\n`to` accepts either a JID ('5511999999999@s.whatsapp.net', '<id>@g.us') or\na plain phone (digits, country code included). For groups always use the\n'<id>@g.us' JID — get it from whatsapp_groups.\n\n[Flattened action: media]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "caption": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "media_base64": {
            "type": "string"
          },
          "media_url": {
            "type": "string"
          },
          "mimetype": {
            "type": "string"
          },
          "reply_to": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "type": {
            "enum": [
              "image",
              "video",
              "audio",
              "document",
              "sticker"
            ],
            "type": "string"
          }
        },
        "required": [
          "to"
        ],
        "type": "object"
      },
      "name": "whatsapp_send_media"
    },
    {
      "description": "Send a WhatsApp message (text or media).\nActions:\n- text:  { to, text, reply_to? }\n- media: { to, type ('image'|'video'|'audio'|'document'|'sticker'),\n           media_url | media_base64, caption?, filename?, mimetype? }\n\n`to` accepts either a JID ('5511999999999@s.whatsapp.net', '<id>@g.us') or\na plain phone (digits, country code included). For groups always use the\n'<id>@g.us' JID — get it from whatsapp_groups.\n\n[Flattened action: text]",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          },
          "caption": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "media_base64": {
            "type": "string"
          },
          "media_url": {
            "type": "string"
          },
          "mimetype": {
            "type": "string"
          },
          "reply_to": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "type": {
            "enum": [
              "image",
              "video",
              "audio",
              "document",
              "sticker"
            ],
            "type": "string"
          }
        },
        "required": [
          "to"
        ],
        "type": "object"
      },
      "name": "whatsapp_send_text"
    },
    {
      "description": "Refresh this account's local data from WhatsApp — pulls recent messages and refreshes the groups/contacts lists into the local store. Call it BEFORE reading (chats/groups/messages/contacts/search) when results look stale or empty (e.g. right after connecting, or an account that hasn't synced recently). Connects live, so it may take ~20–60s. Returns { messages_stored }.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "account": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_sync"
    },
    {
      "description": "Show this WhatsApp install's outbound webhook: the current URL, the subscribed events (empty = all), include_result, and the catalog of subscribable events (available_events — e.g. whatsapp.message, whatsapp.reaction, and the whatsapp.* wildcard). Owner/admin only.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "whatsapp_webhook_get"
    },
    {
      "description": "Set (or remove) this WhatsApp install's outbound webhook. Owner/admin only.\n- To set: pass `url` (https only, not localhost). `events` is the list of subscribed events (\"permissions\") — e.g. [\"whatsapp.message\"], or [\"whatsapp.*\"] for every WhatsApp event, or [] / omit for ALL events. See available_events from whatsapp_webhook_get. `include_result` (default true) controls whether the tool result is included in tool.call payloads. `secret` is optional (reserved).\n- Subscribing to any whatsapp.* event makes the daemon hold a live connection per number and forward inbound messages to your URL.\n- To remove the webhook: pass `remove: true` (or an empty url).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "events": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "include_result": {
            "type": "boolean"
          },
          "remove": {
            "type": "boolean"
          },
          "secret": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "whatsapp_webhook_set"
    }
  ]
}

What the leaf hashes

{"body":"b1306ffba365af90e217b08fb49edd167ef9972924f98e24d563ac52d75cd05f","id":263396,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793033423925119,"prev":null,"subject":"476f7ccf-2264-4300-b465-bed00ada0f77","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0xdecdec859ebeb941677385b96b8a0316cf80bf13ec572b5a17827d15afecc0c4
  2. 0x295fe4eb8ed4701a26af9f19c1913b799e7dc97cc57ccad1379fe7e81a049a0a
  3. 0x646876d55333a8624526c31acd38c118e4ced2d411f7bab711833f27f30902d8
  4. 0xcddb27380110e439a8f448e569b39b55ed4835f43b39e42bbba357d116a7e6f8
  5. 0xf745be4f24a5ae4a3a125bf48c51f17056897b6d1b1936123ff8023cd698976e
  6. 0x3d2f77f22d7a46b456cc39353360181b459212cdb75a28fceca2731bcc0395c9
  7. 0xe26a125638fd6145562a9d70a63d56d66e774e4acdc3492ca462bfbdd42ec16d
  8. 0x0564ac9d3cc86dd20217bd75f0b28cf2ae4c9464af7710a7232872d610b06e01
  9. 0xa1b91970f5f968feefb5c6b95a0b1d348b0ca13bf0c7771e26969549a07a2cab
  10. 0x764523acbc3434e3b97373c0b9f5a3550e21809fcde5d63c1823d30371921429
  11. 0x81e0a64a684968fee123ac8017e882fda3952628b73684e4b974157cf7552f06
  12. 0x1cde596bd397df62b2525df79e5a761af7d1a292cbcfd283ea8977aecf9334e7
  13. 0x3fcdf7fa32ccefe771eb57ae3015142065d64e3ce732fea7d11b9a3c99dde44f
  14. 0x0b7541c75cc482a7134110311d7dbd02095d969ba21177de9b21a52a55981718
  15. 0x6dc40f983a3840a0ad927a9ca17f4ff1e3b649a6c735e2a09b140db7c2caf13b
  16. 0x703f95866af09c5e5d6ead7411e9a10f964a41a2aff64d4a55ff0053c023a023
  17. 0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON