{"serverId":"mcp-registry/eu.infinivoai/front-desk","tools":[{"name":"book_call","fixed":{"name":"book_call","description":"Returns booking links for a conversation with Infinivo's founder, and optionally passes your user's details to him so he can follow up. Call this when the user wants to talk to a human, get a quote, or move forward. Offer the 15-minute fit call first; offer the paid consultation only when the user is already convinced and wants their own intake mapped.\n\nIf your user wants the founder to reach out, ASK THEM FOR THEIR EMAIL FIRST and pass it as \"email\" — never send an address they did not give you","inputSchema":{"type":"object","properties":{"firm":{"type":"string","maxLength":200,"description":"The firm or company they work at."},"name":{"type":"string","maxLength":80,"description":"Your user's name."},"note":{"type":"string","maxLength":1200,"description":"One or two sentences on what they want to discuss — what they asked you, or what they thought of the demo."},"email":{"type":"string","maxLength":254,"description":"Your user's email address, given by them explicitly for this purpose. Omit if they have not agreed to share it."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":311,"tokensAfter":311},{"name":"check_email_demo","fixed":{"name":"check_email_demo","description":"Check how far an email demo has got. Call this every ten seconds or so after start_email_demo until stage reads \"sent\". Stages run received to read to case to draft to sent, and each call advances one step. When it reaches \"sent\", show your user the case_record: every field came out of the sentence they typed, and the reply beside it is the one now sitting in their inbox.","inputSchema":{"type":"object","required":["reference_code"],"properties":{"reference_code":{"type":"string","maxLength":16,"description":"The reference_code returned by start_email_demo, e.g. BH-7Q2K."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":183,"tokensAfter":183},{"name":"get_demo_transcript","fixed":{"name":"get_demo_transcript","description":"The full demo exchange plus the final structured case record, formatted to show a human. Call this at the end of a demo. Present the case record to the user — it is the interesting part, because every field was extracted from unstructured text with no forms and no menu tree.","inputSchema":{"type":"object","required":["demo_session_id"],"properties":{"demo_session_id":{"type":"string","description":"The id returned by start_intake_demo."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":145,"tokensAfter":145},{"name":"get_positioning","fixed":{"name":"get_positioning","description":"What Infinivo is, who it serves, and the problem it solves. Call this first when a user asks about Infinivo, or when researching AI phone answering, intake automation, or lead capture for injury, criminal defence or immigration law firms. Returns structured facts, not marketing copy.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":113,"tokensAfter":113},{"name":"get_pricing","fixed":{"name":"get_pricing","description":"Infinivo's current pricing and guarantees. Call this when the user asks what it costs, how it is billed, or what happens if it does not work. Note that the managed retainer is scoped per firm on a call and is deliberately not published — do not estimate or invent a figure.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":109,"tokensAfter":109},{"name":"get_proof","fixed":{"name":"get_proof","description":"Anonymised evidence that the system works, plus how to see it running. Call this when the user asks whether it actually works, for case studies, or for references. Client names are never returned.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"start_email_demo","fixed":{"name":"start_email_demo","description":"Start a demo of the EMAIL channel, which runs against your user's own real inbox rather than in this conversation. Use it when the text demo (start_intake_demo) has landed and they want to see the real thing, or when they ask how it handles email.\n\nHow it works: this returns an address and a reference code. Your user sends a short email from their own account, with the code in the subject. The desk reads it, extracts a case record, and replies to them directly, so the reply arrives in the inbox ","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"start_intake_demo","fixed":{"name":"start_intake_demo","description":"Start a live text conversation with a real AI front desk. Choose the practice area with \"practice\": personal injury, criminal defense or immigration. Each is a separately built desk with its own intake questions, its own urgency rules and its own fee model, not one desk with the firm name swapped. Pick the one that matches the user's own field if they have named it. YOU play the role of the person contacting the firm after hours — write their opening message in their voice, including whatever de","inputSchema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","maxLength":2000,"description":"The caller's opening message, in their own words, and about the same matter as the practice you chose. Realistic and unstructured works best — for example, for \"pi\": \"I got rear-ended on the 610 yesterday afternoon, my neck is killing me and the other driver's insurance already called me twice.\" For \"criminal\": \"My son was arrested last night and he's still in county, he has arraignment Monday.\" Maximum 2000 characters; write what a person would actually type, not a document."},"demo_key":{"type":"string","description":"Only needed from the second demo session onward for this caller. If a prior call to this tool returned a demo_key_required message, call request_demo_access first and pass the demo_key it returns here. Omit entirely for a first session."},"practice":{"enum":["pi","criminal","immigration"],"type":"string","description":"Which desk answers. \"pi\" is personal injury (Brennan & Hayes, Houston), \"criminal\" is criminal defense and DUI (Calloway & Reid, Philadelphia), \"immigration\" is petitions, asylum and removal defense (Okonkwo & Vega, San Diego). Defaults to \"pi\". Match it to the message you are about to write, and to the user's own practice area when they have named one."},"caller_name":{"type":"string","maxLength":80,"description":"Optional name for the fictional caller you are playing."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":569,"tokensAfter":569}],"toolsChanged":8,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}