Raisely MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Read campaigns, donations, profiles and supporters; record offline donations and upsert users.
23 tools: 4 can delete or cancel things, 1 change things and 18 only read.
Scanned Oct 21, 2026
- Deletes or cancels4Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads18Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http raisely https://raisely.usefulapi.io/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnraisely_request
The server marks "raisely_request" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "raisely_request" says "request": a word for a change.
The description mentions "credentials".
What this check looks forMatched text
description: "Verify credentials and show the currently authenticated us..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
23 tools
Deletes or cancels 4Claude Code: deny
create_donationMUTATES Raisely data: records a donation (use for OFFLINE/manual donations — e.g.No findings
Why it is in this group
- The name "create_donation" says "create": a word for a change.
- The input carries an amount (input.amount) and a currency, so it moves money.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it MUTATES Raisely data: records a donation (use for OFFLINE/manual donations — e.g. cash or cheque). Raisely API: POST /donations with the body wrapped as { data: {...} }. Required by the API: amount (integer, in cents/smallest currency unit), currency (3-letter code), email (donor), type (ONLINE or OFFLINE), method (payment gateway, e.g. OFFLINE). Link it to a campaign/profile via campaignUuid/profileUuid. Everything else (firstName, lastName, message, date, items, public, private, ...) goes through `fields`. Returns the created donation.
Annotations the server declares
- title: Record a donation
- destructiveHint: true
create_postMUTATES Raisely data: publishes a post (a campaign/profile update).No findings
Why it is in this group
- The name "create_post" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it MUTATES Raisely data: publishes a post (a campaign/profile update). Raisely API: POST /posts with the body wrapped as { data: {...} }. Required by the API: path (the post's URL slug), body (the content), photoUrl. Link it to a profile via profileUuid (pass through `fields`). Extra fields (title, date, ...) via `fields`. Returns the created post.
Annotations the server declares
- title: Create a post
- destructiveHint: true
update_profileMUTATES Raisely data: updates a fundraising profile's goal/name/story.No findings
Why it is in this group
- The name "update_profile" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it MUTATES Raisely data: updates a fundraising profile's goal/name/story. Raisely API: PATCH /profiles/{path} with the body wrapped as { data: {...} } (only included fields change). Use `fields` for goal, name, description/story, public, private, and any other documented field. Set overwriteCustomFields:true to overwrite (rather than preserve) unspecified custom fields. The path is never sent in the body.
Annotations the server declares
- title: Update a fundraising profile
- destructiveHint: true
upsert_userMUTATES Raisely data: creates OR updates a supporter/donor, matched by email (safer than a plain create — no duplicates).No findings
Why it is in this group
- The name "upsert_user" says "upsert": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it MUTATES Raisely data: creates OR updates a supporter/donor, matched by email (safer than a plain create — no duplicates). Raisely API: POST /users/upsert with the body wrapped as { data: {...} }. Typed: email (the match key), firstName, lastName; everything else (phoneNumber, address, public, private, ...) via `fields`. Returns the upserted user.
Annotations the server declares
- title: Upsert a user
- destructiveHint: true
Changes things 1Claude Code: ask
raisely_requestPower-user escape hatch: GET any Raisely API path not wrapped by a dedicated tool.1 finding
Why it is in this group
- The name "raisely_request" says "request": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "raisely_request" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "raisely_request" says "request": a word for a change.
Description, as the server wrote it Power-user escape hatch: GET any Raisely API path not wrapped by a dedicated tool. READ-ONLY — only GET is allowed. Pass the FULL API path after the base, starting with a slash, INCLUDING any query string, e.g. "/subscriptions/{uuid}/donations" or "/donations?limit=50". Returns the parsed JSON.
Annotations the server declares
- title: Raw read request
- readOnlyHint: true
Only reads 18Claude Code: allow
get_authenticated_userVerify credentials and show the currently authenticated user plus their privileges.1 finding
Why it is in this group
- The name "get_authenticated_user" says "get": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "Verify credentials and show the currently authenticated us..."
Description, as the server wrote it Verify credentials and show the currently authenticated user plus their privileges. Raisely API: GET /authenticate. Use this first to confirm RAISELY_API_KEY works. Returns { data:{...} }.
Annotations the server declares
- title: Get authenticated user
- readOnlyHint: true
get_campaignFetch a single campaign by id or path/slug.No findings
Why it is in this group
- The name "get_campaign" says "get": a word for reading.
Description, as the server wrote it Fetch a single campaign by id or path/slug. Raisely API: GET /campaigns/{campaign}. Returns { data:{...} }.
Annotations the server declares
- title: Get a campaign
- readOnlyHint: true
get_donationFetch a single donation by uuid.No findings
Why it is in this group
- The name "get_donation" says "get": a word for reading.
Description, as the server wrote it Fetch a single donation by uuid. Raisely API: GET /donations/{uuid}. Returns { data:{...} }.
Annotations the server declares
- title: Get a donation
- readOnlyHint: true
get_profileFetch a single fundraising profile by path (a URL slug OR the uuid — a string either way).No findings
Why it is in this group
- The name "get_profile" says "get": a word for reading.
Description, as the server wrote it Fetch a single fundraising profile by path (a URL slug OR the uuid — a string either way). Raisely API: GET /profiles/{path}. Returns { data:{...} }.
Annotations the server declares
- title: Get a fundraising profile
- readOnlyHint: true
get_subscriptionFetch a single subscription (recurring donation) by uuid.No findings
Why it is in this group
- The name "get_subscription" says "get": a word for reading.
Description, as the server wrote it Fetch a single subscription (recurring donation) by uuid. Raisely API: GET /subscriptions/{uuid}. Returns { data:{...} }.
Annotations the server declares
- title: Get a subscription
- readOnlyHint: true
get_userFetch a single user (donor/supporter) by uuid.No findings
Why it is in this group
- The name "get_user" says "get": a word for reading.
Description, as the server wrote it Fetch a single user (donor/supporter) by uuid. Raisely API: GET /users/{uuid}. Returns { data:{...} }.
Annotations the server declares
- title: Get a user
- readOnlyHint: true
list_campaign_donationsConvenience: list donations for a specific campaign.No findings
Why it is in this group
- The name "list_campaign_donations" says "list": a word for reading.
Description, as the server wrote it Convenience: list donations for a specific campaign. Raisely API: GET /campaigns/{campaign}/donations. Returns { data:[...], pagination }.
Annotations the server declares
- title: List a campaign's donations
- readOnlyHint: true
list_campaign_profilesConvenience: list fundraising profiles for a specific campaign.No findings
Why it is in this group
- The name "list_campaign_profiles" says "list": a word for reading.
Description, as the server wrote it Convenience: list fundraising profiles for a specific campaign. Raisely API: GET /campaigns/{campaign}/profiles. Returns { data:[...], pagination }.
Annotations the server declares
- title: List a campaign's profiles
- readOnlyHint: true
list_campaignsList fundraising campaigns.No findings
Why it is in this group
- The name "list_campaigns" says "list": a word for reading.
Description, as the server wrote it List fundraising campaigns. Raisely API: GET /campaigns. Returns the list envelope { data:[...], pagination }.
Annotations the server declares
- title: List campaigns
- readOnlyHint: true
list_donationsList donations.No findings
Why it is in this group
- The name "list_donations" says "list": a word for reading.
Description, as the server wrote it List donations. Raisely API: GET /donations. Filter via `params` (e.g. campaign, status, sort, order). Returns { data:[...], pagination }.
Annotations the server declares
- title: List donations
- readOnlyHint: true
list_ordersList orders (ticket/product purchases).No findings
Why it is in this group
- The name "list_orders" says "list": a word for reading.
Description, as the server wrote it List orders (ticket/product purchases). Raisely API: GET /orders. Filter via `params`. Returns { data:[...], pagination }.
Annotations the server declares
- title: List orders
- readOnlyHint: true
list_postsList posts (campaign/profile updates).No findings
Why it is in this group
- The name "list_posts" says "list": a word for reading.
Description, as the server wrote it List posts (campaign/profile updates). Raisely API: GET /posts. Filter via `params`. Returns { data:[...], pagination }.
Annotations the server declares
- title: List posts
- readOnlyHint: true
list_profilesList fundraising profiles (individual/team fundraising pages).No findings
Why it is in this group
- The name "list_profiles" says "list": a word for reading.
Description, as the server wrote it List fundraising profiles (individual/team fundraising pages). Raisely API: GET /profiles. Filter via `params` (e.g. campaign, type, sort, order). Returns { data:[...], pagination }.
Annotations the server declares
- title: List fundraising profiles
- readOnlyHint: true
list_segmentsList saved audience segments.No findings
Why it is in this group
- The name "list_segments" says "list": a word for reading.
Description, as the server wrote it List saved audience segments. Raisely API: GET /segments. Returns { data:[...], pagination }.
Annotations the server declares
- title: List segments
- readOnlyHint: true
list_subscriptionsList subscriptions (recurring donations).No findings
Why it is in this group
- The name "list_subscriptions" says "list": a word for reading.
Description, as the server wrote it List subscriptions (recurring donations). Raisely API: GET /subscriptions. Filter via `params`. Returns { data:[...], pagination }.
Annotations the server declares
- title: List subscriptions
- readOnlyHint: true
list_tagsList tags used to label records.No findings
Why it is in this group
- The name "list_tags" says "list": a word for reading.
Description, as the server wrote it List tags used to label records. Raisely API: GET /tags. Returns { data:[...], pagination }.
Annotations the server declares
- title: List tags
- readOnlyHint: true
list_user_donationsConvenience: a donor's giving history.No findings
Why it is in this group
- The name "list_user_donations" says "list": a word for reading.
Description, as the server wrote it Convenience: a donor's giving history. Raisely API: GET /users/{uuid}/donations. Returns { data:[...], pagination }.
Annotations the server declares
- title: List a user's donations
- readOnlyHint: true
list_usersList users (donors/supporters/fundraisers).No findings
Why it is in this group
- The name "list_users" says "list": a word for reading.
Description, as the server wrote it List users (donors/supporters/fundraisers). Raisely API: GET /users. Filter via `params`. Returns { data:[...], pagination }.
Annotations the server declares
- title: List users
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http raisely https://raisely.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__raisely__get_authenticated_user",
"mcp__raisely__list_campaigns",
"mcp__raisely__get_campaign",
"mcp__raisely__list_profiles",
"mcp__raisely__get_profile",
"mcp__raisely__list_donations",
"mcp__raisely__get_donation",
"mcp__raisely__list_users",
"mcp__raisely__get_user",
"mcp__raisely__list_subscriptions",
"mcp__raisely__get_subscription",
"mcp__raisely__list_posts",
"mcp__raisely__list_orders",
"mcp__raisely__list_segments",
"mcp__raisely__list_tags",
"mcp__raisely__list_campaign_donations",
"mcp__raisely__list_campaign_profiles",
"mcp__raisely__list_user_donations"
],
"ask": [
"mcp__raisely__raisely_request"
],
"deny": [
"mcp__raisely__create_donation",
"mcp__raisely__upsert_user",
"mcp__raisely__update_profile",
"mcp__raisely__create_post"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as raisely. Review it before you use it.