Trumpia MCP by usefulapi

Read Trumpia lists, subscribers, keywords and reports; add contacts and send SMS or email campaigns.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
79%
命名の品質
78%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(2)

  • LOWTool 'trumpia_list_scheduled_messages' name length outside 3-30 rangetrumpia_list_scheduled_messages 内
  • LOWTool 'trumpia_cancel_scheduled_message' name length outside 3-30 rangetrumpia_cancel_scheduled_message 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~4,950トークン数(ツール定義)
~1.5 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.87%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

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

リモートエンドポイント

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

できること

ツール一覧

ツール(22)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢trumpia_get_credit_balance

The account's remaining domestic and international text credits. GET /balance/credit.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_get_request_report(request_id)

The outcome of an earlier write request (list/contact/message changes are processed asynchronously). Pass the request_id that the write tool returned; the reply holds the result (for example the new list_id) or says it is still processing or failed. GET /report/{request_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,64}$",
      "description": "The request_id from a write reply."
    }
  },
  "required": [
    "request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_list_lists

All distribution lists (id and name). Lists group subscriptions for targeted messages. GET /list.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_get_list(list_id)

One distribution list: display name, description, message frequency and subscription / mobile / email counts. GET /list/{list_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Distribution list id (from trumpia_list_lists)."
    }
  },
  "required": [
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴trumpia_create_list(list_name, display_name, frequency, description)

WRITE: create a distribution list. Trumpia requires disclosing how often subscribers get messages and what for. Returns request_id and list_id. The list name must not contain spaces or special characters. PUT /list.

入力スキーマ

{
  "type": "object",
  "properties": {
    "list_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30,
      "description": "List name (no spaces or special characters), e.g. GeneralList."
    },
    "display_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "description": "Name subscribers see when they sign up (max 50 characters)."
    },
    "frequency": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999,
      "description": "Messages per month subscribers will receive (disclosure required by mobile regulations)."
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "description": "What the list sends, e.g. 'promo alerts' (max 20 characters)."
    }
  },
  "required": [
    "list_name",
    "display_name",
    "frequency",
    "description"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴trumpia_update_list(list_id, list_name, display_name, frequency, description)

WRITE: change a distribution list's name, display name, frequency or description. Only the fields you pass change. POST /list/{list_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Distribution list id."
    },
    "list_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "display_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "frequency": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20
    }
  },
  "required": [
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_list_subscriptions(row_size, page)

Subscription (contact) ids, newest first. Returns ids only; use trumpia_get_subscription for the details. Pages of 100-10000 ids; next_page is set when a full page came back. GET /subscription.

入力スキーマ

{
  "type": "object",
  "properties": {
    "row_size": {
      "description": "Ids per page, 100-10000 (default 100).",
      "type": "integer",
      "minimum": 100,
      "maximum": 10000
    },
    "page": {
      "description": "Page number from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_get_subscription(subscription_id)

One subscription (contact): name, email, mobile and landline (with verified flags), list ids, created date and custom data. Contains personal data. GET /subscription/{subscription_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "subscription_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Subscription id (from a list or search)."
    }
  },
  "required": [
    "subscription_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_search_subscriptions(search_type, search_data, list_id, row_size, page)

Find subscription ids by email, mobile number, landline, country code, created date, first name or last name; optionally within one list. search_data 'all' returns every subscription that has data of that type. Returns ids; use trumpia_get_subscription for details. GET /subscription/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "search_type": {
      "type": "string",
      "enum": [
        "email",
        "mobile",
        "landline",
        "country_code",
        "created_date",
        "first_name",
        "last_name"
      ],
      "description": "Which field to search."
    },
    "search_data": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The value to find, or 'all' (every subscription that has data of that type; email, mobile and landline only). For search_type created_date a range is required: 'YYYY-MM-DD hh:mm:ss~YYYY-MM-DD hh:mm:ss', e.g. '2026-03-01 00:00:00~2026-04-01 00:00:00'."
    },
    "list_id": {
      "description": "Limit the search to this distribution list.",
      "type": "string",
      "pattern": "^\\d{1,20}$"
    },
    "row_size": {
      "description": "Ids per page, 100-10000 (default 100).",
      "type": "integer",
      "minimum": 100,
      "maximum": 10000
    },
    "page": {
      "description": "Page number from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "required": [
    "search_type",
    "search_data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴trumpia_add_subscriptions(list_names, subscriptions)

WRITE: add contacts to one or more distribution lists (comma-separated list names that already exist). Each contact needs a mobile number, an email or a landline. Only add people who gave express consent to receive messages (TCPA, CAN-SPAM, CTIA rules apply); Trumpia may require a submitted API contract. Returns a request_id; check trumpia_get_request_report. PUT /subscription.

入力スキーマ

{
  "type": "object",
  "properties": {
    "list_names": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 30
      },
      "description": "Names of existing distribution lists to add the contacts to."
    },
    "subscriptions": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "maxLength": 100
          },
          "last_name": {
            "type": "string",
            "maxLength": 100
          },
          "email": {
            "type": "string",
            "maxLength": 200,
            "format": "email",
            "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
          },
          "mobile": {
            "type": "object",
            "properties": {
              "number": {
                "type": "string",
                "pattern": "^\\d{4,20}$",
                "description": "Mobile number, digits only (US: 10 digits)."
              },
              "country_code": {
                "description": "Country code (default 1).",
                "type": "string",
                "pattern": "^\\d{1,4}$"
              }
            },
            "required": [
              "number"
            ]
          },
          "landline": {
            "type": "object",
            "properties": {
              "number": {
                "type": "string",
                "pattern": "^\\d{4,20}$",
                "description": "Landline number, digits only (10 digits)."
              },
              "country_code": {
                "type": "string",
                "pattern": "^\\d{1,4}$"
              }
            },
            "required": [
              "number"
            ]
          },
          "voice_device": {
            "description": "Number to reach by voice (US, Canada, Guam, Puerto Rico).",
            "type": "string",
            "enum": [
              "mobile",
              "landline"
            ]
          },
          "customdata": {
            "maxItems": 50,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "customdata_id": {
                  "type": "string",
                  "pattern": "^\\d{1,20}$",
                  "description": "Custom data field id (from trumpia_list_custom_fields)."
                },
                "value": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 4000,
                  "description": "The value; its format depends on the field type."
                }
              },
              "required": [
                "customdata_id",
                "value"
              ]
            }
          }
        }
      },
      "description": "1-100 contacts."
    }
  },
  "required": [
    "list_names",
    "subscriptions"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴trumpia_update_subscription(subscription_id, list_names, first_name, last_name, email, ...)

WRITE: change a contact's name, email, mobile, landline, custom data or list membership. Only the fields you pass change. Returns a request_id. POST /subscription/{subscription_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "subscription_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Subscription id."
    },
    "list_names": {
      "description": "Existing distribution list names the contact should be added to.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 30
      }
    },
    "first_name": {
      "type": "string",
      "maxLength": 100
    },
    "last_name": {
      "type": "string",
      "maxLength": 100
    },
    "email": {
      "type": "string",
      "maxLength": 200,
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "mobile": {
      "type": "object",
      "properties": {
        "number": {
          "type": "string",
          "pattern": "^\\d{4,20}$",
          "description": "Mobile number, digits only (US: 10 digits)."
        },
        "country_code": {
          "description": "Country code (default 1).",
          "type": "string",
          "pattern": "^\\d{1,4}$"
        }
      },
      "required": [
        "number"
      ]
    },
    "landline": {
      "type": "object",
      "properties": {
        "number": {
          "type": "string",
          "pattern": "^\\d{4,20}$",
          "description": "Landline number, digits only (10 digits)."
        },
        "country_code": {
          "type": "string",
          "pattern": "^\\d{1,4}$"
        }
      },
      "required": [
        "number"
      ]
    },
    "customdata": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "customdata_id": {
            "type": "string",
            "pattern": "^\\d{1,20}$",
            "description": "Custom data field id (from trumpia_list_custom_fields)."
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000,
            "description": "The value; its format depends on the field type."
          }
        },
        "required": [
          "customdata_id",
          "value"
        ]
      }
    }
  },
  "required": [
    "subscription_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_list_custom_fields

All custom data fields (id and name) that can be stored on subscriptions and used as mail-merge values. GET /customdata.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_get_custom_field(customdata_id)

One custom data field: type, options (allowed values, max length), whether required, and its mail-merge text. GET /customdata/{customdata_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "customdata_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Custom data field id."
    }
  },
  "required": [
    "customdata_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_list_keywords

All mobile keywords with id, keyword and the short or long code. GET /keyword.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_get_keyword(keyword_id)

One mobile keyword in detail: auto-response message, code, alternative messages. GET /keyword/{keyword_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "keyword_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Keyword id (from trumpia_list_keywords)."
    }
  },
  "required": [
    "keyword_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_list_org_names

Registered organization names as { org_names: [ { org_name_id, name, default } ] } (Trumpia returns a bare array; it is wrapped). The id can be set as org_name_id on messages. GET /orgname.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_list_email_senders

Registered email sender addresses (the From / Reply-To addresses allowed for email messages) as { senders: [ { sender_id, address, default } ] } (Trumpia returns a bare array; it is wrapped). GET /email/sender.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_get_message(message_id)

Delivery statistics of a message sent with trumpia_send_message: status (sent / scheduled / canceled), totals, sent and failed counts per channel and credits used. GET /message/{message_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "message_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Message id returned by trumpia_send_message."
    }
  },
  "required": [
    "message_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trumpia_list_scheduled_messages(order, offset, limit)

Messages that are scheduled and not yet sent (id, description, scheduled time, recipient counts). Use offset and limit to page; total_count says how many exist. GET /message/scheduled.

入力スキーマ

{
  "type": "object",
  "properties": {
    "order": {
      "description": "scheduled_at = oldest first (default), -scheduled_at = newest first.",
      "type": "string",
      "enum": [
        "scheduled_at",
        "-scheduled_at"
      ]
    },
    "offset": {
      "description": "Messages to skip (default 0).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Messages to return, 1-1000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴trumpia_send_message(description, recipient_type, recipient_ids, sms, email_subject, ...)

WRITE, SENDS REAL MESSAGES that spend credits and cannot be recalled once sent: send an SMS and/or an email to distribution lists or specific subscriptions, now or scheduled (a scheduled one can be cancelled with trumpia_cancel_scheduled_message). Subscribers must have opted in (TCPA, CAN-SPAM, CTIA). Confirm the recipients and text with the user first. Mail merge tokens: [$FirstName], [$LastName], [$FullName], [$CustomData-NAME]. Returns request_id and message_id. PUT /message.

入力スキーマ

{
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Internal description of the message."
    },
    "recipient_type": {
      "type": "string",
      "enum": [
        "list",
        "subscription"
      ],
      "description": "Whether recipient_ids are distribution list ids or subscription ids."
    },
    "recipient_ids": {
      "minItems": 1,
      "maxItems": 300,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\d{1,20}$",
        "description": "Numeric id, as returned by Trumpia."
      },
      "description": "1-300 ids (at most 100 lists or 300 subscriptions)."
    },
    "sms": {
      "description": "SMS text (140 bytes per segment in US/Canada, up to 980 bytes concatenated).",
      "type": "string",
      "minLength": 1,
      "maxLength": 980
    },
    "email_subject": {
      "description": "Email subject (needs email_body).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "email_body": {
      "description": "Email body (needs email_subject).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100000
    },
    "email_reply_to": {
      "description": "Reply-to address (a registered sender).",
      "type": "string",
      "maxLength": 100,
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "org_name_id": {
      "description": "Organization name id to include in the mobile message (default organization name if omitted).",
      "type": "string",
      "pattern": "^\\d{1,20}$"
    },
    "send_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$",
      "description": "Schedule time as YYYY-MM-DD hh:mm:ss (24-hour clock; the account's time zone). Omit to send immediately."
    },
    "mail_merge_first_name": {
      "description": "Replacement when a contact has no first name.",
      "type": "string",
      "maxLength": 30
    },
    "mail_merge_last_name": {
      "description": "Replacement when a contact has no last name.",
      "type": "string",
      "maxLength": 30
    },
    "mail_merge_full_name": {
      "description": "Replacement when a contact has no full name.",
      "type": "string",
      "maxLength": 61
    }
  },
  "required": [
    "description",
    "recipient_type",
    "recipient_ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴trumpia_send_sms(mobile_number, country_code, message, sender, org_name_id)

WRITE, SENDS A REAL TEXT that spends a credit and cannot be recalled: one SMS to one mobile number without adding the contact first. The recipient must have consented; Trumpia may require API Certification for contacts that have not opted in. Confirm number and text with the user first. Returns request_id and sms_id. PUT /sms.

入力スキーマ

{
  "type": "object",
  "properties": {
    "mobile_number": {
      "type": "string",
      "pattern": "^\\+?\\d{4,20}$",
      "description": "US: the 10-digit number without leading 0 or 1. With country_code 0 the number must be E.164 with a leading +, e.g. +17774443210."
    },
    "country_code": {
      "description": "Country code (default 1). 0 = infer it from the number, which then must start with +.",
      "type": "string",
      "pattern": "^\\d{1,4}$"
    },
    "message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 980,
      "description": "The text (the SMS header and footer count toward the length)."
    },
    "sender": {
      "description": "Short/long code or registered landline to send from (default: the account's code).",
      "type": "string",
      "pattern": "^\\d{4,20}$"
    },
    "org_name_id": {
      "description": "Organization name id (default organization name if omitted).",
      "type": "string",
      "pattern": "^\\d{1,20}$"
    }
  },
  "required": [
    "mobile_number",
    "message"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴trumpia_cancel_scheduled_message(message_id)

WRITE: cancel a message that is scheduled and has not been sent yet (see trumpia_list_scheduled_messages). Does nothing for a message already sent. DELETE /message/scheduled/{message_id}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "message_id": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Scheduled message id."
    }
  },
  "required": [
    "message_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 22 件