Surgemesh
com.surgemesh/surgemeshsurgemesh.comstreamable-httpv1.2.0Scanned
Agent-first social publishing: connect channels, quote, and schedule posts across networks.
24 tools: 1 can delete or cancel things, 1 do something that can't be undone, 11 change things and 11 only read.
- Reads private data · 1
- Reads text others write · 4
- Can send data out · 5
- 1 finding
Anlyon alternative
13 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
24 tools
Deletes or cancels 1Claude Code: deny
cancel_postCancel a queued post.No findings
Why it is in this group
- The name "cancel_post" says "cancel": a word for removing or ending something.
Description, as the server wrote it Cancel a queued post. Undelivered deliveries are refunded to credit.
Can't be undone 1Claude Code: ask
get_analyticsPosts, deliveries, published, failed, spend and dynamic-pricing usage over time (UTC), with a per-brand breakdown.Can send data outNo findings
Why it is in this group
- The name "get_analytics" says "get": a word for reading.
- The description's first verb is "post": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Description, as the server wrote it Posts, deliveries, published, failed, spend and dynamic-pricing usage over time (UTC), with a per-brand breakdown.
Changes things 11Claude Code: ask
check_dns_verificationCheck whether the TXT record is visible; verifies the account when it is.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 Check whether the TXT record is visible; verifies the account when it is.
confirm_email_verificationSubmit the 6-digit code from the verification email.No findings
Why it is in this group
- The description's first verb is "submit": a word for a change.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
Description, as the server wrote it Submit the 6-digit code from the verification email.
connect_channelStart a one-tap connect for a brand on an OAuth or app-password network.No findings
Why it is in this group
- The description's first verb is "start": a word for a change.
Description, as the server wrote it Start a one-tap connect for a brand on an OAuth or app-password network. Returns connect_url: give it to the account owner to open once. Then poll get_connect_status.
create_checkout_linkCard checkout for a human (coming soon): returns a Stripe-hosted checkout_url for a credit pack (pack_5 $5, pack_20 $20 -> $22, pack_100 $100 -> $120).No findings
Why it is in this group
- The name "create_checkout_link" says "create": a word for a change.
Description, as the server wrote it Card checkout for a human (coming soon): returns a Stripe-hosted checkout_url for a credit pack (pack_5 $5, pack_20 $20 -> $22, pack_100 $100 -> $120). Give the link to the person paying; credits arrive only after Stripe confirms. Verified owners, admin key. 503 checkout_not_enabled until switched on.
create_postSchedule a post to one or more channels.Can send data outNo findings
Why it is in this group
- The name "create_post" says "create": a word for a change.
What it can reach
- outboundThe name "create_post" says "create" and "post": it writes something other people read.
- outboundThe input takes a destination (input.channels): what the tool writes goes there.
Description, as the server wrote it Schedule a post to one or more channels. idempotency_key is required; retries with the same key never double-post or double-charge. Optional max_price_usd refuses surge above your cap.
disconnect_channelDisconnect a channel: erases its stored credentials and revokes the provider token where the network supports it.Can send data out1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- outboundThe input takes a destination (input.channel_id): what the tool writes goes there.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "Disconnect a channel: erases its stored credentials and revokes the provider token where th..."
Description, as the server wrote it Disconnect a channel: erases its stored credentials and revokes the provider token where the network supports it.
get_topup_linkPayment link to buy a credit pack (pack_5 $5, pack_20 $20 -> $22, pack_100 $100 -> $120).No findings
Why it is in this group
- The name "get_topup_link" says "get": a word for reading.
- The description's first verb is "link": a word for a change.
Description, as the server wrote it Payment link to buy a credit pack (pack_5 $5, pack_20 $20 -> $22, pack_100 $100 -> $120). Rails: mpp_card (card via Stripe Shared Payment Token), mpp_stablecoin (USDC.e on Tempo, USDC on Solana), x402 (USDC on Base); each shows live or coming_soon. POST to paymentLink with your Bearer key, pay the 402 challenge, retry. No payment happens in this tool.
request_owner_approvalEmail the account owner a one-tap Approve link (24 h, single use).Can send data outNo findings
Why it is in this group
- The name "request_owner_approval" says "request": a word for a change.
What it can reach
- outboundThe input takes a URL (input.callback_url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Email the account owner a one-tap Approve link (24 h, single use). Poll get_verification until verified or denied.
rotate_my_keyRotate the calling key: returns a new key (shown once) with the same scopes; the old key keeps working for grace_seconds (default 3600, 0 = revoke now).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 Rotate the calling key: returns a new key (shown once) with the same scopes; the old key keeps working for grace_seconds (default 3600, 0 = revoke now).
start_dns_verificationGet a TXT record to publish on the account email domain (or a parent domain).No findings
Why it is in this group
- The name "start_dns_verification" says "start": a word for a change.
Description, as the server wrote it Get a TXT record to publish on the account email domain (or a parent domain). Then call check_dns_verification.
start_email_verificationEmail a 6-digit code to the account email (expires in 10 minutes, 5 attempts).Can send data outNo findings
Why it is in this group
- The name "start_email_verification" says "start": a word for a change.
What it can reach
- outboundThe name "start_email_verification" says "start" and "email": it writes something other people read.
Description, as the server wrote it Email a 6-digit code to the account email (expires in 10 minutes, 5 attempts). Then call confirm_email_verification with the code.
Only reads 11Show 11 read-only tools
get_connect_statusStatus of a connect session: pending, connected (with channel_id), failed or expired.No findings
Why it is in this group
- The name "get_connect_status" says "get": a word for reading.
Description, as the server wrote it Status of a connect session: pending, connected (with channel_id), failed or expired.
get_onboardingOnboarding status: verification state, remaining steps and the exact next call.No findings
Why it is in this group
- The name "get_onboarding" says "get": a word for reading.
Description, as the server wrote it Onboarding status: verification state, remaining steps and the exact next call. Start here after signup.
get_pricingSurgemesh prices: base per delivery, dynamic pricing rules, credit packs.No findings
Why it is in this group
- The name "get_pricing" says "get": a word for reading.
Description, as the server wrote it Surgemesh prices: base per delivery, dynamic pricing rules, credit packs. No auth needed.
get_quotePrice quote (locks at post acceptance; guard with max_price_usd) for N deliveries in the 15-minute slot of scheduled_at, with cheaper nearby slots when surging.Reads text others writeNo findings
Why it is in this group
- The name "get_quote" says "get": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "post": it reads posts, which other people can write.
Description, as the server wrote it Price quote (locks at post acceptance; guard with max_price_usd) for N deliveries in the 15-minute slot of scheduled_at, with cheaper nearby slots when surging.
get_referral_codeYour referral code, share link and stats (referred signups, qualified, credits earned and pending).No findings
Why it is in this group
- The name "get_referral_code" says "get": a word for reading.
Description, as the server wrote it Your referral code, share link and stats (referred signups, qualified, credits earned and pending). Referral rewards are Surgemesh credits only, never cash, and are coming soon; codes can be shared now. Verified owners only.
get_usageAccount plan, credits, free deliveries left, and recent ledger.No findings
Why it is in this group
- The name "get_usage" says "get": a word for reading.
Description, as the server wrote it Account plan, credits, free deliveries left, and recent ledger.
get_verificationStatus of one verification (pending, verified, expired, failed, denied).No findings
Why it is in this group
- The name "get_verification" says "get": a word for reading.
Description, as the server wrote it Status of one verification (pending, verified, expired, failed, denied).
list_brandsBrands in this account.No findings
Why it is in this group
- The name "list_brands" says "list": a word for reading.
Description, as the server wrote it Brands in this account.
list_channelsChannels (connected social accounts) this key can post to.Reads text others writeNo findings
Why it is in this group
- The name "list_channels" says "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "post": it reads posts, which other people can write.
Description, as the server wrote it Channels (connected social accounts) this key can post to.
list_networksEvery supported network: status (available, connect_pending_review, connect_pending_setup), how to connect it, review limits, cost notes and media limits.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "list_networks" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "note": it reads notes.
- untrusted-inputThe description's first sentence says "review": it reads comments, which other people can write.
Description, as the server wrote it Every supported network: status (available, connect_pending_review, connect_pending_setup), how to connect it, review limits, cost notes and media limits. No auth needed.
list_postsRecent posts for a brand with per-channel delivery state.Reads text others writeNo findings
Why it is in this group
- The name "list_posts" says "list": a word for reading.
What it can reach
- untrusted-inputThe name "list_posts" says "list" and "post": it reads posts, which other people can write.
- untrusted-inputThe description's first sentence says "post": it reads posts, which other people can write.
Description, as the server wrote it Recent posts for a brand with per-channel delivery state.
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.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
20 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 private-data tool breaks every one.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write4
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out5
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__surgemesh__list_networks"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
The description mentions "credentials".
What this check looks forMatched text
description: "Disconnect a channel: erases its stored credentials and revokes the provider token where th..."
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http surgemesh https://api.surgemesh.com/mcp --header 'Authorization: <your-authorization>'claude mcp add --transport http surgemesh https://api.surgemesh.com/mcp --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__surgemesh__get_pricing",
"mcp__surgemesh__get_quote",
"mcp__surgemesh__list_channels",
"mcp__surgemesh__list_brands",
"mcp__surgemesh__list_posts",
"mcp__surgemesh__get_referral_code",
"mcp__surgemesh__get_usage",
"mcp__surgemesh__get_onboarding",
"mcp__surgemesh__get_verification",
"mcp__surgemesh__list_networks",
"mcp__surgemesh__get_connect_status"
],
"ask": [
"mcp__surgemesh__create_post",
"mcp__surgemesh__get_topup_link",
"mcp__surgemesh__create_checkout_link",
"mcp__surgemesh__start_email_verification",
"mcp__surgemesh__confirm_email_verification",
"mcp__surgemesh__start_dns_verification",
"mcp__surgemesh__check_dns_verification",
"mcp__surgemesh__request_owner_approval",
"mcp__surgemesh__rotate_my_key",
"mcp__surgemesh__connect_channel",
"mcp__surgemesh__disconnect_channel",
"mcp__surgemesh__get_analytics"
],
"deny": [
"mcp__surgemesh__cancel_post"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as surgemesh. Review it before you use it.
Capability tags behind 9 rules
- mcp__surgemesh__get_quote untrusted-input
- mcp__surgemesh__list_channels untrusted-input
- mcp__surgemesh__create_post outbound
- mcp__surgemesh__list_posts untrusted-input
- mcp__surgemesh__start_email_verification outbound
- mcp__surgemesh__request_owner_approval outbound
- mcp__surgemesh__list_networks private-data, untrusted-input
- mcp__surgemesh__disconnect_channel outbound
- mcp__surgemesh__get_analytics outbound
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/com.surgemesh/surgemesh/verify?hash=4b56f840f7639ba1f2a7e64bc630e0ce1477b69355b4f71081018b97115d466d" | jq -e '.changed == false'Pinned hash 4b56f840f763, from Oct 28, 2026, 05:17 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.surgemesh/surgemesh/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.surgemesh/surgemesh)Source: MCP Registry. Synced Oct 28, 2026, 05:17 UTC.