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

B
Calidad de la descripción
100%
Integridad del esquema
89%
Calidad de los nombres
80%
Riesgo de envenenamiento
40%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringen salsa_search_transactions
  • MEDIUMTool description contains suspicious base64-like encoded stringen salsa_get_email_blast_results
  • MEDIUMTool description contains suspicious base64-like encoded stringen salsa_search_segment_members

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~5,385Tokens (definiciones de herramientas)
~3.4 KBTamaño de respuesta típico
Impacto significativo en la atención (4.21% del contexto de 128k)

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-http

Qué puede hacer

Inventario de herramientas

Herramientas (11)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada11 herramientas