Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Cromanion

REMOTE · CROMANION.COM · SCANNED SEP 20

Raise conversion on a site you manage. No API key, no human to wake — you prove the domain.

Available components

+4 this week 73 Trust /100

Recent critical change

Authorization (7 Sept 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability80
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4970 tokens (~184/item across 27 items; 26 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management35
  • Stability check failed: schema churn in the 14 days we've observed: 2 tool removals, 0 breaking changes, 0 auth/transport breaks, 11 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 26 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Cromanion MCP server?

Cromanion is a hosted endpoint at https://cromanion.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · cromanion.com

# add to Claude Code
claude mcp add --transport http com-cromanion-cromanion 'https://cromanion.com/api/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-cromanion-cromanion": {
      "url": "https://cromanion.com/api/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-cromanion-cromanion": {
      "type": "http",
      "url": "https://cromanion.com/api/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-cromanion-cromanion]
url = "https://cromanion.com/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-cromanion-cromanion": {
      "type": "remote",
      "url": "https://cromanion.com/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-cromanion-cromanion --url 'https://cromanion.com/api/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-cromanion-cromanion:
    url: "https://cromanion.com/api/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-cromanion-cromanion": {
      "Transport": "http",
      "Url": "https://cromanion.com/api/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-cromanion-cromanion -t streamable-http -u 'https://cromanion.com/api/mcp'
// mcp.json
{
  "mcpServers": {
    "com-cromanion-cromanion": {
      "type": "http",
      "url": "https://cromanion.com/api/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 32 to 35.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 25 to 28.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 18 to 22.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 12 to 15.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 5 to 8.

  • 7 Sept 26 +4
    • Authorization: unverified → fail critical
    • Stability: unverified → fail security
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “cromanion_exclusions”, which the server declares destructive security
    • New tool “cromanion_set_playbook”, which the server declares destructive security
    • Tool “cromanion_open_claim” rewrote its description, which is the text the model reads security
    • Tool “cromanion_add_goal” rewrote its description, which is the text the model reads security
    • Tool “cromanion_claim_domain” is now declared destructive security
    • Tool “cromanion_lead_destination” is now declared destructive security
    • Tool “cromanion_set_holdout” is now declared destructive security
    • Tool “cromanion_set_voice” is now declared destructive security
    • Tool “cromanion_surfaces” is now declared destructive security
    • Schema quality: 115 → 184 functional
    • Schema quality: 115 → 188 functional
    • Schema quality: 115 → 137 functional
    • Tool coverage: 70% → 100% functional
    • Stability: unverified → 0.03 functional
    • MCP protocol: fail → pass functional
    • Tool “cromanion_add_goal” now declares an output schema functional
    • Tool “cromanion_claim_domain” now declares an output schema functional
    • Tool “cromanion_crawl” now declares an output schema functional
    • Tool “cromanion_decide” now declares an output schema functional
    • Tool “cromanion_grants” now declares an output schema functional
    • Tool “cromanion_impact” now declares an output schema functional
    • Tool “cromanion_lead_destination” now declares an output schema functional
    • Tool “cromanion_open_claim” now declares an output schema functional
    • Tool “cromanion_pending” now declares an output schema functional
    • Tool “cromanion_set_brand” now declares an output schema functional
    • Tool “cromanion_set_holdout” now declares an output schema functional
    • Tool “cromanion_set_mode” now declares an output schema functional
    • Tool “cromanion_set_voice” now declares an output schema functional
    • Tool “cromanion_site_status” now declares an output schema functional
    • Tool “cromanion_surfaces” now declares an output schema functional
    • Tool “cromanion_upgrade_link” now declares an output schema functional
    • Tool “cromanion_verify_claim” now declares an output schema functional
    • First check of Schema quality: 100 functional
    • First check of Tool coverage: 100 functional
    • MCP protocol version: 2025-06-18 → 2026-07-28 functional
    • Server version: 0.4.0 → 0.4.1 functional
    • Server version: 0.3.1 → 0.4.0 functional
    • This server's schema is too large to store in full, so we cannot compare its tools day to day functional
    • New tool “cromanion_ask_human” functional
    • New tool “cromanion_config” functional
    • New tool “cromanion_errors” functional
    • New tool “cromanion_install_check” functional
    • New tool “cromanion_mark_read” functional
    • “cromanion_add_goal” added an optional parameter “siteId” cosmetic
    • “cromanion_ask_human” added an optional parameter “siteId” cosmetic
    • “cromanion_claim_domain” added an optional parameter “siteId” cosmetic
    • “cromanion_config” added an optional parameter “siteId” cosmetic
    • “cromanion_crawl” added an optional parameter “siteId” cosmetic
    • “cromanion_decide” added an optional parameter “siteId” cosmetic
    • “cromanion_exclusions” added an optional parameter “siteId” cosmetic
    • “cromanion_impact” added an optional parameter “siteId” cosmetic
    • “cromanion_install_check” added an optional parameter “siteId” cosmetic
    • “cromanion_lead_destination” added an optional parameter “siteId” cosmetic
    • “cromanion_mark_read” added an optional parameter “siteId” cosmetic
    • “cromanion_pending” added an optional parameter “siteId” cosmetic
    • “cromanion_set_brand” added an optional parameter “siteId” cosmetic
    • “cromanion_set_holdout” added an optional parameter “siteId” cosmetic
    • “cromanion_set_mode” added an optional parameter “siteId” cosmetic
    • “cromanion_set_playbook” added an optional parameter “siteId” cosmetic
    • “cromanion_set_voice” added an optional parameter “siteId” cosmetic
    • “cromanion_site_status” added an optional parameter “siteId” cosmetic
    • “cromanion_surfaces” added an optional parameter “siteId” cosmetic
    • “cromanion_upgrade_link” added an optional parameter “siteId” cosmetic
    • “cromanion_add_goal” added an optional parameter “goalId” cosmetic
    • “cromanion_add_goal” added an optional parameter “priority” cosmetic
    • “cromanion_add_goal” added an optional parameter “remove” cosmetic
    • “cromanion_decide” added an optional parameter “all” cosmetic
    • “cromanion_decide” reworded the description of “decision” cosmetic
    • “cromanion_decide” reworded the description of “id” cosmetic
    • “cromanion_decide” reworded the description of “kind” cosmetic
    • “cromanion_lead_destination” reworded the description of “kind” cosmetic
    • “cromanion_set_brand” reworded the description of “bodyFont” cosmetic
    • “cromanion_set_brand” reworded the description of “headingFont” cosmetic
    • “cromanion_set_mode” reworded the description of “customizeMode” cosmetic
    • “cromanion_set_mode” reworded the description of “mode” cosmetic
    • “cromanion_upgrade_link” reworded the description of “plan” cosmetic
    • “cromanion_add_goal” made “type” optional cosmetic
    • “cromanion_decide” made “id” optional cosmetic
  • 6 Sept 26 64

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://cromanion.com/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=cromanion.com CN=YR1,O=Let's Encrypt,C=US 17 Sept 2026 16 Dec 2026 RSA 2048 SHA256-RSA 67fe17ec2575f65b3808de1148d2a36cb67
SANs: cromanion.com
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of cromanion.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
cromanion.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://cromanion.com/api/mcp Verified 200
http (plaintext) http://cromanion.com/api/mcp HTTPS enforced 308 https://cromanion.com/api/mcp
MCP tools · 26 exposed · ~4,597 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cromanion_add_goal ~360

Define a conversion to count, or change one you already defined. This is not one more setting: it is the numerator of every impact figure your human will read, so a goal that fires on every pageview makes the agent look brilliant and tells them nothing. Send `type` and `value` to create — idempotent, the same matcher twice creates one goal. Send `goalId` instead to rename, reprioritise or price an existing one, or with `remove: true` to stop counting it. Needs the goals permission.

NameTypeReqDescription
dollarValuestringOptional worth of one conversion, for revenue figures.
goalIdstringChange an EXISTING goal instead of creating one. Ids come from cromanion_config. With `remove: true` it stops counting that conversion; otherwise it applies the label, priority or dollarValue you sen…
labelstringWhat your human will call it. Defaults to something readable.
prioritynumberWith goalId: 1 is the primary goal, ascending. Rejected rather than clamped if out of range.
removebooleanWith goalId: stop counting that conversion. Nothing already measured is rewritten.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
typestringMatcher: css_click, form_submit, page_view, mailto, tel, outbound, scroll_depth, dwell, custom_event.
valuestringWhat the matcher matches — a selector, a path, a percentage, seconds.
NameTypeReqDescription
createdbooleanPresent on a create. False when this site already counted that conversion — the call succeeded either way and nothing was duplicated.
goalIdstringyes
labelstringWhat your human sees it called, after the change.
notestringPresent when nothing changed, saying why.
okbooleanyes
removedbooleanPresent when you sent remove: true.
updatedarrayPresent on an edit: which fields changed.

No examples provided.

cromanion_add_site ~197

Add another of your human's sites to their account, on a plan that allows more than one. Reaching a site they already own needs no proof — they added it. CREATING one does: nothing about holding a credential for one domain says anything about another, so publish this claim's challenge on the new domain first, the same three ways that proved the first. Refused if your human restricted this credential to specific sites: a list they set should not grow by your action — use cromanion_ask_human. Needs the site-config permission.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
siteUrlstringyesThe public https URL of the site to add, e.g. https://second-shop.com.
NameTypeReqDescription
installobjectyesThe snippet for THIS site — a different key from the first one.
notestring
okbooleanyes
provedBystring
siteobjectyesThe new site: its id, domain and mode. Always `learn` to begin with.

No examples provided.

cromanion_ask_human ~229

Ask your human for something only they can do, in a place they will actually see it. Every other refusal here ends with YOU reading it — a permission they did not grant, a payment you cannot make, a mode you may not set — and from their side you simply went quiet. This puts one request on their notifications screen, attributed to you. Nothing replies here: they act in their console, and you find out by reading cromanion_grants or cromanion_config again. One request an hour, and a second from you replaces the first rather than stacking.

NameTypeReqDescription
bodystringyesWhy you need it and what it unblocks, in a sentence or two. Up to 400 characters.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
titlestringyesWhat you need, in a line they can read at a glance. Up to 90 characters.
NameTypeReqDescription
askedbooleanyes
notestringWhere it landed, and that nothing answers back here.
okbooleanyes

No examples provided.

cromanion_claim_domain ~168

Claim another host for this site so its traffic counts, or give one up with `remove: true`. A DIFFERENT registrable domain must be proven on its own — publish this claim's challenge there too, then call again. Subdomains need no call at all: a claimed domain already covers them. Needs the site-config permission.

NameTypeReqDescription
domainstringyesA public hostname, e.g. shop.example.com.
removebooleanGive the host up instead. Needs no proof — it only narrows what we listen to.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
addedbooleanFalse when the host was already covered — not a failure.
claimedarrayyesEvery host this site now listens to, after the change. The answer, whichever branch ran.
notestringPresent when nothing changed, saying why — usually that a claimed domain already covers this subdomain.
okbooleanyes
provedBystringPresent when a fresh proof was read, which a different registrable domain requires.
removedstringPresent on a removal: the host given up.

No examples provided.

cromanion_config ~134

Everything IN FORCE on this site: the conversions that count, the facts you may state and the ones forbidden, which surfaces are enabled, the brand, and every distilled rule WITH its status. cromanion_pending shows what is waiting for a decision; this shows what was already decided — including by you. Read it before writing anything, because most writes here REPLACE rather than add.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
brandobject|null
domainsarrayyes
editGenresarrayyes
excludedVisitorsarrayPresent only with the measurement permission. ABSENT means you may not see it — not that nobody is excluded.
goalsarrayyesConversions that COUNT. `source` says who defined each — `agent` is one of yours.
hintstring
observedPathsarray
okbooleanyes
playbookRulesarrayyesDistilled rules in EVERY state — `proposed`, `approved`, `paused`, `rejected`. This is how you find a rule you paused in order to un-pause it.
surfacesobjectyesEnabled surfaces, the modal switch, stored CSS, and which surfaces carry custom markup.
voiceobjectyesThe client's raw text plus the COMPILED buckets: `tone` steers the prompt, `assertions` are facts somebody vouches for, `interdicts` are enforced in code after the model has spoken.
youMayDecidearray

No examples provided.

cromanion_crawl ~157

Re-read the site, and name the pages that matter most so they are read first. You know this site's structure better than its owner does — seeding it is the cheapest real improvement to what the agent understands. Rate-limited: one crawl per 30 minutes. Needs the site-config permission.

NameTypeReqDescription
priorityUrlsarrayUp to 10 paths or URLs to read first, e.g. ["/pricing", "/checkout"]. Anything unusable is handed back rather than dropped.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
advanceUrlstringPOST this between status polls to advance the crawl yourself, instead of waiting for the cron.
ignoredarrayyesWhat we could not use, handed back rather than dropped — you sent ten and kept eight, these are the two.
okbooleanyes
priorityUrlsarrayyesThe paths we accepted and will read first.

No examples provided.

cromanion_decide ~260

Rule on one thing from cromanion_pending: pass its `kind` and `id` back unchanged with a decision. `approve` / `reject` for everything; `pause` additionally for a playbook rule. Approving a GOAL is different in kind from the rest — it changes what every impact figure for this site means, permanently. You cannot edit rule text here, only rule on it.

NameTypeReqDescription
allbooleanRule on every discovered page at once, ignoring `id`. observed_path only — the other kinds are decided one at a time, as in the console.
decisionstringyesA status and nothing else — rule TEXT is edited by cromanion_set_playbook. `pause` applies only to a playbook_rule.
idstringThe item's id, exactly as cromanion_pending returned it. Ids are not shared across kinds.
kindstringyesWhich queue the item came from. Copy it back from cromanion_pending unchanged.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
decisionstringyes
idstring
kindstringyes
okbooleanyes
rulednumberPresent with `all`: how many were ruled on. Zero is a success — there was nothing waiting.
summarystringWhat the ruling changed, in one line you can repeat to your human.

No examples provided.

cromanion_disconnect_hubspot ~169

Sever the account's HubSpot connection. The other half of cromanion_set_lead_destination's `hubspot` option: you can point leads at a CRM, so you can take them back out. Refused while any site on the account still delivers there — change those destinations first, or the forms would keep working while every lead failed delivery. Reconnecting is NOT a tool: it is an OAuth consent screen only your human can click, so treat this as one-way and say so before you call it. Needs the integrations permission.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
changedbooleanyesFalse when nothing was connected. That is a success, not a failure.
connectedbooleanyesAlways false on success — the state after the call.
notestring
okbooleanyes
portalIdstringThe portal that was severed. Present only when something was.

No examples provided.

cromanion_errors ~110

Every refusal this server can return, and what to do about each. Needs no credential — you can read it before you have one, or after a refusal has told you the one you had is gone. The field to branch on is `retry`: `later` means a cooldown or a transient, `fix_request` means change something and resend, `needs_human` means nothing you send will help until a person acts. Read it once and stop guessing whether a 409 is worth retrying.

Input schema present but exposes no named parameters.

NameTypeReqDescription
errorsarrayyesThe closed set. A token absent from here is one this server does not emit.
okbooleanyes
readMestring

No examples provided.

cromanion_grants ~62

List what your human has allowed this agent to do, and what they have not. Read this before assuming a capability — the alternative is discovering your permissions by failing in front of them. You cannot change these yourself; only your human can, in their console.

Input schema present but exposes no named parameters.

NameTypeReqDescription
grantedarrayyesOnly what you MAY do. A capability absent from this list is one to stop planning around.
okbooleanyes
revokedbooleanyesTrue once your human has ended this credential. Nothing else will work; do not retry.

No examples provided.

cromanion_impact ~122

What the agent has actually changed: visitors who saw it versus the 10% held back as a control. Read `liftStatus` before reporting anything — `learn` means nothing has been shown yet and `insufficient` means the arms are too small to tell signal from noise. Neither is 'no lift'.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
impactobjectyesExposed arm versus the held-back control. Read `liftStatus` FIRST — it decides whether the numbers beside it mean anything yet.
okbooleanyes
readMestringWhat each liftStatus means. `learn` = nothing shown yet, `insufficient` = arms too small to separate from noise. Neither is 'no lift'.

No examples provided.

cromanion_install_check ~183

Why the tag is not firing. cromanion_site_status tells you `verified: false`; this tells you WHY — fetching your human's own pages and reporting, per page, whether the tag is there and what is stopping it. It finds the four failures a boolean cannot: the tag missing from some pages but not others, a Content-Security-Policy blocking the script, a consent manager holding it, and beacons arriving from a host the site was not claimed under. Each comes back with the fix. Rate-limited to one check every two minutes, because it fetches ten pages from your human's server.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
checkednumberyes
okbooleanyes
pagesarrayyesPer page: the status we got, whether the tag was in the HTML, and whether a consent manager had parked it.
presentnumberyesHow many of the fetched pages carry the tag.
problemsarrayyesEmpty means the tag is present and nothing blocks it. Each entry carries what is wrong and what to do.
verdictstringNo problems is not the same sentence as it working: a beacon still needs a real visitor.

No examples provided.

cromanion_mark_read ~147

Mark notifications read once you have passed them on to your human. cromanion_pending returns the unread ones and nothing cleared them, so the queue grew for ever and you re-read the same items on every poll. Send a notificationId for one, or nothing to clear them all. Needs the decisions permission.

NameTypeReqDescription
notificationIdstringOne notification, by the id cromanion_pending returned. Omit to mark every unread one read.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
markednumberyesHow many were actually unread. Zero is a success, not a failure.
notestring
okbooleanyes
titlestringPresent when you named one.

No examples provided.

cromanion_open_claim ~205

Start here, and you need nothing to do it — no API key, no human. This call takes no credential and creates NOTHING: no account, no key, no charge. It returns a challenge to publish on the site you manage (a file, a meta tag or a DNS record — whichever your hosting lets you write) and the secret you will authenticate with once the proof is read. That proof is the whole trust model: we cannot take your word for an email address, but we can check what you control. Store the secret; it is shown once. Refuses if the address already has an account, because controlling a site does not prove controlling a mailbox.

NameTypeReqDescription
agentstringOptional: what you call yourself, for support and audit.
emailstringyesYour human's email. It becomes the account's login.
siteUrlstringyesThe public URL of the site to optimize, e.g. https://example.com.
NameTypeReqDescription
challengestringyesThe random string to publish. It proves this claim and no other.
claimIdstringyesThis claim's id, for your own logs.
domainstringyesThe domain we resolved from your siteUrl, and the one the proof must appear on.
expiresAtstringyesISO timestamp. Redeemable until then; after that, open another.
okbooleanyes
proofsobjectyesThe three ways to prove control, each with the exact URL and the exact string. Publish any ONE, then call cromanion_verify_claim.
secretstringyesShown ONCE. Store it now — we keep only its hash, so a lost secret means a new claim.
verifyUrlstringThe HTTP equivalent of cromanion_verify_claim, if you would rather curl it.

No examples provided.

cromanion_pending ~127

Everything on this site that is waiting for a decision: page rewrites the agent wants to make, rules it distilled from real sessions, conversions it spotted but has never counted, and pages your traffic found that the crawl missed. This is the client's actual job in the console, in one call. Rule on an item with cromanion_decide.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
hintstring
itemsarrayyesEverything waiting. Pass an item's kind and id back to cromanion_decide unchanged.
notificationsarrayyesUnread notes for your human. Not decisions — the other reason they would open the console.
okbooleanyes
youMayDecidearrayyesYour own grants, echoed here so you do not rule on an item you will be refused for.

No examples provided.

cromanion_set_brand ~239

Adjust the palette, fonts and button styling the agent paints its surfaces with. The crawl guesses these from a stylesheet; you probably know the real tokens. Cosmetic only — it changes how the agent looks, never what it may say. Needs the brand permission.

NameTypeReqDescription
bodyFontstringCSS font-family stack for body text, e.g. "Inter, sans-serif".
colorsobjectHex per role, e.g. {"primary":"#1a1a2e"}. Roles come from cromanion_site_status.
ctaFillstringPrimary button background, hex.
ctaRadiusstringPrimary button corner radius, e.g. 8px.
ctaTextstringPrimary button text colour, hex.
headingFontstringCSS font-family stack for headings, e.g. "Inter, sans-serif".
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
buttonobject
okbooleanyes
paletteobjectyesThe stored colours, by role.
typographyobject
versionstring|numberBumped on every save, so the edge picks the new tokens up.

No examples provided.

cromanion_set_exclusions ~160

Put an excluded device back into the measurement. Your human can mark their own devices as "not a real visitor" so their browsing does not count; this removes one of those marks, by the label they gave it. You cannot ADD an exclusion — that names the caller's own browser, which you do not have. Needs the measurement permission.

NameTypeReqDescription
labelstringyesThe label your human gave the device, as cromanion_config lists it. An ambiguous label is refused rather than guessed at.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
okbooleanyes
removedstringyesThe label that is no longer excluded.
stillExcludednumber

No examples provided.

cromanion_set_holdout ~127

Set the share of visitors held back from the agent so its effect stays measurable (0.05–0.5). Changing it splits the measurement window: periods either side are compared separately and never pooled. Needs the measurement permission.

NameTypeReqDescription
sharenumberyesFraction held back, e.g. 0.1 for 10%.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
holdoutSharenumberyesThe share as APPLIED, clamped to 0.05–0.5. Read it rather than assuming your value was taken verbatim.
notestringThat this change split the measurement window, and what that means for later comparisons.
okbooleanyes

No examples provided.

cromanion_set_lead_destination ~192

Set where captured leads are delivered: an https webhook, a connected HubSpot portal, or off. Note before you use it: this is the one change that leaves no other trace — forms keep working and visitors keep being thanked while the addresses go somewhere new — so every change emails your human and appears on their notifications screen. Needs the integrations permission.

NameTypeReqDescription
kindstringyesWhere leads go: `webhook` posts them to your `target` URL, `hubspot` to the connected portal, `off` stops delivery while forms keep working.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
targetstringThe https webhook URL. Not needed for hubspot or off.
NameTypeReqDescription
changedbooleanyesFalse when leads already went there. Nothing was emailed in that case.
destinationobjectyesWhere leads go now.
notestringOn a real change: that your human has been emailed and it is on their notifications screen. This is the one setting whose misuse leaves no other trace.
okbooleanyes

No examples provided.

cromanion_set_mode ~208

Switch the agent on. `learn` watches and shows visitors nothing; `act` lets it intervene in your human's name. `customizeMode` is a separate axis for rewriting their own page copy: `off`, `shadow` (propose only) or `live`. Needs the activation permission.

NameTypeReqDescription
customizeModestringRewriting your human's own page copy, a separate axis from `mode`: `off`, `shadow` (propose only, nothing shown) or `live`. Omit to leave it as it is.
modestring`learn` watches and shows visitors nothing; `act` lets the agent intervene in your human's name. Omit to leave it as it is.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
changedbooleanyesFalse when it already was what you asked for. Not a failure.
customizeModestring
modestringyesThe mode as it now stands.
okbooleanyes

No examples provided.

cromanion_set_playbook ~259

Reword a distilled rule, or ask for a fresh distillation. Rules are what the agent learned from real sessions; cromanion_decide approves or pauses them, and this changes what they SAY. Send a ruleId with condition and/or recommendedAction to reword one — ids come from cromanion_config, which also shows rules you have already approved or paused. Send redistill: true instead to distil new rules from recent sessions; they arrive as `proposed` for you to rule on. Rate-limited to one distillation an hour. Needs the decisions permission.

NameTypeReqDescription
conditionstringWhen the rule applies, in plain words. Omit to leave it.
recommendedActionstringWhat the agent should do when it applies. Omit to leave it.
redistillbooleanIgnore ruleId and distil fresh rules from recent sessions instead.
ruleIdstringThe rule to reword, from cromanion_config.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
changedbooleanFalse when the wording was already what you sent.
conditionstring
notestring
okbooleanyes
recommendedActionstring
redistilledboolean
ruleIdstring

No examples provided.

cromanion_set_surfaces ~245

Choose where the agent may speak and what those places look like: which layout surfaces are enabled, whether the exit modal is allowed, custom CSS, and per-surface HTML. Markup and CSS are re-checked against an allowlist on every visitor — anything that could run, or fetch a remote resource, is silently removed, so compare what comes back with what you sent. Needs the surfaces permission.

NameTypeReqDescription
allowModalbooleanAllow the page-blocking exit modal. Off by default.
customCssstringCSS applied inside the intervention's shadow root. An empty string clears it.
enabledarraySurfaces the agent may use: inline_hint, card, sticky_bar, bottom_sheet, inline_block, cta_tooltip.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
templatesobjectPer-surface HTML, keyed by surface. Use {{message}}, {{cta_label}} and {{cta_url}} as placeholders.
NameTypeReqDescription
allowModalboolean
changedbooleanyes
customCssstring|nullThe CSS as STORED — compare with what you sent to see what the allowlist removed.
enabledarray|nullSurfaces now in use.
notestring
okbooleanyes
templatesobjectPer-surface, what was kept and what was stripped from your markup.

No examples provided.

cromanion_set_voice ~197

Write the facts the agent may state to visitors, and the things it must never say. Plain sentences, one idea per line; start a line with 'never' to forbid something. Anything you write that your human's own pages do not already state is attributed to THEM as the source — so write only what they have told you is true. Every rule is checked against your own text and the site's vocabulary, and anything ungrounded is silently dropped: read the returned `lines` to see what actually survived. Your human sees each line attributed to you. Needs the voice permission.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
textstringyesThe whole guidance, replacing what is there. An empty string clears it.
NameTypeReqDescription
clearedbooleanPresent when you sent an empty string: the guidance is now empty.
linesarrayyesWhat SURVIVED grounding, not what you sent. Compare it with your input; anything missing was dropped as unverifiable.
okbooleanyes

No examples provided.

cromanion_site_status ~115

Check the site you provisioned: whether the tag is actually live (a beacon received from your own domain, not merely a snippet handed to you), how the crawl is going, and the plan. Poll this after installing the snippet. Requires the claim secret as a bearer token.

NameTypeReqDescription
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
accountobject|nullPlan and billing state, or null if it cannot be read.
consoleUrlstringWhere your human signs in to see all of this.
crawlobject|nullProgress of the site read. While `status` is pending or running it carries `advanceUrl` — POST it between polls to advance the queue yourself.
humanNextStepstring|nullWhat is waiting on your human, in words you can repeat to them. Null when nothing is.
installobjectyes
okbooleanyes
siteobjectyes

No examples provided.

cromanion_upgrade_link ~149

Get a Stripe Checkout link for a paid plan (pro or growth). Returns a URL and nothing else — YOU do not pay and cannot: give the link to your human, who enters their own card. The site works on the free plan meanwhile. Requires the claim secret as a bearer token.

NameTypeReqDescription
planstringyesWhich paid plan the link should check out: pro or growth. The site keeps working on free until your human completes it.
siteIdstringWhich site this call is about. Only needed when your credential covers more than one — cromanion_grants lists them and says whether it is required. Omitting it with several is refused rather than gue…
NameTypeReqDescription
checkoutUrlstringyesA Stripe Checkout link. Give it to your human; you cannot complete it.
instructionsstringWhat to tell your human, in a sentence you can pass on unchanged.
okbooleanyes
planstringyes

No examples provided.

cromanion_verify_claim ~76

Redeem a claim once you have published one of its three proofs (a /.well-known file, a <meta> tag, or a DNS TXT record). On success it creates the account and the site and returns the tracking snippet to install. Idempotent — safe to retry. Requires the claim secret as a bearer token.

Input schema present but exposes no named parameters.

NameTypeReqDescription
installobjectyes
okbooleanyes
provedBystringWhich of the three proofs we actually read.
siteobjectyes
statusstringyes`created` the first time, `existing` on a retry — the same account either way.

No examples provided.

Common questions

What is the Cromanion MCP server?

Cromanion is an MCP server listed in the public MCP registry as com.cromanion/cromanion. Raise conversion on a site you manage. No API key, no human to wake, you prove the domain. This page covers its hosted endpoint (https://cromanion.com/api/mcp).

Is the Cromanion MCP server safe to use?

Cromanion scores 73 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Cromanion MCP server expose?

Cromanion exposes 26 tools: cromanion_open_claim, cromanion_verify_claim, cromanion_site_status, cromanion_install_check, cromanion_upgrade_link, and 21 more. Their descriptions and schemas cost roughly 4,597 tokens of context every time the server is loaded.

Does the Cromanion MCP server require authentication?

No. We connected to Cromanion without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Cromanion MCP server still maintained?

Cromanion is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.