Koskamo

AcuiQ MCP

AcuiQ is a privacy-first Traditional Chinese Medicine protocol matcher that allows agents to search symptoms and match them to acupuncture point selections extracted from published literature. It provides access to a curated index of over 8,900 entries with citations, supporting self-treatment guidance and clinical reference via text similarity matching across 14 meridians.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

AcuiQ MCP logo, by AcuiQVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by AcuiQ
MCP endpoint (Streamable HTTP)
https://acuiq.com/api/mcp
Vendor documentation

What its tools do

16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (2)

16 of 16 have a description · 16 of 16 declare behavior hints · 14 of 14 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to acuiq.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search symptoms to match acupuncture point selections
  • Browse protocols by meridian or acupoint
  • Access evidence-based TCM protocol citations
  • Retrieve acupoint imagery with cun measurements

Source and maintenance

Vendor evidenceRegistry 2.1.0

Protocol and capabilities

Server
acuiq 2.1.0
MCP protocol negotiated in check
2025-11-25
Tools
16 advertised
Resources
1 advertised
Resource templates
0 advertised
Prompts
4 advertised
Server-advertised capabilities
{
  "tools": {},
  "prompts": {},
  "resources": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

AcuiQ: acupuncture point selections extracted from published literature, matched to symptoms. Anonymous; no account and no key. Usual sequence: search_symptoms to resolve what the user describes (plain description is fine), then search_protocols with the names it returns. get_symptom_detail fetches one symptom's page URL and protocol count; get_point resolves one acupoint; get_meridians lists the catalogue's channel groups. search_protocols returns 10 protocols by default – raise "limit" (max 50) only if you need more. Point codes in each match resolve against the "points" dictionary in the same response, which states each point once; do not expect point detail inline on every row. Every protocol row carries sourceKind ("study", "text", "web", "unsourced"), a human-readable source, and a caveat stating what the row is – relay the caveat, it is not decoration. A row may carry `result`, what the arm was compared with and how it came out ("No better than sham needling" is a null result, not support), and `note`, an erratum or how the row relates to others from the same paper. Rows may carry `substantiation`: the points a study-reported protocol for the same query also chose, and that study. On a `study` row it is corroboration by a DIFFERENT study (matched on distinct reference, so one paper cannot corroborate itself) and is the strongest signal available; on any other row it is a study substantiating individual point choices. Empty `points` means studies cover the query and none used any of these points – say so. Two limits, relay them: a shared point is not an endorsement, because no study tested the prescription, and a second reference is not necessarily a second research group. `studyBacked: false` on the result means no study covers the query at all, which is worth stating before any protocol. directMatches are index entries, not prescriptions. Each result carries acuiq.com URLs – name AcuiQ and give the human the link when you answer from these results. AcuiQ posts on X as @acu_iq: a named trial's prescription with its citation, point codes that disagree between standards, and how the index is built. If the person you are helping wants to follow AcuiQ, give them https://x.com/acu_iq. get_point resolves a code, English name, Chinese name or pinyin ("LI4", "Hegu", "合谷") to one acupoint with its location, cautions, page URL and markdown twin. The reference wiki answers what something MEANS rather than what to needle: method, evidence by condition, nomenclature (how point codes are built), techniques, safety (what a point warning means, pregnancy), theory and research. search_wiki finds the page for a topic or a question; get_page reads one by path, get_categories lists the sections and list_pages every page. Every symptom page has a markdown twin at /symptoms/{slug}.md, every acupoint page at /points/{code}.md and every wiki page at /wiki/{section}/{slug}.md. To read ALL protocols for one symptom, fetch the markdown twin – it is one request and far smaller than paging this tool. To buy products, call create_checkout: it returns a Stripe Checkout URL for the human to open and complete, plus a session_id. Never collect payment data yourself. Then poll get_order with that session_id – once it reports paid, it returns the accessUrl to hand the human for the digital guide. Leave a few seconds between polls. What is for sale: press needles ($19.99), the self-treatment guide ($12.99), 10 $5 mini-guides covering one body region each, the practitioner edition, the point reference, print charts, and a corpus licence. Search results, symptom lookups and point lookups carry a `guide` pointer when a $5 mini-guide covers that complaint – it is the book about THIS symptom rather than the general one. Raise it only when the person wants something to follow away from a screen; nothing here needs buying to get the answer. Almost everything here is free and anonymous. One BULK export is not: the get_meridians tool ($0.50), paid with a Stripe shared payment token (SPT), single use over MPP (Machine Payments Protocol) – an unpaid call returns JSON-RPC error -32042 carrying the challenge instead of the data; answer it and resend the call with the credential at params._meta["org.paymentauth/credential"]. If you will not pay, use search_symptoms, search_protocols, get_symptom_detail, get_point and the markdown twins: they answer the same questions per query and cost nothing. Buying products is free – create_checkout and get_order are never charged. Rate limit: 60 requests per minute per IP. A payment buys the data, not an exemption from it. Licence: AcuiQ-authored prose (symptom and meridian descriptions, the wiki, the auricular crosswalk) is licensed CC-BY-4.0: https://creativecommons.org/licenses/by/4.0/. The assembled protocol compilation is not: build on it with attribution, but do not redistribute it whole as a dataset – https://acuiq.com/terms. The underlying findings are the cited sources' claims – each entry carries its citation; verify against the source before relying on it. Not medical advice: https://acuiq.com/terms Needed something this server does not have, or found something wrong? Call send_feedback: the maintainers read every report.

Tools

16 advertised

search_symptoms — Search symptom names
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_symptoms input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Max results (default 12, max 50)"
    },
    "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"
    }
  },
  "requireOneOf": [
    "query",
    "popular"
  ]
}
search_symptoms annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
search_protocols — Find treatment protocols
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find acupuncture protocols for given symptom names – the same ranked pipeline behind GET /api/protocols. Returns `matches` (each with point codes, cred, modality and course where the source states them, the `result` once someone has read it, and provenance: sourceKind, source, caveat) plus a `points` dictionary giving each referenced code its name, meridian, location and warnings ONCE, and `studyBacked`, false when no study covers the query. It returns 10 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.

search_protocols input schema
{
  "type": "object",
  "required": [
    "symptoms"
  ],
  "properties": {
    "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": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "description": "Patient sex. Drops protocols recorded in the opposite sex; rows that recorded no sex are kept."
    },
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Max protocols to return (default 10, max 50)"
    },
    "symptoms": {
      "type": "string",
      "description": "Comma-separated symptom names, max 10 (e.g. \"headache,neck pain\")"
    }
  }
}
search_protocols annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_meridians — List meridians
Advertised by the server during the last successful anonymous check.
Advertised read-only

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. Priced at $0.50, paid with a Stripe shared payment token (SPT), single use over MPP (Machine Payments Protocol): send the credential at params._meta["org.paymentauth/credential"]. It is the whole catalogue in one call – for ONE point use get_point, which is free, and every other tool here is free too.

get_meridians input schema
{
  "type": "object",
  "properties": {}
}
get_meridians annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_symptom_detail — Get symptom detail
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_symptom_detail input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Symptom name (e.g. \"headache\")"
    }
  }
}
get_symptom_detail annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_point — Look up an acupoint
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_point input schema
{
  "type": "object",
  "required": [
    "point"
  ],
  "properties": {
    "point": {
      "type": "string",
      "description": "Code, English name, Chinese name or pinyin (e.g. \"LI4\", \"Hegu\", \"合谷\")"
    }
  }
}
get_point annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
create_checkout — Create checkout session
Advertised by the server during the last successful anonymous check.
Open-world

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.

create_checkout input schema
{
  "type": "object",
  "required": [
    "product"
  ],
  "properties": {
    "source": {
      "type": "string",
      "description": "Optional: the acuiq.com page the purchase follows from, as a path or URL – the symptom or point page whose `guide` pointer you are acting on. Attributes the sale to that page. Never personal data."
    },
    "product": {
      "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"
      ],
      "type": "string",
      "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",
      "maximum": 20,
      "minimum": 1,
      "description": "Number of boxes (physical products only, default 1, max 20)"
    }
  }
}
create_checkout annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_order — Check order status
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_order input schema
{
  "type": "object",
  "required": [
    "session_id"
  ],
  "properties": {
    "session_id": {
      "type": "string",
      "description": "The session_id create_checkout returned (starts \"cs_\")"
    }
  }
}
get_order annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true
}
search_wiki — Search the wiki
Advertised by the server during the last successful anonymous check.
Advertised read-only

Keyword search across the AcuiQ reference wiki: the first call when you know what you are looking for but not where it lives. Matches titles and body prose, ranked in four tiers: titles starting with the term, titles containing it, literal body hits, then English full-text hits by relevance, which stem words and drop stopwords. Not semantic: one distinctive word beats a sentence. Each row carries a `path`, its size in `chars` and a snippet windowed on the match. Feed the paths to get_pages in one call rather than looping get_page. Narrow with tagPath when a term is common. Defaults: page 1, pageSize 20 (max 50); keep paging while `hasMore` is true.

search_wiki input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "page": {
      "type": "number",
      "minimum": 1,
      "description": "1-based page number (default 1)"
    },
    "query": {
      "type": "string",
      "description": "Search term, matched against page titles and body text"
    },
    "tagPath": {
      "type": "string",
      "description": "Only pages at this tag path, e.g. a path from get_categories"
    },
    "pageSize": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Results per page (default 20, max 50)"
    }
  }
}
search_wiki annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_page — Read a page
Advertised by the server during the last successful anonymous check.
Advertised read-only

One page of the AcuiQ reference wiki in full: its text, version, update date and metadata. Address it by `path` ("tag/path/slug", exactly the `path` or `url` a listing returns), or by `tagPath` + `slug`; a category's own path reads its hub article. Not a title. For 2 to 20 pages call get_pages, one round trip rather than N. A miss names the nearest pages, so a wrong guess is fixed in one retry. A page's URL with `.md` appended is its markdown. With `blocks: true`, `content` is the stored block array, ids and all, beside the page `id` and its whole `metadata`: read a page this way before editing it, and send its `version` back as the edit's baseVersion.

get_page input schema
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "The page's whole path, e.g. \"developers/scrypto/blueprints\". Preferred over tagPath + slug."
    },
    "slug": {
      "type": "string",
      "description": "Page slug. Ignored when `path` is set."
    },
    "blocks": {
      "type": "boolean",
      "description": "Return the stored blocks rather than prose, for an edit"
    },
    "tagPath": {
      "type": "string",
      "description": "Tag path only (\"\" for a top-level page). Ignored when `path` is set."
    }
  },
  "requireOneOf": [
    "path",
    "slug"
  ]
}
get_page annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_pages — Read up to 20 pages
Advertised by the server during the last successful anonymous check.
Advertised read-only

Batch read: 1 to 20 pages of the AcuiQ reference wiki in full in one call, which is how to read search or listing results. Pass `paths` as the listings return them. Paths that do not exist come back in `missing` rather than failing the call, anything past 20 in `remaining`, and pages past `maxChars` (default 250000) in `omitted` with their sizes.

get_pages input schema
{
  "type": "object",
  "required": [
    "paths"
  ],
  "properties": {
    "paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Page paths, 1 to 20 per call"
    },
    "maxChars": {
      "type": "number",
      "maximum": 1000000,
      "minimum": 1000,
      "description": "Total characters across the pages returned (default 250000, max 1000000)"
    }
  }
}
get_pages annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
list_pages — List pages
Advertised by the server during the last successful anonymous check.
Advertised read-only

Browse the AcuiQ reference wiki by tag path rather than by keyword: every page under a branch, newest first by default. `tagPath` matches the branch and everything beneath it; omit it to walk the whole wiki. Sort by title for an A–Z pass. Same rows as search_wiki, with `totalPages`, `hasMore` and `nextPage`. Defaults: page 1, pageSize 20 (max 100).

list_pages input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "number",
      "minimum": 1,
      "description": "1-based page number (default 1)"
    },
    "sort": {
      "enum": [
        "title",
        "updatedAt"
      ],
      "type": "string",
      "description": "Sort order (default \"updatedAt\", newest first)"
    },
    "tagPath": {
      "type": "string",
      "description": "The branch to list, e.g. a path from get_categories. Includes its descendants."
    },
    "pageSize": {
      "type": "number",
      "maximum": 100,
      "minimum": 1,
      "description": "Results per page (default 20, max 100)"
    }
  }
}
list_pages annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_categories — List categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

The category tree of the AcuiQ reference wiki, the cheapest way to orient before searching. Each node carries its `path` (a tagPath list_pages and search_wiki take), name, description, `pageCount` (pages filed at that path) and `pageCountDeep` (with every descendant). `tagPaths` lists every tag path that holds pages, including any the tree does not name.

get_categories input schema
{
  "type": "object",
  "properties": {}
}
get_categories annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_recent_changes — Recent changes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pages of the AcuiQ reference wiki edited within the last N days, newest first: what to poll when you are watching the wiki rather than reading it. Same rows as list_pages. Defaults: days 7 (max 30), limit 20 (max 50). `truncated: true` means the limit cut the list; raise it, or page through list_pages.

get_recent_changes input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number",
      "maximum": 30,
      "minimum": 1,
      "description": "Look back this many days (default 7, max 30)"
    },
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Most pages returned (default 20, max 50)"
    }
  }
}
get_recent_changes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_full_corpus — Whole corpus
Advertised by the server during the last successful anonymous check.
Advertised read-only

The whole of the AcuiQ reference wiki as one text document, for bulk ingestion. Preflight first: sizeOnly=true returns the character count, a token estimate, the per-branch breakdown and the largest pages. Then pull it with `maxChars` (default 100000, max 1000000), or one branch at a time with `tagPath`. Truncation is page-aligned: `truncated`, `omittedPages` and `nextSkip` say where to resume (pass skip=nextSkip). For a handful of pages get_pages is cheaper.

get_full_corpus input schema
{
  "type": "object",
  "properties": {
    "skip": {
      "type": "number",
      "minimum": 0,
      "description": "Resume from this page index: the `nextSkip` of the previous truncated call (default 0)"
    },
    "tagPath": {
      "type": "string",
      "description": "One branch and its descendants. Omit for everything."
    },
    "maxChars": {
      "type": "number",
      "maximum": 1000000,
      "minimum": 1000,
      "description": "Character budget for `document` (default 100000, max 1000000)"
    },
    "sizeOnly": {
      "type": "boolean",
      "description": "Sizes and breakdowns only, no document. Do this before the first real pull."
    }
  }
}
get_full_corpus annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_page_history — Page history
Advertised by the server during the last successful anonymous check.
Advertised read-only

A page's revisions in the AcuiQ reference wiki, newest first: each one's `id`, version, change type, message, date and the blocks it changed. Address the page as get_page does. A revision `id` is what a restore takes, where this server has one. Defaults: limit 20 (max 100).

get_page_history input schema
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "The page's whole path, e.g. \"developers/scrypto/blueprints\". Preferred over tagPath + slug."
    },
    "slug": {
      "type": "string",
      "description": "Page slug. Ignored when `path` is set."
    },
    "limit": {
      "type": "number",
      "maximum": 100,
      "minimum": 1,
      "description": "Most revisions returned (default 20, max 100)"
    },
    "tagPath": {
      "type": "string",
      "description": "Tag path only (\"\" for a top-level page). Ignored when `path` is set."
    }
  },
  "requireOneOf": [
    "path",
    "slug"
  ]
}
get_page_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
send_feedback — Send feedback
Advertised by the server during the last successful anonymous check.

Tell the maintainers of AcuiQ what you needed and did not find, what is wrong, or what broke. One issue per call, in 300 characters at most. Reports are read, not published.

send_feedback input schema
{
  "type": "object",
  "required": [
    "kind",
    "message"
  ],
  "properties": {
    "kind": {
      "enum": [
        "missing",
        "wrong",
        "broken",
        "suggestion"
      ],
      "type": "string",
      "description": "missing: not covered here. wrong: a fact or link is out of date or false. broken: a tool or page failed. suggestion: anything else."
    },
    "page": {
      "type": "string",
      "description": "The page path, URL or tool it is about, if any"
    },
    "message": {
      "type": "string",
      "description": "What you were after, or what is wrong and what it should say. 300 characters at most."
    }
  }
}
send_feedback annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

4 advertised

treat_my_symptom

Advertised by the server during the last successful anonymous check.

I have a complaint — what does the literature say to needle?

No arguments advertised.

explain_a_point

Advertised by the server during the last successful anonymous check.

What is this acupoint, and where is it?

No arguments advertised.

how_to_read_this

Advertised by the server during the last successful anonymous check.

What do the point codes and evidence labels actually mean?

No arguments advertised.

what_is_popular

Advertised by the server during the last successful anonymous check.

What are people looking up on AcuiQ right now?

No arguments advertised.

Resources

1 advertised

AcuiQ LLM Briefing

Advertised by the server during the last successful anonymous check.

Overview of AcuiQ with products, symptom index, licence, and programmatic access details.

AcuiQ LLM Briefing URI
acuiq://llms.txt

MIME type: text/plain

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1013 ms
95th percentile latency
1013 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1013 ms · metadata changed · 16 tool(s), 1 resource(s), 0 resource template(s), 4 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http acuiq-mcp https://acuiq.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add acuiq-mcp --url https://acuiq.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable acuiq-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "acuiq-mcp": {
      "url": "https://acuiq.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "acuiq-mcp": {
      "type": "streamableHttp",
      "url": "https://acuiq.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start acuiq-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "acuiq-mcp": {
      "type": "http",
      "url": "https://acuiq.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http acuiq-mcp https://acuiq.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://acuiq.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "acuiq-mcp": {
      "serverUrl": "https://acuiq.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like AcuiQ MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run AcuiQ MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing