Sarbacane MCP by usefulapi

Read Sarbacane campaigns, stats, lists and blacklists; manage contacts and draft email campaigns.

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
89%
이름 품질
76%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (4)

  • LOWTool 'sarbacane_list_blacklist_entries' name length outside 3-30 rangesarbacane_list_blacklist_entries에서
  • LOWTool 'sarbacane_list_campaign_recipients' name length outside 3-30 rangesarbacane_list_campaign_recipients에서
  • LOWTool 'sarbacane_create_email_campaign' name length outside 3-30 rangesarbacane_create_email_campaign에서
  • LOWTool 'sarbacane_import_campaign_template' name length outside 3-30 rangesarbacane_import_campaign_template에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~5,133토큰 (도구 정의)
~1.7 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 4.01%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "sarbacane": {
      "url": "https://sarbacane.usefulapi.io/mcp"
    }
  }
}

원격 엔드포인트

https://sarbacane.usefulapi.io/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (19)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢sarbacane_get_credits

The account's remaining credits per type (email campaigns, SMS, eye tracking, Sendkit emails) with expiry date and subscription type. GET /v1/credits.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_users(search, offset, limit)

Users and pending invitations of the Sarbacane account (name, email, role, team). GET /v1/users.

입력 스키마

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Filter users by name or email.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "offset": {
      "description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Maximum items returned, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_lists(offset, limit)

All contact lists of the account, with their ids. Use the ids for contacts, fields and campaigns. GET /v1/lists.

입력 스키마

{
  "type": "object",
  "properties": {
    "offset": {
      "description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Maximum items returned, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_list_fields(list_id)

The custom fields (columns) of a contact list: id, caption and type (STRING, BOOL, INT, DATE). Field ids are the keys used when writing contacts. GET /v1/lists/{listId}/fields.

입력 스키마

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Contact list id (sarbacane_list_lists)."
    }
  },
  "required": [
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_contacts(list_id, email, phone, search, modified_after, ...)

Contacts of one list (personal data: email, phone, custom fields). Filter by email, phone, a text search across fields, or the modification date. GET /v1/lists/{listId}/contacts.

입력 스키마

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Contact list id."
    },
    "email": {
      "description": "Only the contact with this email.",
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
    },
    "phone": {
      "description": "Only the contact with this phone number.",
      "type": "string",
      "minLength": 5,
      "maxLength": 30,
      "pattern": "^\\+?[0-9 ().-]{5,30}$"
    },
    "search": {
      "description": "Text to look for in the contact's fields.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "modified_after": {
      "description": "Only contacts modified at or after this time.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "modified_before": {
      "description": "Only contacts modified at or before this time.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "offset": {
      "description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Maximum items returned, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡sarbacane_create_contact(list_id, email, phone, fields)

WRITE: add a contact to a contact list. Give an email, a phone number or both, and optional custom field values. Adds a new record; use sarbacane_upsert_contact to update an existing contact. POST /v1/lists/{listId}/contacts.

입력 스키마

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Contact list id."
    },
    "email": {
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
    },
    "phone": {
      "type": "string",
      "minLength": 5,
      "maxLength": 30,
      "pattern": "^\\+?[0-9 ().-]{5,30}$"
    },
    "fields": {
      "description": "Custom field values as { <custom field id>: value }. Get the ids from sarbacane_list_list_fields.",
      "type": "object",
      "propertyNames": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "pattern": "^[A-Za-z0-9_-]+$"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string",
            "maxLength": 2000
          },
          {
            "type": "number"
          },
          {
            "type": "boolean"
          }
        ]
      }
    }
  },
  "required": [
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴sarbacane_upsert_contact(list_id, email, phone, fields)

WRITE: add a contact to a list, or update it when the same email/phone pair already exists (custom field values are overwritten). POST /v1/lists/{listId}/contacts/upsert.

입력 스키마

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Contact list id."
    },
    "email": {
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
    },
    "phone": {
      "type": "string",
      "minLength": 5,
      "maxLength": 30,
      "pattern": "^\\+?[0-9 ().-]{5,30}$"
    },
    "fields": {
      "description": "Custom field values as { <custom field id>: value }. Get the ids from sarbacane_list_list_fields.",
      "type": "object",
      "propertyNames": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "pattern": "^[A-Za-z0-9_-]+$"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string",
            "maxLength": 2000
          },
          {
            "type": "number"
          },
          {
            "type": "boolean"
          }
        ]
      }
    }
  },
  "required": [
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_blacklists(offset, limit)

All blacklists (suppression lists) of the account, with their ids. GET /v1/blacklists.

입력 스키마

{
  "type": "object",
  "properties": {
    "offset": {
      "description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Maximum items returned, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_blacklist_entries(blacklist_id, kind, email, phone, modified_after, ...)

Entries of a blacklist by kind: bounces (invalid addresses), unsubscribers or complaints (personal data: email, phone). Filter by email, phone or modification date. GET /v1/blacklists/{blacklistId}/{bounces|unsubscribers|complaints}.

입력 스키마

{
  "type": "object",
  "properties": {
    "blacklist_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Blacklist id (sarbacane_list_blacklists)."
    },
    "kind": {
      "type": "string",
      "enum": [
        "bounces",
        "unsubscribers",
        "complaints"
      ],
      "description": "Which entries: bounces, unsubscribers or complaints."
    },
    "email": {
      "description": "Only this email.",
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
    },
    "phone": {
      "description": "Only this phone number.",
      "type": "string",
      "minLength": 5,
      "maxLength": 30,
      "pattern": "^\\+?[0-9 ().-]{5,30}$"
    },
    "modified_after": {
      "description": "Only entries modified at or after this time.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "modified_before": {
      "description": "Only entries modified at or before this time.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "offset": {
      "description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Maximum items returned, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "blacklist_id",
    "kind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡sarbacane_add_unsubscriber(blacklist_id, email, phone)

WRITE: record an email and/or phone as unsubscribed in a blacklist, so campaigns using that blacklist skip it. Cannot be undone with these tools. POST /v1/blacklists/{blacklistId}/unsubscribers.

입력 스키마

{
  "type": "object",
  "properties": {
    "blacklist_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Blacklist id."
    },
    "email": {
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
    },
    "phone": {
      "type": "string",
      "minLength": 5,
      "maxLength": 30,
      "pattern": "^\\+?[0-9 ().-]{5,30}$"
    }
  },
  "required": [
    "blacklist_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_campaigns(state, search, offset, limit)

Campaigns of the account (id, name, kind, created/edited, recipient count). Filter by state or a text in the name or subject. GET /v1/campaigns.

입력 스키마

{
  "type": "object",
  "properties": {
    "state": {
      "description": "Only campaigns in this state.",
      "type": "string",
      "enum": [
        "DRAFT",
        "FINISH",
        "ROUTING",
        "MODERATION"
      ]
    },
    "search": {
      "description": "Text in the campaign name or subject.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "offset": {
      "description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Maximum items returned, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_get_campaign(campaign_id)

One campaign: state, kind, blacklists, send ids, sent date. The send id is needed to see content. GET /v1/campaigns/{campaignId}.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Campaign id."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_get_campaign_report(campaign_id)

Statistics of a campaign per send: delivered count, opens, openers, clicks, clickers, unsubscribers, devices and operating systems. GET /v1/reports/{campaignId}.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Campaign id."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_campaign_recipients(campaign_id, offset, limit)

Recipients attached to a campaign (personal data: email, phone). GET /v1/campaigns/{campaignId}/recipients.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Campaign id."
    },
    "offset": {
      "description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Maximum items returned, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢sarbacane_list_webhooks

Webhook subscriptions of the account: url, display name and subscribed event kinds. GET /v1/webhooks.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡sarbacane_create_email_campaign(name, email_from, alias_from, email_reply_to, alias_reply_to, ...)

WRITE: create a new email campaign as a DRAFT. It is never sent by these tools: add content (sarbacane_set_campaign_content or sarbacane_import_campaign_template) and a contact list (sarbacane_set_campaign_list), then send it from Sarbacane. POST /v1/campaigns/email.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Campaign name (internal)."
    },
    "email_from": {
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$",
      "description": "Sender email address (must be a sender allowed on the account)."
    },
    "alias_from": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Sender name."
    },
    "email_reply_to": {
      "type": "string",
      "minLength": 3,
      "maxLength": 320,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$",
      "description": "Reply-to email address."
    },
    "alias_reply_to": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Reply-to name."
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Email subject."
    },
    "preheader": {
      "description": "Preheader text.",
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "name",
    "email_from",
    "alias_from",
    "email_reply_to",
    "alias_reply_to",
    "subject"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴sarbacane_set_campaign_content(campaign_id, send_id, html, text)

WRITE: set the HTML (and optional plain-text) content of an email campaign's send, replacing what was there. Without send_id the campaign's only send is used (an A/B test campaign has several: pass one). POST /v1/campaigns/{campaignId}/send/{sendId}/content.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Campaign id."
    },
    "send_id": {
      "description": "Send id from sarbacane_get_campaign (campaign.sends). Optional when the campaign has one send.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$"
    },
    "html": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000000,
      "description": "The HTML body of the email."
    },
    "text": {
      "description": "Plain-text alternative.",
      "type": "string",
      "maxLength": 200000
    }
  },
  "required": [
    "campaign_id",
    "html"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴sarbacane_import_campaign_template(campaign_id, template_id)

WRITE: load a saved template's content into an email campaign, replacing its content. POST /v1/campaigns/{campaignId}/content.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Campaign id."
    },
    "template_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Template id (from Sarbacane)."
    }
  },
  "required": [
    "campaign_id",
    "template_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴sarbacane_set_campaign_list(campaign_id, list_id)

WRITE: import a contact list's contacts as the recipients of a campaign. It does not send the campaign. POST /v1/campaigns/{campaignId}/list.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Campaign id."
    },
    "list_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Contact list id (sarbacane_list_lists)."
    }
  },
  "required": [
    "campaign_id",
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 19개