Funraise MCP by usefulapi
Read Funraise supporters, donations, recurring gifts and forms; add notes, tasks and supporters.
사용해야 할까요
품질 및 안전성
발견 사항 (5)
- LOWfunraise_list_form_custom_questions에서
- LOWfunraise_list_household_addresses에서
- LOWfunraise_list_supporter_addresses에서
- LOWfunraise_list_supporter_interactions에서
- LOWfunraise_list_user_interactions에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"funraise": {
"url": "https://funraise.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://funraise.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (28)
🟢funraise_list_supporters(email, last_hours, page, page_size)
List supporters (donors) in the Funraise CRM, newest first as Funraise returns them. Filter by exact email or by records changed in the last N hours. GET /api/v1/crm/supporter.
입력 스키마
{
"type": "object",
"properties": {
"email": {
"description": "Exact email address to look up.",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"last_hours": {
"description": "Only supporters created or changed in the last N hours.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_supporter(supporter_id)
One supporter: name, email, phone, tags, opt-ins, household, primary address, institution. GET /api/v1/crm/supporter/{id}.
입력 스키마
{
"type": "object",
"properties": {
"supporter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"supporter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_donations(transaction_id, last_hours, last_updated, last_id, page, ...)
List donations (transactions) with amount, date, supporter, form, campaign page, allocation, fees and tags. Filter by an exact transactionId, by last N hours, or by a lastUpdated timestamp; use last_id to continue from the last donation id of the previous page. GET /api/v1/crm/donation.
입력 스키마
{
"type": "object",
"properties": {
"transaction_id": {
"description": "Exact payment transaction id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"last_hours": {
"description": "Only donations created or changed in the last N hours.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"last_updated": {
"description": "Only donations updated since this ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z.",
"type": "string",
"minLength": 4,
"maxLength": 40
},
"last_id": {
"description": "Continue after this donation id (the last id of the previous page).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_donation(donation_id)
One donation by its Funraise id: amount, date, supporter, household, form, allocation, dedication, fees, UTM, subscription. GET /api/v1/crm/donation/{id}.
입력 스키마
{
"type": "object",
"properties": {
"donation_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"donation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_subscriptions(q, page, page_size)
List recurring gifts (subscriptions) with status, frequency, amount, next payment date and supporter. The q filter is a Funraise expression (Funraise requires it; default: id > 0 order by id asc), for example: id > 10 and status = "Cancelled" order by id asc. GET /api/v1/crm/subscription.
입력 스키마
{
"type": "object",
"properties": {
"q": {
"description": "Filter expression, e.g. id > 10 and status = \"Cancelled\" order by id asc. Default: id > 0 order by id asc (all subscriptions).",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_subscription(subscription_id)
One recurring gift by id: status, frequency, amount, last and next payment date, cancel date, supporter. GET /api/v1/crm/subscription/{id}.
입력 스키마
{
"type": "object",
"properties": {
"subscription_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_forms(type, status, version, page, page_size)
List donation and event forms, filtered by type, status and version. Needs the CREATOR role on the key. GET /api/v1/form.
입력 스키마
{
"type": "object",
"properties": {
"type": {
"description": "Form type filter, as shown in Funraise (for example donation or event).",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"status": {
"description": "Form status filter, for example active or archived.",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"version": {
"description": "Form version filter.",
"type": "string",
"minLength": 1,
"maxLength": 20
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_campaign_sites(archived, allow_fundraisers, page, page_size)
List campaign sites (fundraising pages), active by default or archived. Returns campaignSites with totalPageCount and totalRowCount. GET /api/v1/campaignSite/active or /archived.
입력 스키마
{
"type": "object",
"properties": {
"archived": {
"description": "true = archived sites, otherwise active sites.",
"type": "boolean"
},
"allow_fundraisers": {
"description": "Active sites only: filter by whether peer-to-peer fundraisers are allowed.",
"type": "boolean"
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_campaign_site(campaign_site_uuid)
One campaign site by UUID: configuration preview (payment options, goals, form, homepage, fundraiser settings). GET /api/v1/campaignSite/{uuid}.
입력 스키마
{
"type": "object",
"properties": {
"campaign_site_uuid": {
"type": "string",
"minLength": 8,
"maxLength": 64,
"description": "The campaign site UUID."
}
},
"required": [
"campaign_site_uuid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_form_custom_questions(form_id)
The custom questions attached to a form. GET /api/v2/form/{formId}/custom-question.
입력 스키마
{
"type": "object",
"properties": {
"form_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"form_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_household(household_id)
One household: name, salutation, member count, primary contact, preferred address, total giving. GET /api/v1/household/{householdId}.
입력 스키마
{
"type": "object",
"properties": {
"household_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"household_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_household_member(supporter_id)
The household membership of a supporter (household and supporter details). GET /api/v1/household/member/{supporterId}.
입력 스키마
{
"type": "object",
"properties": {
"supporter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"supporter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_household_addresses(household_id, sort, order, page, page_size)
Addresses of a household (paginated: list, page, pageSize, totalPageCount, totalRowCount). GET /api/v1/household/{householdId}/address.
입력 스키마
{
"type": "object",
"properties": {
"household_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Field to sort by.",
"type": "string",
"minLength": 1,
"maxLength": 40
},
"order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"household_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_supporter_addresses(supporter_id, sort, order, page, page_size)
Addresses of a supporter (paginated). GET /api/v1/supporter/{supporterId}/address.
입력 스키마
{
"type": "object",
"properties": {
"supporter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Field to sort by.",
"type": "string",
"minLength": 1,
"maxLength": 40
},
"order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"supporter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_address(address_id)
One address by id (street, city, state, postal code, country, primary flag, household and supporter). GET /api/v1/address/{addressId}.
입력 스키마
{
"type": "object",
"properties": {
"address_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"address_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_supporter_notes(supporter_id, sort, order, page, page_size)
Notes on a supporter's record (paginated). GET /api/v2/supporter/{id}/note.
입력 스키마
{
"type": "object",
"properties": {
"supporter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Field to sort by.",
"type": "string",
"minLength": 1,
"maxLength": 40
},
"order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"supporter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_household_notes(household_id, sort, order, page, page_size)
Notes on a household's record (paginated). GET /api/v2/household/{id}/note.
입력 스키마
{
"type": "object",
"properties": {
"household_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Field to sort by.",
"type": "string",
"minLength": 1,
"maxLength": 40
},
"order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Records per page, 1-100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"household_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_note(note_id)
One note by id, with title, body, importance and author. GET /api/v2/note/{id}.
입력 스키마
{
"type": "object",
"properties": {
"note_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"note_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_supporter_interactions(supporter_id)
The interaction log of a supporter (calls, emails, meetings): subject, description, action, assigned user, dates. GET /api/v1/interaction/donor/{donorId}.
입력 스키마
{
"type": "object",
"properties": {
"supporter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"supporter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_list_user_interactions(user_id)
Interactions assigned to a Funraise user (staff member). GET /api/v1/interaction/user/{userId}.
입력 스키마
{
"type": "object",
"properties": {
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_interaction(interaction_id)
One interaction by id. GET /api/v1/interaction/{id}.
입력 스키마
{
"type": "object",
"properties": {
"interaction_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"interaction_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢funraise_get_task(task_id)
One task by id: title, description, due date, status, assigned user, supporter, linked donation. GET /api/v2/task/{id}.
입력 스키마
{
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡funraise_create_supporter_note(supporter_id, title, body, important)
WRITE: add a note to a supporter's record in Funraise. Creates a new note each call. POST /api/v2/supporter/{id}/note.
입력 스키마
{
"type": "object",
"properties": {
"supporter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Note title."
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 32000,
"description": "Note text."
},
"important": {
"description": "Mark the note important (default false).",
"type": "boolean"
}
},
"required": [
"supporter_id",
"title",
"body"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡funraise_create_household_note(household_id, title, body, important)
WRITE: add a note to a household's record in Funraise. Creates a new note each call. POST /api/v2/household/{id}/note.
입력 스키마
{
"type": "object",
"properties": {
"household_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Note title."
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 32000,
"description": "Note text."
},
"important": {
"description": "Mark the note important (default false).",
"type": "boolean"
}
},
"required": [
"household_id",
"title",
"body"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡funraise_create_interaction(supporter_id, subject, description, action_required, completed_date)
WRITE: log an interaction (call, email, meeting) on a supporter's record. Creates a new interaction each call. POST /api/v1/interaction.
입력 스키마
{
"type": "object",
"properties": {
"supporter_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Short subject line."
},
"description": {
"description": "Details of the interaction.",
"type": "string",
"maxLength": 10000
},
"action_required": {
"description": "Type of action.",
"type": "string",
"enum": [
"Phone",
"Email",
"In person meeting",
"Attend event",
"Thank",
"Follow up",
"Share impact report",
"Other"
]
},
"completed_date": {
"description": "When it was completed, ISO 8601, e.g. 2026-10-20T15:00:00Z.",
"type": "string",
"minLength": 8,
"maxLength": 40
}
},
"required": [
"supporter_id",
"subject"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡funraise_create_task(title, supporter_id, transaction_id, description, action_required, ...)
WRITE: create a task in Funraise, linked to a supporter or to a donation (give at least one). Title is 40 characters at most. Creates a new task each call. POST /api/v2/task.
입력 스키마
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"description": "Task title, 40 characters at most."
},
"supporter_id": {
"description": "Supporter the task is about.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"transaction_id": {
"description": "Donation (transaction) the task is about.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": {
"description": "Task details.",
"type": "string",
"maxLength": 10000
},
"action_required": {
"description": "Type of action.",
"type": "string",
"enum": [
"Phone",
"Email",
"In person meeting",
"Attend event",
"Thank",
"Follow up",
"Share impact report",
"Other"
]
},
"due_date": {
"description": "Due date, ISO 8601, e.g. 2026-11-01T00:00:00Z.",
"type": "string",
"minLength": 8,
"maxLength": 40
},
"assigned_to_user_id": {
"description": "Funraise user id the task is assigned to.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"color": {
"description": "Task colour in Funraise, hex like #2979ff.",
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"required": [
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴funraise_complete_task(task_id)
WRITE: mark a task complete (sets the completed date to now; Funraise may also log an interaction if the task automation says so). PUT /api/v1/task/{id}/complete.
입력 스키마
{
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡funraise_create_supporter(first_name, last_name, email, phone, tags, ...)
WRITE: create a supporter (donor) record in Funraise. Creates a new record each call, so search with funraise_list_supporters (email) first to avoid duplicates. POST /api/v1/crm/supporter.
입력 스키마
{
"type": "object",
"properties": {
"first_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"last_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320
},
"phone": {
"type": "string",
"maxLength": 60
},
"tags": {
"description": "Tags as one string, as Funraise stores them.",
"type": "string",
"maxLength": 1000
},
"email_opt_in": {
"type": "boolean"
},
"sms_opt_in": {
"type": "boolean"
},
"address1": {
"type": "string",
"maxLength": 300
},
"address2": {
"type": "string",
"maxLength": 300
},
"city": {
"type": "string",
"maxLength": 200
},
"state": {
"type": "string",
"maxLength": 100
},
"postal_code": {
"type": "string",
"maxLength": 40
},
"country": {
"type": "string",
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거