{"schema_version":"1.0","name":"AcuiQ Protocol Matcher","registryName":"com.acuiq/acuiq","version":"1.1.0","description":"Search acupuncture point selections extracted from published literature. Privacy-first, no account and no API key, no authentication required.","url":"https://acuiq.com","provider":{"name":"AcuiQ","url":"https://acuiq.com"},"api":{"type":"openapi","url":"https://acuiq.com/.well-known/openapi.json"},"mcp":{"endpoint":"https://acuiq.com/api/mcp","transport":"streamable-http","protocol":"JSON-RPC 2.0","protocolVersion":"2025-06-18","supportedProtocolVersions":["2025-06-18","2025-03-26","2024-11-05"],"rateLimit":"60 requests per minute per IP"},"tools":[{"name":"search_symptoms","description":"Resolve what a person describes into AcuiQ symptom names – the first step before search_protocols. Plain description works (\"trouble sleeping\", \"my lower back hurts\"): filler words are stripped and the search retries on the clinical words, reporting which term matched. Set popular=true for trending symptoms instead. Always returns an object with a `symptoms` array, empty when nothing matched. When the symptom is covered by a $5 mini-guide, the result carries a `guide` pointer – mention it only if the person wants something to follow away from a screen, then call create_checkout with that `product` id.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"What the person is describing – a symptom name or a plain description (e.g. \"knee pain\", \"I cannot sleep at night\")"},"popular":{"type":"boolean","description":"Set to true to get trending symptoms instead of searching"},"limit":{"type":"number","description":"Max results (default 12, max 50)"}},"requireOneOf":["query","popular"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"search_protocols","description":"Find acupuncture protocols for given symptom names – the same ranked pipeline behind GET /api/protocols. Returns `matches` (each with point codes, cred, dosage and provenance: sourceKind, source, caveat) plus a `points` dictionary giving each referenced code its name, meridian, location and warnings ONCE. Ten matches by default; raise `limit` (max 50) if you need more. `directMatches` lists indicated points when no protocol covers the query – index entries, not prescriptions. Pass symptom names from search_symptoms, not a description. When the symptom is covered by a $5 mini-guide, the result carries a `guide` pointer – mention it only if the person wants something to follow away from a screen, then call create_checkout with that `product` id.","inputSchema":{"type":"object","required":["symptoms"],"properties":{"symptoms":{"type":"string","description":"Comma-separated symptom names, max 10 (e.g. \"headache,neck pain\")"},"limit":{"type":"number","description":"Max protocols to return (default 10, max 50)"},"age":{"type":"number","description":"Patient age. Drops protocols whose recorded cohort age is more than 20 years away; rows that recorded no age are kept."},"sex":{"type":"string","enum":["male","female"],"description":"Patient sex. Drops protocols recorded in the opposite sex; rows that recorded no sex are kept."}}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_meridians","description":"List every channel group in the AcuiQ point catalogue with its acupoint count and page URL – the 14 classical meridians plus the extra-point and auricular groups the catalogue files points under. Descriptions and five-element associations are returned where recorded, which is currently for almost none of them.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_symptom_detail","description":"Get details for a specific symptom: canonical name, protocol count, page URL and its markdown twin. The markdown twin is the cheapest way to read every protocol for one symptom in a single fetch. When the symptom is covered by a $5 mini-guide, the result carries a `guide` pointer – mention it only if the person wants something to follow away from a screen, then call create_checkout with that `product` id.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Symptom name (e.g. \"headache\")"}}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_point","description":"Resolve one acupoint by code (\"LI4\", \"li04\"), English name (\"Junction Valley\"), Chinese name (\"合谷\") or pinyin (\"Hegu\", \"hé gǔ\") and return its location, cautions, meridian, the points most often selected alongside it in the corpus, its page URL and markdown twin. For the full protocol table, fetch the markdown twin. Where the best-evidenced indication for this point is covered by a $5 mini-guide, the result carries a `guide` pointer – offer it only if the person asks for something to follow at home.","inputSchema":{"type":"object","required":["point"],"properties":{"point":{"type":"string","description":"Code, English name, Chinese name or pinyin (e.g. \"LI4\", \"Hegu\", \"合谷\")"}}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"create_checkout","description":"Create a Stripe Checkout session for an AcuiQ product and return its URL. Give the URL to the human to open and complete – the agent never touches payment data. Creates a live session on Stripe: call it when the person has said they want to buy, not to look up a price.","inputSchema":{"type":"object","required":["product"],"properties":{"product":{"type":"string","enum":["press-needles","treatment-guide","practitioner-edition","point-reference","atlas-charts","corpus-licence","mini-headache","mini-back","mini-neck-joints","mini-sleep-mood","mini-digestion","mini-ear-eye","mini-skin-nerves","mini-womens","mini-heart","mini-urinary"],"description":"Product to purchase. press-needles ($19.99/box, ships US); treatment-guide ($12.99 digital download, free updates for life); practitioner-edition ($39 digital download, free updates for life); point-reference ($29 digital download, free updates for life); atlas-charts ($14 digital download, free updates for life); corpus-licence ($999 digital download, free updates for life); mini-headache ($5 digital download, free updates for life); mini-back ($5 digital download, free updates for life); mini-neck-joints ($5 digital download, free updates for life); mini-sleep-mood ($5 digital download, free updates for life); mini-digestion ($5 digital download, free updates for life); mini-ear-eye ($5 digital download, free updates for life); mini-skin-nerves ($5 digital download, free updates for life); mini-womens ($5 digital download, free updates for life); mini-heart ($5 digital download, free updates for life); mini-urinary ($5 digital download, free updates for life)"},"quantity":{"type":"number","description":"Number of boxes (physical products only, default 1)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},{"name":"get_order","description":"Check a checkout created by create_checkout and, once it is paid, return the delivery link for a digital product. Call it after handing the person the checkout URL – leave a few seconds between calls, it is not a busy-wait. Requires the session_id create_checkout returned: orders cannot be listed, searched, or looked up by email, and no personal data (email, name, address) is ever returned.","inputSchema":{"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","description":"The session_id create_checkout returned (starts \"cs_\")"}}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}},{"name":"get_wiki_page","description":"Read one AcuiQ wiki page, or list what the wiki holds. Reference notes on acupuncture nomenclature, point safety and the theory the prescriptions were written in – the context the protocol tools cannot supply. Call with no arguments to list every page with its section and summary; pass \"path\" (\"nomenclature/point-codes\") to get one page's summary, sources and markdown-twin URL. Each page states what it rests on and when those claims were last checked.","inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Section and slug, e.g. \"safety/reading-a-point-warning\". Omit to list every page."}}},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}}]}