Funraise MCP by usefulapi

Read Funraise supporters, donations, recurring gifts and forms; add notes, tasks and supporters.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
87%
이름 품질
76%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (5)

  • LOWTool 'funraise_list_form_custom_questions' name length outside 3-30 rangefunraise_list_form_custom_questions에서
  • LOWTool 'funraise_list_household_addresses' name length outside 3-30 rangefunraise_list_household_addresses에서
  • LOWTool 'funraise_list_supporter_addresses' name length outside 3-30 rangefunraise_list_supporter_addresses에서
  • LOWTool 'funraise_list_supporter_interactions' name length outside 3-30 rangefunraise_list_supporter_interactions에서
  • LOWTool 'funraise_list_user_interactions' name length outside 3-30 rangefunraise_list_user_interactions에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~5,475토큰 (도구 정의)
~1.3 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 4.28%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 28개