Surgemesh
Agent-first social publishing: connect channels, quote, and schedule posts across networks.
使うべきか
品質と安全性
検出事項(10)
- MEDIUMget_topup_link 内
- MEDIUMcreate_checkout_link 内
- MEDIUMget_referral_code 内
- MEDIUMlist_networks 内
- MEDIUMconnect_channel 内
- LOWget_pricing 内
- LOWlist_posts 内
- LOWget_verification 内
- LOWget_connect_status 内
- LOWdisconnect_channel 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"surgemesh": {
"url": "https://api.surgemesh.com/mcp"
}
}
}リモートエンドポイント
https://api.surgemesh.com/mcpstreamable-httpできること
ツール一覧
ツール(24)
🟢get_pricing
Surgemesh prices: base per delivery, a hard ceiling (never more than $0.06 per delivery), time-of-day pricing (quieter times cost less, busier times cost more), credit packs. No auth needed.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟡get_quote(scheduled_at, deliveries)
Exact price quote (locks at post acceptance; guard with max_price_usd) for N deliveries at scheduled_at, with cheaper_times (nearby times and their exact prices) when a nearby time costs less.
入力スキーマ
{
"type": "object",
"properties": {
"scheduled_at": {
"type": "string",
"format": "date-time"
},
"deliveries": {
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"scheduled_at"
],
"additionalProperties": false
}🟡list_channels
Channels (connected social accounts) this key can post to.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢list_brands
Brands in this account.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟡create_post(idempotency_key, brand_id, body, media_urls, scheduled_at, ...)
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 a price above your cap. Preview: posts are validated and priced in the sandbox, not published yet.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128
},
"brand_id": {
"type": "string"
},
"body": {
"type": "string",
"maxLength": 5000
},
"media_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"maxItems": 10
},
"scheduled_at": {
"type": "string",
"format": "date-time"
},
"channels": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 20
},
"max_price_usd": {
"type": "number"
}
},
"required": [
"idempotency_key",
"brand_id",
"body",
"scheduled_at",
"channels"
],
"additionalProperties": false
}🟢list_posts(brand_id)
Recent posts for a brand with per-channel delivery state.
入力スキーマ
{
"type": "object",
"properties": {
"brand_id": {
"type": "string"
}
},
"required": [
"brand_id"
],
"additionalProperties": false
}🔴cancel_post(id)
Cancel a queued post. Undelivered deliveries are refunded to credit.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}🟡get_topup_link(pack, rail)
Coming soon (payments are not enabled yet). Payment link to buy a credit pack (pack_5 $5, pack_20 $20, pack_100 $100; each pack buys exactly its price in credit). 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.
入力スキーマ
{
"type": "object",
"properties": {
"pack": {
"type": "string",
"enum": [
"pack_5",
"pack_20",
"pack_100"
]
},
"rail": {
"type": "string",
"enum": [
"mpp_card",
"mpp_stablecoin",
"x402"
]
}
},
"required": [
"pack"
],
"additionalProperties": false
}🟡create_checkout_link(pack, idempotency_key)
Card checkout for a human (coming soon): returns a Stripe-hosted checkout_url for a credit pack (pack_5 $5, pack_20 $20, pack_100 $100; each pack buys exactly its price in credit). Give the link to the person paying; credits arrive only after Stripe confirms. Verified owners, admin key. 503 checkout_not_enabled until switched on.
入力スキーマ
{
"type": "object",
"properties": {
"pack": {
"type": "string",
"enum": [
"pack_5",
"pack_20",
"pack_100"
]
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Optional. Reuse on retries so the action happens once."
}
},
"required": [
"pack"
],
"additionalProperties": false
}🟢get_referral_code
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.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢get_usage
Account plan, credits and recent ledger.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢get_onboarding
Onboarding status: verification state, remaining steps and the exact next call. Start here after signup.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}⚪start_email_verification(idempotency_key)
Email a 6-digit code to the account email (expires in 10 minutes, 5 attempts). Then call confirm_email_verification with the code.
入力スキーマ
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Optional. Reuse on retries so the action happens once."
}
},
"required": [],
"additionalProperties": false
}🟡confirm_email_verification(verification_id, code)
Submit the 6-digit code from the verification email.
入力スキーマ
{
"type": "object",
"properties": {
"verification_id": {
"type": "string"
},
"code": {
"type": "string",
"pattern": "^[0-9 -]{6,9}$"
}
},
"required": [
"verification_id",
"code"
],
"additionalProperties": false
}🟡start_dns_verification(domain, idempotency_key)
Get a TXT record to publish on the account email domain (or a parent domain). Then call check_dns_verification.
入力スキーマ
{
"type": "object",
"properties": {
"domain": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Optional. Reuse on retries so the action happens once."
}
},
"required": [
"domain"
],
"additionalProperties": false
}🟢check_dns_verification(verification_id)
Check whether the TXT record is visible; verifies the account when it is.
入力スキーマ
{
"type": "object",
"properties": {
"verification_id": {
"type": "string"
}
},
"required": [
"verification_id"
],
"additionalProperties": false
}🟢request_owner_approval(note, callback_url, idempotency_key)
Email the account owner a one-tap Approve link (24 h, single use). Poll get_verification until verified or denied.
入力スキーマ
{
"type": "object",
"properties": {
"note": {
"type": "string",
"maxLength": 200
},
"callback_url": {
"type": "string",
"format": "uri"
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Optional. Reuse on retries so the action happens once."
}
},
"required": [],
"additionalProperties": false
}🟢get_verification(verification_id)
Status of one verification (pending, verified, expired, failed, denied).
入力スキーマ
{
"type": "object",
"properties": {
"verification_id": {
"type": "string"
}
},
"required": [
"verification_id"
],
"additionalProperties": false
}⚪rotate_my_key(grace_seconds, idempotency_key)
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).
入力スキーマ
{
"type": "object",
"properties": {
"grace_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 86400
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Optional. Reuse on retries so the action happens once."
}
},
"required": [],
"additionalProperties": false
}🟢list_networks
Every supported network: status (available, connect_pending_review, connect_pending_setup), how to connect it, review limits and media limits (connect_pending_setup = coming soon). No auth needed.
入力スキーマ
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢connect_channel(brand_id, network, label, options)
Start a one-tap connect for a brand on an OAuth or app-password network (networks marked coming soon in list_networks are refused). Returns connect_url: give it to the account owner to open once. Then poll get_connect_status.
入力スキーマ
{
"type": "object",
"properties": {
"brand_id": {
"type": "string"
},
"network": {
"type": "string",
"enum": [
"threads",
"youtube",
"linkedin",
"tiktok",
"pinterest",
"bluesky"
]
},
"label": {
"type": "string",
"maxLength": 80
},
"options": {
"type": "object",
"description": "Network options listed by list_networks (e.g. board_id, organization_id)",
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"brand_id",
"network"
],
"additionalProperties": false
}🟢get_connect_status(connect_id)
Status of a connect session: pending, connected (with channel_id), failed or expired.
入力スキーマ
{
"type": "object",
"properties": {
"connect_id": {
"type": "string"
}
},
"required": [
"connect_id"
],
"additionalProperties": false
}⚪disconnect_channel(channel_id)
Disconnect a channel: erases its stored credentials and revokes the provider token where the network supports it.
入力スキーマ
{
"type": "object",
"properties": {
"channel_id": {
"type": "string"
}
},
"required": [
"channel_id"
],
"additionalProperties": false
}🟢get_analytics(from, to, granularity, brand_id)
Posts, deliveries, published, failed and spend over time (UTC), with a per-brand breakdown.
入力スキーマ
{
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date"
},
"to": {
"type": "string",
"format": "date"
},
"granularity": {
"type": "string",
"enum": [
"day",
"week",
"month"
]
},
"brand_id": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}コミュニティ
エビデンス