addrbookFor publishers
← The evidence ledger

Evidence row 2625410

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 768e20c1-8c38-4deb-aa71-981b85a016fc
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
7b65591767c9cd1b2a7ea4e5a0e8073a9d643e6a9bda51a49f25dab6c48e7026
Leaf
0x496ad4f490136b6201d73e56d2f3b8b89ebf4d9ae144b9f421eabe4e0f648d07

What was observed

{
  "count": 38,
  "tools": [
    {
      "description": "Make a tool wait for a person: every call of it, those whose argument is over a number (like invoices_create_credit_note when amount is over 500), or those whose argument is one of some values (like connect_call when method is POST, PUT, PATCH or DELETE). A held call answers approval_required with an approval_id and asks the approver; when they approve, call again with the same arguments, once (a call no person answers for adds the approval: header X-Conecto-Approval, or _meta.approvalId over MCP). The approver is an email, a saved channel, or a team (its managers, or everyone in it); each approver gets a link of their own, and the person whose call it is never approves it. With two_people_over, calls whose argument is over it need two people. Bills like Xero's bill approval: purchasing_create_bill with argument total holds bills over an amount, tax included; a rule on purchasing_pay_bill also holds batches with such a payment. Removing a rule is the owner's, on their account page, when the account has an owner email. $0.001. Costs $0.001 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "approver_channel": {
            "description": "A saved notify channel.",
            "maxLength": 80,
            "type": "string"
          },
          "approver_email": {
            "maxLength": 254,
            "type": "string"
          },
          "approver_team": {
            "description": "A team (account_list_teams).",
            "maxLength": 80,
            "type": "string"
          },
          "approvers": {
            "default": "managers",
            "description": "Who in approver_team approves.",
            "enum": [
              "managers",
              "everyone"
            ],
            "type": "string"
          },
          "argument": {
            "description": "An argument of the tool (or total, for purchasing_create_bill).",
            "maxLength": 60,
            "type": "string"
          },
          "over": {
            "description": "Calls with argument over this are held.",
            "type": "number"
          },
          "tool": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "two_people_over": {
            "description": "Calls whose argument is over this need two people; higher than over.",
            "type": "number"
          },
          "values": {
            "description": "Calls with argument equal to one of these (any case) are held.",
            "items": {
              "maxLength": 60,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "tool"
        ],
        "type": "object"
      },
      "name": "account_add_approval_rule"
    },
    {
      "description": "Move a form, a meeting type, a job, an inbox, a phone number, a newsletter, the website chat, a rental, a pipeline, a table or a website to a team. What happens through it is charged to that team from now on (a form's responses, a number's calls, an inbox's tickets), and its rental moves with it. Something a bot makes already belongs to the bot's team. Only a key of the company-wide team without limits moves things between teams. $0.001. Costs $0.001 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Its id, slug, name, address or number; not needed for the chat.",
            "maxLength": 254,
            "type": "string"
          },
          "kind": {
            "enum": [
              "form",
              "meeting_type",
              "job",
              "inbox",
              "phone_number",
              "newsletter",
              "chat",
              "rental",
              "pipeline",
              "table",
              "website"
            ],
            "type": "string"
          },
          "team": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "kind",
          "team"
        ],
        "type": "object"
      },
      "name": "account_assign_team"
    },
    {
      "description": "The account's admin and security actions, newest first: keys made and revoked, limits and auto-reload, the owner's sign-ins, connectors, exports, vault reads and writes, credentials set and everything deleted. Ordinary work is in the call log (account_list_calls). verify: true also checks the hash chain, which breaks where an entry was changed or removed. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "action": {
            "description": "Only actions starting with this, like \"key.\" or \"tool.vault_\".",
            "maxLength": 60,
            "type": "string"
          },
          "limit": {
            "default": 50,
            "maximum": 500,
            "minimum": 1,
            "type": "integer"
          },
          "since": {
            "format": "date-time",
            "maxLength": 40,
            "type": "string"
          },
          "verify": {
            "default": false,
            "type": "boolean"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_audit_log"
    },
    {
      "description": "The account balance, how much of it is credit bought (AI visibility and the phone run only on that) and how much free and bonus credit, what running calls are holding, this key's daily budget, the auto-reload state, and how much of this month's free reads and downloads is used. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "account_balance"
    },
    {
      "description": "A one-time link to a page showing one area as it is when the page opens, for when the person you work for asks to see it themselves: a recruiter looks at the applicants, a bookkeeper at what is due. Do the work and answer with the area's own tools first; a link never replaces that. When an answer would be a long list they would rather look through, offer a link and make it once they say yes. The page is made from the area's own reads as this key, so it shows only what this key may see. It opens once and keeps for an hour; an unopened link ends after 7 days. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "area": {
            "enum": [
              "analytics",
              "code",
              "crm",
              "calendar",
              "chat",
              "account",
              "admin",
              "email",
              "helpdesk",
              "documents",
              "esign",
              "hiring",
              "outreach",
              "prospects",
              "lookups",
              "companies",
              "longlists",
              "mergers",
              "valuation",
              "newsletters",
              "notify",
              "projects",
              "schedules",
              "speech",
              "uptime",
              "vault",
              "web",
              "tables",
              "links",
              "images",
              "files",
              "forms",
              "helpcenter",
              "imports",
              "invoices",
              "books",
              "inventory",
              "whistleblowing",
              "connect",
              "microsoft365",
              "googleworkspace",
              "hubspot",
              "salesforce",
              "directory",
              "hr",
              "social",
              "purchasing",
              "phone",
              "websites",
              "views",
              "visibility",
              "markets"
            ],
            "type": "string"
          }
        },
        "required": [
          "area"
        ],
        "type": "object"
      },
      "name": "account_dashboard_link"
    },
    {
      "description": "Where each area's data is stored and processed: the company that runs each place, the country or region, and what it holds. Every area keeps its records in the database and runs on Conecto's servers; some also use a service named here (email, phone, PDFs, search). For the business's records of processing and its transfer assessments (GDPR Art. 30 and 44). Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "areas": {
            "description": "Areas to show, like [\"email\", \"phone\"]; all when left out.",
            "items": {
              "maxLength": 40,
              "type": "string"
            },
            "maxItems": 50,
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_data_locations"
    },
    {
      "description": "Send an event you name, custom.<name> (custom.lead_qualified, custom.order_shipped), to every channel subscribed to it (notify_subscribe with \"custom.*\" or its name: Slack, Teams, a webhook to Zapier, Make, n8n or the business's own systems) and to account_events, where another team's bot can pick it up. data is any JSON object (up to 10 KB); sent_by is added with this bot's name and team. $0.005 for each channel it goes to; free when no channel is subscribed. Costs $0.005 per channel it goes to; nothing if none are found.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "object"
          },
          "kind": {
            "description": "custom. and a name of lowercase letters, digits, dots, dashes and _.",
            "maxLength": 66,
            "minLength": 8,
            "pattern": "^custom\\.[a-z0-9][a-z0-9_.-]*$",
            "type": "string"
          },
          "link": {
            "maxLength": 1000,
            "pattern": "^https://",
            "type": "string"
          },
          "text": {
            "maxLength": 4000,
            "type": "string"
          },
          "title": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "kind",
          "title"
        ],
        "type": "object"
      },
      "name": "account_emit_event"
    },
    {
      "description": "Erases one person across every area when they ask (GDPR Art. 17), once you know it is them (they wrote from that address, or confirmed it). Their CRM contact, chat visitor, past meetings and calls are anonymised, so deals stay without them, and a meeting they were only a guest at drops them; their chats, CRM history, form and routing form answers, job applications with the CV, newsletter subscriptions and events are deleted, and the call log's contents that name them are cleared. Kept, each with its reason in the result: accounting records, employment records, signed documents, the audit log, the account's own settings, upcoming meetings, and emails and tickets (outreach emails and replies too) unless correspondence is true. Their address goes on the suppression lists, so it is never mailed again: outreach campaigns stop for them at once. Can't be undone; the owner is emailed. A key of a team other than the company-wide one gets owner_required: pass the request to the owner. Free. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "correspondence": {
            "default": false,
            "description": "Also delete their emails and tickets, when no law requires keeping them.",
            "type": "boolean"
          },
          "email": {
            "description": "The person's email address.",
            "maxLength": 254,
            "type": "string"
          },
          "phone": {
            "description": "Their phone number in international format, like +1 503 555 0145.",
            "maxLength": 40,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_erase_person"
    },
    {
      "description": "What happened in this account that someone outside the bot did, oldest first: applications, bookings, form responses, signatures, replies, emails received, goals reached on the website; and the custom events bots sent with account_emit_event. Kept 30 days. Poll with after = the last event_id you saw. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "after": {
            "description": "Only events after this event_id.",
            "minimum": 0,
            "type": "integer"
          },
          "kinds": {
            "description": "Event names or areas (\"hiring.*\"); all when left out.",
            "items": {
              "type": "string"
            },
            "maxItems": 30,
            "type": "array"
          },
          "limit": {
            "default": 50,
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_events"
    },
    {
      "description": "Everything this account holds, in ZIP files of up to 24 MB saved to its file store: every record of every area as JSON Lines, and the stored files themselves, with a README saying what is where. Credentials are left out. Runs in the background: poll the call with account_get_call; the result has a download link for each part. The parts open only for this key and for the owner's and admins' own keys that neither only read nor only draft. A key of a team other than the company-wide one gets owner_required. Free (EU Data Act). One at a time, three a day; the owner is emailed when an export is made. Free. Runs in the background: the reply has a call_id; poll it with the account_get_call tool or GET /v1/calls/<id>.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "account_export_all"
    },
    {
      "description": "Everything account_find_person finds about one person in one ZIP in the file store: their records as JSON Lines (credentials left out) and the files those records point to, like a CV. Give the person the download link when they ask for a copy of their data (GDPR Art. 15 and 20), once you know it is them. The ZIP opens only for this key and for the owner's and admins' own keys that neither only read nor only draft. A key of a team other than the company-wide one gets owner_required: pass the request to the owner. Free; 20 a day. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "The person's email address.",
            "maxLength": 254,
            "type": "string"
          },
          "phone": {
            "description": "Their phone number in international format, like +1 503 555 0145.",
            "maxLength": 40,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_export_person"
    },
    {
      "description": "Every record this account holds about one person, by their email address or phone number, across every area: CRM, chats, emails, tickets, forms, bookings, calls, applications, invoices, orders, newsletters, HR and the call log, with their chats and CRM history. For a person who asks what the business keeps about them (GDPR Art. 15). Shows each kind with its count and ids; account_export_person gives them a copy, account_erase_person erases what may go. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "The person's email address.",
            "maxLength": 254,
            "type": "string"
          },
          "phone": {
            "description": "Their phone number in international format, like +1 503 555 0145.",
            "maxLength": 40,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_find_person"
    },
    {
      "description": "The name, logo, colour and footer line the business's emails and published pages carry. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "account_get_brand"
    },
    {
      "description": "One call by id: its status (queued, running, succeeded, failed), cost and result. Use it to poll a background call until it finishes. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "call_id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          }
        },
        "required": [
          "call_id"
        ],
        "type": "object"
      },
      "name": "account_get_call"
    },
    {
      "description": "The limits a business can ask Conecto to raise (calls a minute, new email addresses a day, phone numbers and more): each one's standard and current value and the most that can be asked for, and the business's requests with their answers. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "account_get_limits"
    },
    {
      "description": "The tools that wait for a person's approval, with their thresholds and approvers. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "account_list_approval_rules"
    },
    {
      "description": "Recent calls on this account, newest first, optionally only failed or succeeded ones, or one area's. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "area": {
            "enum": [
              "analytics",
              "code",
              "crm",
              "calendar",
              "chat",
              "account",
              "admin",
              "email",
              "helpdesk",
              "documents",
              "esign",
              "hiring",
              "outreach",
              "prospects",
              "lookups",
              "companies",
              "longlists",
              "mergers",
              "valuation",
              "newsletters",
              "notify",
              "projects",
              "schedules",
              "speech",
              "uptime",
              "vault",
              "web",
              "tables",
              "links",
              "images",
              "files",
              "forms",
              "helpcenter",
              "imports",
              "invoices",
              "books",
              "inventory",
              "whistleblowing",
              "connect",
              "microsoft365",
              "googleworkspace",
              "hubspot",
              "salesforce",
              "directory",
              "hr",
              "social",
              "purchasing",
              "phone",
              "websites",
              "views",
              "visibility",
              "markets"
            ],
            "type": "string"
          },
          "limit": {
            "default": 20,
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "status": {
            "enum": [
              "reserved",
              "running",
              "succeeded",
              "failed"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_list_calls"
    },
    {
      "description": "Every email Conecto sends to the business's customers (bookings, applications, interviews, tests, signatures, invoices and quotes, newsletter sign-ups), with when it goes out and its subject, headline and opening words as they are now, and the {variables} each can use. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "account_list_email_templates"
    },
    {
      "description": "The account's teams, the company-wide one first: each with its areas, whether it only reads, its budget (hard or soft, and its period) and alert line, this period's spend, its ERP code, whether it is paused, its keys, and its people with who manages it. A person's own assistant works within their teams. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "account_list_teams"
    },
    {
      "description": "A link that signs the business owner into their Conecto page, with no password: the balance, adding credit, auto-reload, limits, what the bots did, people, rentals and keys. page opens it where the owner is needed, like people for a role only the owner gives, or settings for joining by email domain. It works once, within 30 minutes; hand it to the owner. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "page": {
            "default": "home",
            "enum": [
              "home",
              "tools",
              "activity",
              "apps",
              "billing",
              "add_credit",
              "limits",
              "people",
              "settings"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_owner_link"
    },
    {
      "description": "Stops every key of a team at once, this one too if it is the team's: their calls are refused until the owner starts the team again on their account page. For a bot that misbehaves or a team that spends too fast. Free. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "team": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "team"
        ],
        "type": "object"
      },
      "name": "account_pause_team"
    },
    {
      "description": "Refund a top-up paid in the last 24 hours that none of has been used yet: its credit, with the first top-up's bonus, leaves the balance, and the card gets the credit back with its tax. The service fee is kept. Without topup_id, the newest top-up (GET /v1/topups lists them with their ids). Free. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "topup_id": {
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_refund_topup"
    },
    {
      "description": "Ask Conecto to raise one of the business's limits: which one (or other, saying which), the number it needs, and why, in 40 to 2,000 characters. Conecto reviews it and approves (maybe with less) or declines; the answer comes as the account.limit_request_answered event and by email to the owner, who is also told now. For an account that has topped up; one request per limit at a time, five in 30 days. Free. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "description": "The number the business needs, in the limit's unit (5000 calls a minute).",
            "maximum": 1000000000,
            "minimum": 1,
            "type": "integer"
          },
          "limit": {
            "description": "The limit, as account_get_limits names it, or other.",
            "enum": [
              "calls_per_minute",
              "key_calls_per_minute",
              "downloads_per_hour",
              "new_email_recipients_per_day",
              "documents_emailed_per_day",
              "orders_emailed_per_day",
              "phone_numbers",
              "confirmation_calls_per_day",
              "connections",
              "storage_blocks",
              "prospects_per_month",
              "outreach_mailboxes",
              "other"
            ],
            "type": "string"
          },
          "other": {
            "description": "With limit other: which limit, like \"rows in one table\".",
            "maxLength": 200,
            "type": "string"
          },
          "reason": {
            "description": "What the business does that needs it, and why the current limit is too low.",
            "maxLength": 2000,
            "minLength": 40,
            "type": "string"
          }
        },
        "required": [
          "limit",
          "amount",
          "reason"
        ],
        "type": "object"
      },
      "name": "account_request_limit"
    },
    {
      "description": "A department, location or project group of the account, like Support, Finance or the Hamburg shop. Its keys (POST /v1/keys with \"team\") can only work in its areas, only read when read_only is on, and spend against its budget (monthly_budget_usd per budget_period: a month, a fiscal quarter or year, or a project total): a hard budget refuses the call that would pass it, a soft one only warns. At alert_percent you get the event account.budget_alert and the owner an email, once a period. erp_code is the team's cost center in the company's ERP, for statements. drafts_only makes every write of its keys wait for one of its managers (or the owner), for a new bot that should only draft. mailboxes are the Microsoft 365 or Google mailboxes its keys may act as. You may make a team and narrow one; widening its areas, letting it write, ending drafts only, switching a hard budget to soft, and raising or removing a budget are the owner's, on their account page, when the account has an owner email. The company-wide team holds every key no other team does and is never limited to areas. $0.001. Costs $0.001 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "alert_percent": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "areas": {
            "description": "The areas its keys may work in (account tools always); null for every area.",
            "items": {
              "type": "string"
            },
            "maxItems": 50,
            "type": [
              "array",
              "null"
            ]
          },
          "budget": {
            "description": "hard refuses calls past the budget; soft only warns.",
            "enum": [
              "hard",
              "soft"
            ],
            "type": "string"
          },
          "budget_ends_on": {
            "description": "The last day of a project budget, like 2026-12-31.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "budget_period": {
            "description": "What the budget is for: a month, a quarter or a year of the account's fiscal calendar, or a project total until budget_ends_on.",
            "enum": [
              "month",
              "quarter",
              "year",
              "project"
            ],
            "type": "string"
          },
          "drafts_only": {
            "description": "Every write of its keys waits for a person, and they get links that act for whoever opens them as \"[redacted]\".",
            "type": "boolean"
          },
          "erp_code": {
            "maxLength": 40,
            "type": [
              "string",
              "null"
            ]
          },
          "mailboxes": {
            "description": "The Microsoft 365 or Google mailboxes its keys may act as; null for every mailbox the connection lists.",
            "items": {
              "maxLength": 254,
              "type": "string"
            },
            "maxItems": 20,
            "type": [
              "array",
              "null"
            ]
          },
          "monthly_budget_usd": {
            "description": "null counts the spend without a cap.",
            "maximum": 1000000,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "new_name": {
            "description": "Renames the team; its keys, spend and budget stay with it.",
            "maxLength": 80,
            "minLength": 1,
            "type": "string"
          },
          "read_only": {
            "description": "Its keys only read, and get links that act for whoever opens them as \"[redacted]\".",
            "type": "boolean"
          },
          "sees_sensitive": {
            "description": "false hides suppliers' bank details and HR notes and contracts from its keys; only the owner turns it on.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "account_save_team"
    },
    {
      "description": "One search over what this account holds: what its files say (PDFs, Word, Excel, PowerPoint, text), table rows, help center articles, CRM contacts, companies and deals, emails, tickets, quotes and invoices, book entries, stock items and project tasks. Every word must appear (any case); titles rank first, then the newest. Each result says which tool opens it. Narrow it with areas. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "areas": {
            "items": {
              "enum": [
                "files",
                "tables",
                "helpcenter",
                "crm",
                "email",
                "helpdesk",
                "invoices",
                "books",
                "inventory",
                "projects"
              ],
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "limit": {
            "default": 20,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "maxLength": 200,
            "minLength": 2,
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "account_search"
    },
    {
      "description": "The business's name as the sender, its logo (a PNG, JPEG, WebP or GIF from the file store), its colour and a footer line (an address, a legal line), on every email to its customers (bookings, applications, tests, signatures, invoices, newsletters, replies) and on its published pages (forms, booking, careers, newsletters, status, views). Only what you pass changes; an empty string clears it. Mail from Conecto to you keeps Conecto's look. Costs $0.001 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "colour": {
            "description": "Hex, like #1a73e8; empty for none.",
            "maxLength": 7,
            "type": "string"
          },
          "footer": {
            "maxLength": 200,
            "type": "string"
          },
          "logo_file_id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          },
          "remove_logo": {
            "default": false,
            "type": "boolean"
          },
          "sender_name": {
            "maxLength": 120,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "account_set_brand"
    },
    {
      "description": "Change an email's subject, headline or opening words in the business's own voice, with {variables} from account_list_email_templates (like {name} or {when}). The facts under them (times, places, amounts, links and buttons) stay as they are. Only what you pass changes; an empty string brings back the original words. Plain text; a blank line starts a new paragraph. Costs $0.001 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "Like booking_booked or invoice_sent.",
            "maxLength": 40,
            "type": "string"
          },
          "headline": {
            "maxLength": 120,
            "type": "string"
          },
          "opening": {
            "maxLength": 4000,
            "type": "string"
          },
          "subject": {
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "name": "account_set_email_template"
    },
    {
      "description": "When the account was made without the owner's email: send that person a link to confirm they own it. Once they confirm, the owner gets the account's warnings and approval requests, and only the owner raises limits. Nothing changes until they open the link. Free. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 3,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "name": "account_set_owner_email"
    },
    {
      "description": "Stop a request before everyone has signed. Signers who were asked get a short email saying nothing is needed any more; their links stop working. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "reason": {
            "maxLength": 300,
            "type": "string"
          },
          "request_id": {
            "description": "The request_id esign_send returned.",
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "name": "esign_cancel"
    },
    {
      "description": "Delete a saved template. Requests already sent from it are not touched. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "template": {
            "description": "The template's name, like service-agreement.",
            "maxLength": 60,
            "minLength": 2,
            "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$",
            "type": "string"
          }
        },
        "required": [
          "template"
        ],
        "type": "object"
      },
      "name": "esign_delete_template"
    },
    {
      "description": "Where a signature request stands: each signer's status (waiting, to sign, opened, signed, declined), and once everyone has signed, the signed PDF with its download link. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "request_id": {
            "description": "The request_id esign_send returned.",
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "name": "esign_get"
    },
    {
      "description": "Signature requests, newest first, optionally only those with one status. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "default": 20,
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "status": {
            "enum": [
              "sent",
              "completed",
              "declined",
              "cancelled",
              "expired"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "name": "esign_list"
    },
    {
      "description": "The saved templates: their names, titles, roles and fields. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "required": [],
        "type": "object"
      },
      "name": "esign_list_templates"
    },
    {
      "description": "Email everyone who still has to sign a reminder with their link. At most once a day per request. Costs $0.02 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "request_id": {
            "description": "The request_id esign_send returned.",
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "name": "esign_remind"
    },
    {
      "description": "Save a PDF from the file store once, with its fields placed per signer role (page, x, y, width and height in percent of the page, as in esign_send), so contracts, NDAs and waivers go out later without placing a field again. roles names who signs, in order; every role needs a signature field. Saving a name again replaces it. $0.001. Costs $0.001 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "expires_in_days": {
            "default": 30,
            "maximum": 90,
            "minimum": 1,
            "type": "integer"
          },
          "fields": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "In percent of the page height.",
                  "type": "number"
                },
                "kind": {
                  "enum": [
                    "signature",
                    "initials",
                    "name",
                    "date",
                    "text",
                    "checkbox"
                  ],
                  "type": "string"
                },
                "label": {
                  "description": "Shown to the signer, e.g. \"Company name\".",
                  "maxLength": 120,
                  "type": "string"
                },
                "page": {
                  "minimum": 1,
                  "type": "integer"
                },
                "required": {
                  "description": "Default true (false for checkboxes).",
                  "type": "boolean"
                },
                "role": {
                  "description": "Whose field: the role's number in roles, from 1.",
                  "minimum": 1,
                  "type": "integer"
                },
                "width": {
                  "description": "In percent of the page width.",
                  "type": "number"
                },
                "x": {
                  "description": "Left edge, in percent of the page width from the left.",
                  "type": "number"
                },
                "y": {
                  "description": "Top edge, in percent of the page height from the top.",
                  "type": "number"
                }
              },
              "required": [
                "role",
                "kind",
                "page",
                "x",
                "y",
                "width",
                "height"
              ],
              "type": "object"
            },
            "maxItems": 300,
            "minItems": 1,
            "type": "array"
          },
          "file_id": {
            "description": "A PDF in the file store.",
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          },
          "message": {
            "description": "The note to signers each time.",
            "maxLength": 2000,
            "type": "string"
          },
          "name": {
            "description": "The template's name, like service-agreement.",
            "maxLength": 60,
            "minLength": 2,
            "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$",
            "type": "string"
          },
          "order": {
            "default": "parallel",
            "enum": [
              "parallel",
              "sequential"
            ],
            "type": "string"
          },
          "roles": {
            "description": "Who signs, in order, e.g. [\"Customer\", \"Hansen & Voss\"].",
            "items": {
              "maxLength": 60,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "title": {
            "description": "What signers see, e.g. \"Service agreement\".",
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "file_id",
          "title",
          "roles",
          "fields"
        ],
        "type": "object"
      },
      "name": "esign_save_template"
    },
    {
      "description": "Send a PDF from the file store to up to 10 people to sign. A person's own document reaches the store through files_upload_link's page_url; a new one is written with documents_create_pdf (Markdown or HTML). Never type a PDF out as base64. Each signer gets an email with their own link, signs in the browser by drawing or typing, and everyone gets the signed PDF with a signing certificate. Without fields, a signature page with a signature and date line per signer is added at the end. With fields, place them yourself: page, x, y, width and height in percent of the page from its top-left corner (a signature field of about 30 x 5 fits a line). Every signer needs a signature field. Signers are emailed at once (parallel) or one after another (sequential). You hear how it goes as events (account_events, or a channel from notify_subscribe): esign.signed after each signature that leaves others to sign, naming who is left, esign.completed when everyone has signed, and esign.declined if someone declines. Costs $0.20 per call; nothing if it fails.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "expires_in_days": {
            "default": 30,
            "maximum": 90,
            "minimum": 1,
            "type": "integer"
          },
          "fields": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "In percent of the page height.",
                  "type": "number"
                },
                "kind": {
                  "enum": [
                    "signature",
                    "initials",
                    "name",
                    "date",
                    "text",
                    "checkbox"
                  ],
                  "type": "string"
                },
                "label": {
                  "description": "Shown to the signer, e.g. \"Company name\".",
                  "maxLength": 120,
                  "type": "string"
                },
                "page": {
                  "minimum": 1,
                  "type": "integer"
                },
                "required": {
                  "description": "Default true (false for checkboxes).",
                  "type": "boolean"
                },
                "signer": {
                  "description": "The signer's number in the signers list, from 1.",
                  "minimum": 1,
                  "type": "integer"
                },
                "width": {
                  "description": "In percent of the page width.",
                  "type": "number"
                },
                "x": {
                  "description": "Left edge, in percent of the page width from the left.",
                  "type": "number"
                },
                "y": {
                  "description": "Top edge, in percent of the page height from the top.",
                  "type": "number"
                }
              },
              "required": [
                "signer",
                "kind",
                "page",
                "x",
                "y",
                "width",
                "height"
              ],
              "type": "object"
            },
            "maxItems": 300,
            "type": "array"
          },
          "file_id": {
            "description": "A PDF in the file store.",
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          },
          "message": {
            "description": "A note to the signers, shown in the email and on the signing page.",
            "maxLength": 2000,
            "type": "string"
          },
          "order": {
            "default": "parallel",
            "enum": [
              "parallel",
              "sequential"
            ],
            "type": "string"
          },
          "signers": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "email": {
                  "maxLength": 254,
                  "type": "string"
                },
                "name": {
                  "maxLength": 120,
                  "type": "string"
                }
              },
              "required": [
                "name",
                "email"
              ],
              "type": "object"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "title": {
            "description": "What signers see, e.g. \"Service agreement\".",
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "file_id",
          "title",
          "signers"
        ],
        "type": "object"
      },
      "name": "esign_send"
    },
    {
      "description": "Send a saved template to new signers, one per role in the template's order: signers for one request, or sets for up to 50 at once (one request each, e.g. the same NDA to every new contractor). Each works like esign_send: emails, links, the signed PDF with its certificate. $0.20 per request sent. Costs $0.20 per request sent; nothing if none are found.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "expires_in_days": {
            "maximum": 90,
            "minimum": 1,
            "type": "integer"
          },
          "message": {
            "description": "Instead of the template's note.",
            "maxLength": 2000,
            "type": "string"
          },
          "sets": {
            "description": "Several requests at once: each set is one request's signers.",
            "items": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "email": {
                    "maxLength": 254,
                    "type": "string"
                  },
                  "name": {
                    "maxLength": 120,
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "email"
                ],
                "type": "object"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          },
          "signers": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "email": {
                  "maxLength": 254,
                  "type": "string"
                },
                "name": {
                  "maxLength": 120,
                  "type": "string"
                }
              },
              "required": [
                "name",
                "email"
              ],
              "type": "object"
            },
            "maxItems": 10,
            "minItems": 1,
            "type": "array"
          },
          "template": {
            "description": "The template's name, like service-agreement.",
            "maxLength": 60,
            "minLength": 2,
            "pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$",
            "type": "string"
          },
          "title": {
            "description": "Instead of the template's title.",
            "maxLength": 200,
            "type": "string"
          }
        },
        "required": [
          "template"
        ],
        "type": "object"
      },
      "name": "esign_send_template"
    },
    {
      "description": "The signing link of one signer, to hand over yourself (in a chat, say). Anyone with the link can sign as that person, so give it only to them. A key that only reads or drafts gets it as \"[redacted]\"; esign_remind emails everyone still to sign their own link. Free.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "maxLength": 254,
            "type": "string"
          },
          "request_id": {
            "description": "The request_id esign_send returned.",
            "maxLength": 36,
            "minLength": 36,
            "type": "string"
          }
        },
        "required": [
          "request_id",
          "email"
        ],
        "type": "object"
      },
      "name": "esign_signing_link"
    }
  ]
}

What the leaf hashes

{"body":"7b65591767c9cd1b2a7ea4e5a0e8073a9d643e6a9bda51a49f25dab6c48e7026","id":2625410,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793730895162790,"prev":null,"subject":"768e20c1-8c38-4deb-aa71-981b85a016fc","subject_kind":"endpoint"}

Proof

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

  1. 0x496af3a54cf6b61dab509b88db761912503d05f9b133132eb7da6052347bf672
  2. 0x33afb504cf85ae3d72e887ce01f171d7cbf9305d79dce0b9af55b961a35506ec
  3. 0x1492407fcf4ba6cf03f53fdf1c028fd441da6e83023bbf48bc43653334a254af
  4. 0xaf648b1a8cd13e28604cd044d684017b1fe305e6d32a43a611d25b860e9ef93c
  5. 0x19cd4394051fc15b4b770b49e443d67ba7a9b4268d542da8262cca4cd34e010c
  6. 0x417f9b212d4d6a4094566870f8586f3d06ce550c5cedda91c399822741e1d5a0
  7. 0x61e5335bb7b15b71779306a86426e1b4fafa4a94e4de909ecc06d55ea108a972
  8. 0x9ad93a7006fe3a24612e4b82fd96d680eed8ba5ac8ce7d40a0ababffff781776
  9. 0x946318a60279faad91105ac6985e6e8f76babc0195018b64e253364ac0bcf04a
  10. 0xf657bbe6f91724c5263c95d0c45c7d4a342e384dc0c7a62d964bd0c080e43455
  11. 0xf7fadfe409ccd6e3fffd7c24cf2184c9a4e68c4168d1d92b392f5fef819456fc
  12. 0xad3975ca058b9079797d664a2716c3026ce9b3cf3c17d86c40963ac4a531b020
  13. 0x4d71df216aea86c4926fd51f5108f2a3e02d1069065352831adc974ef8b478a1
  14. 0xc46a5ce352649d53ab9bec3f87fd24e34046a987433894bf1e8165e57badee79
  15. 0xd106fbd3b5dac57c72dd4fc8931f69b38fd5a542627e63d015b63dadf2188a2f
  16. 0x35ca4633a97853eefbf38aaf743dd7ff85a4c731ccc8e31a34fd826c3142d6ea
  17. 0x87df2ed9052c264d606c076742aa7e54b69fc8344b21e972ebcb19d020b7ecf3
  18. 0x012ad914f3f945da3b6b48eddc7a1388613e4afc04339deb76c609611864e9b9
  19. 0xe35032d4b064b015fe60638756eeb0bc24e7c7943586468d33349341ee0ed3d6
Day root
0xb646ffa569e24bf8336b0a15a9d98d0a2f1239f58e10c2b18a9d22e43343566a
Chained
0x35e926359fd19031c6b5e08fb3b44f2524386a57c8fdd353336c185603f53d43
Published
On Arc Testnet, block 70601990: 0xa5f9dadba13cde129126b950e64b815e6833cb8ff53b75026c9dbe769c3768c7

How to check it · This row as JSON