Cromanion
by cromanion.com · remote · no sign-in to list tools · v0.7.0 · published by com.cromanion
Raise conversion on a site you manage. No API key, no human to wake — you prove the domain.
29 tools: 8 can delete or cancel things, 18 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels8Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things18Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
29 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http cromanion https://cromanion.com/api/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "cromanion_install_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "cromanion_install_check" says "install": a word for a change.
The description mentions "credential".
What this check looks forMatched text
description: "...o API key, no human. This call takes no credential and creates NOTHING: no account, no key..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_errors
The description mentions "credential".
What this check looks forMatched text
description: "...rn, and what to do about each. Needs no credential — you can read it before you have one,..."
Show 23 more findingsShow fewer
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_config
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_decide
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_impact
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_visits
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_visit
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_live
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Infocromanion_crawl
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The description mentions "credential".
What this check looks forMatched text
description: "...ATING one does: nothing about holding a credential for one domain says anything about anot..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
29 tools
Deletes or cancels 8Claude Code: deny
cromanion_claim_domainClaim another host for this site so its traffic counts, or give one up with `remove: true`.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Claim another host, or give one up
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
cromanion_disconnect_hubspotSever the account's HubSpot connection.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Disconnect the account's HubSpot portal
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
cromanion_set_exclusionsPut an excluded device back into the measurement.1 finding
Why it is in this group
- The name "cromanion_set_exclusions" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Put an excluded device back into the measurement
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
cromanion_set_holdoutSet the share of visitors held back from the agent so its effect stays measurable (0.05–0.5).1 finding
Why it is in this group
- The name "cromanion_set_holdout" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Change the share of visitors held back
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
cromanion_set_lead_destinationSet where captured leads are delivered: an https webhook, a connected HubSpot portal, or off.1 finding
Why it is in this group
- The name "cromanion_set_lead_destination" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Set where captured leads are delivered
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
cromanion_set_playbookReword a distilled rule, or ask for a fresh distillation.1 finding
Why it is in this group
- The name "cromanion_set_playbook" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Reword a rule, or distil fresh ones
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
cromanion_set_surfacesChoose 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.1 finding
Why it is in this group
- The name "cromanion_set_surfaces" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Set where the agent may speak, and how it looks
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
cromanion_set_voiceWrite the facts the agent may state to visitors, and the things it must never say.1 finding
Why it is in this group
- The name "cromanion_set_voice" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Replace the facts the agent may state
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
Changes things 18Claude Code: ask
cromanion_add_goalDefine a conversion to count, or change one you already defined.1 finding
Why it is in this group
- The name "cromanion_add_goal" says "add": a word for a change.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Define a conversion to count
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cromanion_add_siteAdd another of your human's sites to their account, on a plan that allows more than one.2 findings
Why it is in this group
- The name "cromanion_add_site" says "add": a word for a change.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...ATING one does: nothing about holding a credential for one domain says anything about anot..."
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Add another site to the account
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
cromanion_ask_humanAsk your human for something only they can do, in a place they will actually see it.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Ask your human for something only they can do
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cromanion_configEverything 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 i…1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Read what is in force on this site
- readOnlyHint: true
- openWorldHint: false
cromanion_crawlRe-read the site, and name the pages that matter most so they are read first.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Re-read the site, priority pages first
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
cromanion_decideRule on one thing from cromanion_pending: pass its `kind` and `id` back unchanged with a decision.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Approve, reject or pause one pending item
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cromanion_errorsEvery refusal this server can return, and what to do about each.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...rn, and what to do about each. Needs no credential — you can read it before you have one,..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Read every refusal this server can return
- readOnlyHint: true
- openWorldHint: false
cromanion_impactWhat the agent has actually changed: visitors who saw it versus the 10% held back as a control.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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'.
Annotations the server declares
- title: Read measured lift against the holdout
- readOnlyHint: true
- openWorldHint: false
cromanion_install_checkWhy the tag is not firing.2 findings
Why it is in this group
- The name "cromanion_install_check" says "install": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
- Warn
The server marks "cromanion_install_check" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "cromanion_install_check" says "install": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Diagnose why the tag is not firing
- readOnlyHint: true
- openWorldHint: true
cromanion_liveWho is on your human's site right now: each visitor's pages so far, what the agent showed them, and its current reading of them.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it Who is on your human's site right now: each visitor's pages so far, what the agent showed them, and its current reading of them. Paid plans only (Pro and up) — on Free it is refused with the way to upgrade. Needs the visits permission. Poll at most once a minute; this has its own budget, separate from the history tools. Bots are judged when a visit ends, so a robot not yet recognised can appear here as a person.
Annotations the server declares
- title: See who is on the site now
- readOnlyHint: true
- openWorldHint: false
cromanion_mark_readMark notifications read once you have passed them on to your human.1 finding
Why it is in this group
- The name "cromanion_mark_read" says "mark": a word for a change.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Mark notifications read
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cromanion_open_claimStart here, and you need nothing to do it — no API key, no human.1 finding
Why it is in this group
- The name "cromanion_open_claim" says "open": a word for a change.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...o API key, no human. This call takes no credential and creates NOTHING: no account, no key..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Start a Cromanion signup
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
cromanion_pendingEverything 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, …1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: List everything awaiting a decision
- readOnlyHint: true
- openWorldHint: false
cromanion_set_brandAdjust the palette, fonts and button styling the agent paints its surfaces with.1 finding
Why it is in this group
- The name "cromanion_set_brand" says "set": a word for a change.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Adjust the palette, fonts and button styling
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cromanion_set_modeSwitch the agent on.1 finding
Why it is in this group
- The name "cromanion_set_mode" says "set": a word for a change.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Take the site live, or back to learning
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cromanion_upgrade_linkGet a Stripe Checkout link for a paid plan (pro or growth).1 finding
Why it is in this group
- The name "cromanion_upgrade_link" says "link": a word for a change.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Get an upgrade link for your human
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
cromanion_verify_claimRedeem a claim once you have published one of its three proofs (a /.well-known file, a <meta> tag, or a DNS TXT record).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Redeem the claim and create the account
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
cromanion_visitOne visit in full: the story of each page load, every moment Cromanion's agent looked at the visitor and what it decided, what the visitor actually saw, and the doubts it read.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it One visit in full: the story of each page load, every moment Cromanion's agent looked at the visitor and what it decided, what the visitor actually saw, and the doubts it read. Pass the `visitId` from cromanion_visits, or a `sessionId` from cromanion_live once that visitor has left. Needs the visits permission. Readings sit under `reading`; a moment at or after the conversion carries `observed` instead, because the conversion is a fact. `shown.seen` is what the visitor's browser confirmed, not what was sent. Same 60-an-hour budget as cromanion_visits.
Annotations the server declares
- title: Read one visit
- readOnlyHint: true
- openWorldHint: false
Only reads 3Claude Code: allow
cromanion_grantsList what your human has allowed this agent to do, and what they have not.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Read your own permissions
- readOnlyHint: true
- openWorldHint: false
cromanion_site_statusCheck 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.1 finding
Why it is in this group
- The name "cromanion_site_status" says "status": a word for reading.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Check the install and the crawl
- readOnlyHint: true
- openWorldHint: false
cromanion_visitsList your human's recent visits — each with its pages, how it ended, what Cromanion's agent showed or held back, the doubts it read, and the start of the visit's story.1 finding
Why it is in this group
- The description's first verb is "list": a word for reading.
Findings
- Info
The input schema at properties.siteId.description mentions "credential".
What this check looks forMatched text
inputSchema.properties.siteId.description: "...is call is about. Only needed when your credential covers more than one — cromanion_grants..."
Description, as the server wrote it List your human's recent visits — each with its pages, how it ended, what Cromanion's agent showed or held back, the doubts it read, and the start of the visit's story. Filter by page, outcome, doubt, device, channel and more; page through with `next`. Needs the visits permission, which only your human can give in their console. Everything under `reading` is Cromanion's interpretation, not something the visitor said — report it that way. A visit is readable in full about 30 minutes after the visitor leaves; for who is on the site right now use cromanion_live. The control group is never read, so a doubt filter contains no control visits. Shares a budget of 60 calls an hour with cromanion_visit; every call is on your human's record before it runs. Identifiers in paths are masked (`:id`, `:token`), so products addressed by a number or a code are indistinguishable to a page filter.
Annotations the server declares
- title: List visits
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.7.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http cromanion https://cromanion.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__cromanion__cromanion_site_status",
"mcp__cromanion__cromanion_grants",
"mcp__cromanion__cromanion_visits"
],
"ask": [
"mcp__cromanion__cromanion_open_claim",
"mcp__cromanion__cromanion_verify_claim",
"mcp__cromanion__cromanion_install_check",
"mcp__cromanion__cromanion_upgrade_link",
"mcp__cromanion__cromanion_errors",
"mcp__cromanion__cromanion_pending",
"mcp__cromanion__cromanion_config",
"mcp__cromanion__cromanion_decide",
"mcp__cromanion__cromanion_ask_human",
"mcp__cromanion__cromanion_mark_read",
"mcp__cromanion__cromanion_impact",
"mcp__cromanion__cromanion_visit",
"mcp__cromanion__cromanion_live",
"mcp__cromanion__cromanion_set_mode",
"mcp__cromanion__cromanion_add_goal",
"mcp__cromanion__cromanion_crawl",
"mcp__cromanion__cromanion_add_site",
"mcp__cromanion__cromanion_set_brand"
],
"deny": [
"mcp__cromanion__cromanion_set_playbook",
"mcp__cromanion__cromanion_claim_domain",
"mcp__cromanion__cromanion_set_voice",
"mcp__cromanion__cromanion_set_surfaces",
"mcp__cromanion__cromanion_set_holdout",
"mcp__cromanion__cromanion_set_exclusions",
"mcp__cromanion__cromanion_set_lead_destination",
"mcp__cromanion__cromanion_disconnect_hubspot"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as cromanion. Review it before you use it.