Salsa Engage MCP by usefulapi

Search supporters, donations, emails and segments; create or update supporters in Salsa Engage.

使うべきか

品質と安全性

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

検出事項(4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringsalsa_search_transactions 内
  • MEDIUMTool description contains suspicious base64-like encoded stringsalsa_get_email_blast_results 内
  • MEDIUMTool description contains suspicious base64-like encoded stringsalsa_search_segment_members 内

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

コンテキストコスト

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

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

インストール

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

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

{
  "mcpServers": {
    "salsa-engage": {
      "url": "https://salsa-engage.usefulapi.io/mcp"
    }
  }
}

リモートエンドポイント

https://salsa-engage.usefulapi.io/mcpstreamable-http

できること

ツール一覧

ツール(11)

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

Show the calls left in the current one-minute window for this token, the batch limit, and the call counters. Good first call to check the token works. Engage API: GET /integration/ext/v1/metrics.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_search_supporters(identifiers, searchString, modifiedFrom, modifiedTo, offset, ...)

Find supporters by Salsa Engage supporter ID, by text (first name, last name, email or cell phone), or by the time their census data changed. Returns each supporter with address, contacts and per-record errors and warnings. Engage API: POST /integration/ext/v1/supporters/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "identifiers": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      },
      "description": "Salsa Engage supporter IDs (UUIDs), up to 20 per call."
    },
    "searchString": {
      "description": "Text to match in first name, last name, email or cell phone.",
      "type": "string",
      "minLength": 1
    },
    "modifiedFrom": {
      "description": "Only supporters whose census data changed on or after this UTC 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{3}(?:Z))$"
    },
    "modifiedTo": {
      "description": "Upper bound for modifiedFrom (UTC).",
      "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{3}(?:Z))$"
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_get_supporter_groups(identifiers)

List the groups that each of the given supporters belongs to. Engage API: POST /integration/ext/v1/supporters/groups.

入力スキーマ

{
  "type": "object",
  "properties": {
    "identifiers": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      },
      "description": "Salsa Engage supporter IDs (UUIDs), up to 20 per call."
    }
  },
  "required": [
    "identifiers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_search_transactions(identifiers, identifierType, transactionFrom, transactionTo, offset, ...)

Find donation transactions by transaction ID or supporter ID, or by a transaction date range. Pass identifiers with identifierType, or transactionFrom (with transactionTo). Engage API: POST /integration/ext/v1/transactionDetails/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "identifiers": {
      "description": "Transaction IDs or supporter IDs (UUIDs), up to 20 per call.",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      }
    },
    "identifierType": {
      "description": "Type of the identifiers. Required when identifiers are given.",
      "type": "string",
      "enum": [
        "TRANSACTION_ID",
        "SUPPORTER_ID"
      ]
    },
    "transactionFrom": {
      "description": "Earliest transaction time (UTC).",
      "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{3}(?:Z))$"
    },
    "transactionTo": {
      "description": "Latest transaction time (UTC).",
      "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{3}(?:Z))$"
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_search_activities(activityIds, activityFormIds, supporterIds, type, modifiedFrom, ...)

Find supporter activity (signups, donations, petitions, letters, event registrations and similar) by activity ID, by form, by supporter, or by modified time. Pass modifiedFrom or activityIds. Engage API: POST /integration/ext/v1/activities/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "activityIds": {
      "description": "Activity UUIDs, up to 20 per call.",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      }
    },
    "activityFormIds": {
      "description": "Form UUIDs, up to 20 per call.",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      }
    },
    "supporterIds": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      },
      "description": "Salsa Engage supporter IDs (UUIDs), up to 20 per call."
    },
    "type": {
      "description": "Only this kind of form activity.",
      "type": "string",
      "enum": [
        "SUBSCRIPTION_MANAGEMENT",
        "SUBSCRIBE",
        "FUNDRAISE",
        "PETITION",
        "TARGETED_LETTER",
        "TICKETED_EVENT",
        "P2P_EVENT",
        "FACEBOOK_AD",
        "REGULATION_COMMENTS"
      ]
    },
    "modifiedFrom": {
      "description": "Only activity modified on or after this UTC 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{3}(?:Z))$"
    },
    "modifiedTo": {
      "description": "Upper bound for modifiedFrom (UTC).",
      "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{3}(?:Z))$"
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_search_email_blasts(id, contentId, type, publishedFrom, publishedTo, ...)

Find sent email blasts by blast ID, content ID, or publish date. Use the returned cursor to read more. Engage API: POST /integration/ext/v1/emails/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Email blast ID (UUID).",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
    },
    "contentId": {
      "description": "Email content ID (UUID).",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
    },
    "type": {
      "description": "Blast type. The reference documents EMAIL only.",
      "type": "string",
      "const": "EMAIL"
    },
    "publishedFrom": {
      "description": "Published on or after this UTC 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{3}(?:Z))$"
    },
    "publishedTo": {
      "description": "Published on or before this UTC 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{3}(?:Z))$"
    },
    "cursor": {
      "description": "Cursor from an earlier reply, to read the next results.",
      "type": "string"
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_get_email_blast_results(id, contentId, type, cursor, offset, ...)

Read the per-supporter results of one email blast (who received, opened or clicked it, as Engage reports them). Engage API: POST /integration/ext/v1/emails/individualResults.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
      "description": "Email blast ID (UUID), from salsa_search_email_blasts."
    },
    "contentId": {
      "description": "Email content ID (UUID), when the blast has one.",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
    },
    "type": {
      "description": "Blast type. The reference documents EMAIL only.",
      "type": "string",
      "const": "EMAIL"
    },
    "cursor": {
      "description": "Cursor from an earlier reply, to read the next results.",
      "type": "string"
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_search_segments(segmentIds, offset, count)

Get the definition of segments (supporter groups used for email targeting and export) by segment ID. Engage API: POST /integration/ext/v1/segments/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "segmentIds": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      },
      "description": "Segment UUIDs, up to 20 per call."
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "segmentIds"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_search_segment_members(segmentId, supporterIds, joinedSince, offset, count)

List the supporters in one segment, optionally only some supporter IDs or those who joined since a time. Engage API: POST /integration/ext/v1/segments/members/search.

入力スキーマ

{
  "type": "object",
  "properties": {
    "segmentId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
      "description": "Segment UUID."
    },
    "supporterIds": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      },
      "description": "Salsa Engage supporter IDs (UUIDs), up to 20 per call."
    },
    "joinedSince": {
      "description": "Only members who joined the segment on or after this UTC 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{3}(?:Z))$"
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "segmentId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢salsa_list_custom_fields(type, offset, count)

List the supporter and activity custom fields in this Engage organization, with their names and types. Use it before you write custom data. Engage API: GET /integration/ext/v1/customFields.

入力スキーマ

{
  "type": "object",
  "properties": {
    "type": {
      "description": "Only fields of this kind.",
      "type": "string",
      "enum": [
        "Supporter",
        "Activity"
      ]
    },
    "offset": {
      "description": "Items to skip. For the next page, send the previous offset plus the previous count.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "Items to return: 1 to 20 (the token batch limit).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴salsa_upsert_supporters(supporters)

Create or update up to 20 supporters in one call. Give supporterId to update a known supporter. For a supporter without it, Engage decides the match, so check each result, errors and warnings in the reply. Engage API: PUT /integration/ext/v1/supporters.

入力スキーマ

{
  "type": "object",
  "properties": {
    "supporters": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "supporterId": {
            "description": "Salsa Engage supporter ID (UUID) of the record to update.",
            "type": "string",
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
          },
          "externalSystemId": {
            "description": "Your own reference for this supporter (sent as externalSystemId).",
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "middleName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "suffix": {
            "type": "string"
          },
          "gender": {
            "description": "For example Male or Female, as the Engage census field allows.",
            "type": "string"
          },
          "dateOfBirth": {
            "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{3}(?:Z))$"
          },
          "address": {
            "type": "object",
            "properties": {
              "addressLine1": {
                "type": "string"
              },
              "addressLine2": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "state": {
                "description": "Two-letter US state code (CA), or an ISO 3166-2 code elsewhere (NL-NH).",
                "type": "string",
                "pattern": "^[A-Z]{2}(-[A-Z0-9]{1,3})?$"
              },
              "postalCode": {
                "type": "string"
              },
              "country": {
                "description": "ISO 3166-1 alpha-2 code in capitals, for example US or NL.",
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              }
            },
            "additionalProperties": {}
          },
          "contacts": {
            "description": "Email addresses and phone numbers for the supporter.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "Contact type, for example EMAIL."
                },
                "value": {
                  "type": "string",
                  "minLength": 1
                },
                "status": {
                  "description": "Opt-in status, for example OPT_IN.",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "value"
              ],
              "additionalProperties": {}
            }
          }
        },
        "additionalProperties": {}
      },
      "description": "Supporters to create or update, up to 20."
    }
  },
  "required": [
    "supporters"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

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