Salsa Engage MCP by usefulapi
Search supporters, donations, emails and segments; create or update supporters in Salsa Engage.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (4)
- HIGH
- MEDIUMen salsa_search_transactions
- MEDIUMen salsa_get_email_blast_results
- MEDIUMen salsa_search_segment_members
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"salsa-engage": {
"url": "https://salsa-engage.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://salsa-engage.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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"
}Comunidad
Evidencia