Benchmark Email MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Manage Benchmark Email lists and contacts, and read campaign reports: opens, clicks, bounces.
25 tools: 4 can delete or cancel things and 21 only read.
Scanned Oct 21, 2026
- Deletes or cancels4Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads21Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http benchmark-email https://benchmark-email.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
25 tools
Deletes or cancels 4Claude Code: deny
benchmark_add_contactWRITE: add one contact to a list (or update it if the email is already there, as the vendor decides).No findings
Why it is in this group
- The name "benchmark_add_contact" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add one contact to a list (or update it if the email is already there, as the vendor decides). It does not send any email. Only add people who agreed to get email. POST /Contact/{list_id}/ContactDetails.
Annotations the server declares
- title: Add contact to a list
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
benchmark_create_listWRITE: create an empty contact list.No findings
Why it is in this group
- The name "benchmark_create_list" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create an empty contact list. POST /Contact/.
Annotations the server declares
- title: Create contact list
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
benchmark_unsubscribe_contactWRITE: move a contact to the Do Not Contact (master unsubscribe) list, so no campaign reaches it again.No findings
Why it is in this group
- The name "benchmark_unsubscribe_contact" says "unsubscribe": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: move a contact to the Do Not Contact (master unsubscribe) list, so no campaign reaches it again. The API has no undo for this. DELETE /Contact/{list_id}/MoveToDNC/{contact_id}.
Annotations the server declares
- title: Unsubscribe contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
benchmark_update_contactWRITE: change fields of one contact in one list.No findings
Why it is in this group
- The name "benchmark_update_contact" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: change fields of one contact in one list. Only the fields you pass are sent. PATCH /Contact/{list_id}/ContactDetails/{contact_id}.
Annotations the server declares
- title: Update contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Only reads 21Claude Code: allow
benchmark_get_accountThe Benchmark Email account this token belongs to: client id, name, company, email, status, plan products, contact count and emails sent.No findings
Why it is in this group
- The name "benchmark_get_account" says "get": a word for reading.
Description, as the server wrote it The Benchmark Email account this token belongs to: client id, name, company, email, status, plan products, contact count and emails sent. GET /Client/ProfileDetails.
Annotations the server declares
- title: Get account
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_contactOne contact of a list with all its fields (Field1 ...No findings
Why it is in this group
- The name "benchmark_get_contact" says "get": a word for reading.
Description, as the server wrote it One contact of a list with all its fields (Field1 ... Field24 hold the custom columns). GET /Contact/{list_id}/ContactDetails/{contact_id}.
Annotations the server declares
- title: Get contact
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_emailOne email campaign: subject, sender, target and excluded lists, dates and settings.No findings
Why it is in this group
- The name "benchmark_get_email" says "get": a word for reading.
Description, as the server wrote it One email campaign: subject, sender, target and excluded lists, dates and settings. GET /Emails/{email_id}.
Annotations the server declares
- title: Get email
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_email_bouncesWhich addresses bounced for an email: contact, email address, time and bounce type.No findings
Why it is in this group
- The name "benchmark_get_email_bounces" says "get": a word for reading.
Description, as the server wrote it Which addresses bounced for an email: contact, email address, time and bounce type. GET /Emails/{email_id}/Report/Bounces.
Annotations the server declares
- title: Get email bounces
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_email_clicksWho clicked a link in an email: contact, email address and time.No findings
Why it is in this group
- The name "benchmark_get_email_clicks" says "get": a word for reading.
Description, as the server wrote it Who clicked a link in an email: contact, email address and time. GET /Emails/{email_id}/Report/Clicks.
Annotations the server declares
- title: Get email clicks
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_email_opensWho opened an email: contact, email address, time and device.No findings
Why it is in this group
- The name "benchmark_get_email_opens" says "get": a word for reading.
Description, as the server wrote it Who opened an email: contact, email address, time and device. GET /Emails/{email_id}/Report/Opens.
Annotations the server declares
- title: Get email opens
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_email_reportThe report summary of one email: recipients, opens, clicks, bounces, unsubscribes, forwards, complaints and rates.No findings
Why it is in this group
- The name "benchmark_get_email_report" says "get": a word for reading.
Description, as the server wrote it The report summary of one email: recipients, opens, clicks, bounces, unsubscribes, forwards, complaints and rates. GET /Emails/{email_id}/Report.
Annotations the server declares
- title: Get email report
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_email_unsubscribesWho unsubscribed after an email: contact, email address, time and reason, with a count per reason.No findings
Why it is in this group
- The name "benchmark_get_email_unsubscribes" says "get": a word for reading.
Description, as the server wrote it Who unsubscribed after an email: contact, email address, time and reason, with a count per reason. GET /Emails/{email_id}/Report/Unsubscribes.
Annotations the server declares
- title: Get email unsubscribes
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_listOne contact list: name, description, active contact count and its custom field names (Field1Name ...).No findings
Why it is in this group
- The name "benchmark_get_list" says "get": a word for reading.
Description, as the server wrote it One contact list: name, description, active contact count and its custom field names (Field1Name ...). GET /Contact/{list_id}.
Annotations the server declares
- title: Get contact list
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_list_fieldsThe column names of a contact list (email, firstname, lastname and the custom fields).No findings
Why it is in this group
- The name "benchmark_get_list_fields" says "get": a word for reading.
Description, as the server wrote it The column names of a contact list (email, firstname, lastname and the custom fields). GET /Contact/{list_id}/Fields.
Annotations the server declares
- title: Get contact list fields
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_planThe account's email plan, add-ons and contact usage (active, account and total contacts, percent used).No findings
Why it is in this group
- The name "benchmark_get_plan" says "get": a word for reading.
Description, as the server wrote it The account's email plan, add-ons and contact usage (active, account and total contacts, percent used). GET /Client/Plan.
Annotations the server declares
- title: Get plan and usage
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_settingsDefault sender settings: from name and email, signature, footer, time zone, language and company address.No findings
Why it is in this group
- The name "benchmark_get_settings" says "get": a word for reading.
Description, as the server wrote it Default sender settings: from name and email, signature, footer, time zone, language and company address. The API token in the reply is removed. GET /Client/Setting.
Annotations the server declares
- title: Get account settings
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_signup_formOne signup form with its settings and target lists.No findings
Why it is in this group
- The name "benchmark_get_signup_form" says "get": a word for reading.
Description, as the server wrote it One signup form with its settings and target lists. GET /SignupForm/{form_id}.
Annotations the server declares
- title: Get signup form
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_get_signup_form_linkThe public link of a signup form.No findings
Why it is in this group
- The name "benchmark_get_signup_form_link" says "get": a word for reading.
Description, as the server wrote it The public link of a signup form. GET /SignupForm/{form_id}/Link.
Annotations the server declares
- title: Get signup form link
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_list_contactsList the contacts of one list with email, name, dates and id.No findings
Why it is in this group
- The name "benchmark_list_contacts" says "list": a word for reading.
Description, as the server wrote it List the contacts of one list with email, name, dates and id. Filter by status (subscribed, unsubscribed, hard_bounced) or search a column. GET /Contact/{list_id}/ContactDetails.
Annotations the server declares
- title: List contacts in a list
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_list_email_reportsReport summaries of sent emails: sends, opens, clicks, bounces, unsubscribes and complaints per campaign.No findings
Why it is in this group
- The name "benchmark_list_email_reports" says "list": a word for reading.
Description, as the server wrote it Report summaries of sent emails: sends, opens, clicks, bounces, unsubscribes and complaints per campaign. GET /Emails/Report.
Annotations the server declares
- title: List email report summaries
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_list_emailsList email campaigns with id, name, subject, type, status, dates and target lists.No findings
Why it is in this group
- The name "benchmark_list_emails" says "list": a word for reading.
Description, as the server wrote it List email campaigns with id, name, subject, type, status, dates and target lists. GET /Emails/.
Annotations the server declares
- title: List emails
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_list_listsList contact lists with id, name, description, contact count and dates.No findings
Why it is in this group
- The name "benchmark_list_lists" says "list": a word for reading.
Description, as the server wrote it List contact lists with id, name, description, contact count and dates. Use the ids with the contact tools. GET /Contact/.
Annotations the server declares
- title: List contact lists
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_list_segmentsList the saved segments (filtered subsets of lists) with id and name.No findings
Why it is in this group
- The name "benchmark_list_segments" says "list": a word for reading.
Description, as the server wrote it List the saved segments (filtered subsets of lists) with id and name. GET /Contact/Segments.
Annotations the server declares
- title: List segments
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_list_signup_formsList signup forms with id, name, date and the lists they feed.No findings
Why it is in this group
- The name "benchmark_list_signup_forms" says "list": a word for reading.
Description, as the server wrote it List signup forms with id, name, date and the lists they feed. GET /SignupForm/.
Annotations the server declares
- title: List signup forms
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
benchmark_search_contactsFind an email address across all lists: one row per list it is on, with the list name, contact id and master-unsubscribe flag.No findings
Why it is in this group
- The name "benchmark_search_contacts" says "search": a word for reading.
Description, as the server wrote it Find an email address across all lists: one row per list it is on, with the list name, contact id and master-unsubscribe flag. GET /Contact/ContactDetails.
Annotations the server declares
- title: Search contacts by email
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
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 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http benchmark-email https://benchmark-email.usefulapi.io/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__benchmark-email__benchmark_get_account",
"mcp__benchmark-email__benchmark_get_plan",
"mcp__benchmark-email__benchmark_get_settings",
"mcp__benchmark-email__benchmark_list_lists",
"mcp__benchmark-email__benchmark_get_list",
"mcp__benchmark-email__benchmark_get_list_fields",
"mcp__benchmark-email__benchmark_list_segments",
"mcp__benchmark-email__benchmark_list_contacts",
"mcp__benchmark-email__benchmark_get_contact",
"mcp__benchmark-email__benchmark_search_contacts",
"mcp__benchmark-email__benchmark_list_emails",
"mcp__benchmark-email__benchmark_get_email",
"mcp__benchmark-email__benchmark_list_email_reports",
"mcp__benchmark-email__benchmark_get_email_report",
"mcp__benchmark-email__benchmark_get_email_opens",
"mcp__benchmark-email__benchmark_get_email_clicks",
"mcp__benchmark-email__benchmark_get_email_bounces",
"mcp__benchmark-email__benchmark_get_email_unsubscribes",
"mcp__benchmark-email__benchmark_list_signup_forms",
"mcp__benchmark-email__benchmark_get_signup_form",
"mcp__benchmark-email__benchmark_get_signup_form_link"
],
"ask": [],
"deny": [
"mcp__benchmark-email__benchmark_create_list",
"mcp__benchmark-email__benchmark_add_contact",
"mcp__benchmark-email__benchmark_update_contact",
"mcp__benchmark-email__benchmark_unsubscribe_contact"
]
}
}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 benchmark-email. Review it before you use it.