Raisely integrationRaisely logo

Raisely integration for AI agents.

Raisely integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Raisely tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real Raisely actions, managed and audited.

Your user connects Raisely once; your agent can then raisely is the sophisticated fundraising platform chosen by non-profits and charities around the world to take donations, run events, sell tickets, and engage donors. All in one seamless software platform — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants Raisely access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported Raisely tools.

101 tools are generated from the published Raisely catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 101 tools. All published catalog entries are included in this page's server-rendered HTML.

media
Add an image to the campaign media library. Accepts either a `multipart/form-data` upload or an `application/json` body with a `url` to fetch server-side. Accepted formats: PNG, JPG, GIF, WebP, SVG (max 20 MB). SVG files are sanitised before upload. An optional `folder` field (default: `"uploads"`) organises the upload; only lowercase letters, numbers, hyphens, and underscores are accepted. On success the new item is prepended to the campaign media library. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').all('media').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Media
media
Add an image to the organisation media library. Accepts either a `multipart/form-data` upload or an `application/json` body with a `url` to fetch server-side. Accepted formats: PNG, JPG, GIF, WebP, SVG (max 20 MB). SVG files are sanitised before upload. An optional `folder` field (default: `"uploads"`) organises the upload; only lowercase letters, numbers, hyphens, and underscores are accepted. On success the new item is prepended to the organisation media library. #### For custom components: `RaiselyComponents.api.one('organisations', '{organisation}').all('media').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Media
remove campaign
Deletes the campaign #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').delete(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
remove media
Remove a media item from the campaign media library by UUID. The underlying file is not deleted. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').one('media', '{uuid}').delete('{uuid}', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Media
remove donation
Delete a donation record. Only possible for OFFLINE donations. #### For custom components: `RaiselyComponents.api.one('donations', '{uuid}').delete(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
remove exercise log
Delete the specified **exercise log**. #### For custom components: `RaiselyComponents.api.one('exercise-logs', '{uuid}').delete(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Exercise Logs
remove interaction
Deletes an existing custom **interaction**. (Cannot delete system generated or read only interactions) #### For custom components: `RaiselyComponents.api.one('interactions', '{uuid}').delete(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interactions
remove media
Remove a media item from the organisation media library by UUID. The underlying file is not deleted. #### For custom components: `RaiselyComponents.api.one('organisations', '{organisation}').one('media', '{uuid}').delete('{uuid}', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Media
remove post
Delete the specified **post**. #### For custom components: `RaiselyComponents.api.one('posts', '{path}').delete(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Posts
remove profile
Archives a profile. Archived profiles are hidden from the campaign. #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').delete(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
remove record
Removes an assigned tag from the specified record #### For custom components: `RaiselyComponents.api.one('tags', '{uuid}').one('records', '{recordUuid}').delete('{recordUuid}', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Tags
remove webhook
Delete a webhook #### For custom components: `RaiselyComponents.api.one('webhooks', '{uuid}').delete(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Webhooks
get all
Raisely OpenAPI specification #### For custom components: `RaiselyComponents.api.all('api-docs').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Util
get all
Authenticate a token to confirm it's valid, check the logged-in user, or confirm token privileges. You can use /authenticate to find the organisation UUID of the token you are using, which may be useful in future requests. #### For custom components: `RaiselyComponents.api.all('authenticate').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Authentication
get campaign
Retrieve a specific **campaign**. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
media
Returns all images in the campaign media library. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').all('media').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Media
get all
Returns a list of campaigns you've previously created. The campaigns will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('campaigns').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
all designations
Returns designations associated with a campaign, ordered by sortOrder. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').get('designations', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Designations
all donations
Returns a list of donations you've previously created. The donations will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').get('donations', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
all products
Returns all products in a campaign #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').get('products', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Products
get campaign profile
Return the campaign profile <br><br> The campaign profile is the top level profile for all profiles in the campaign. It is hidden from the fundraising website, but will have the same name, path, and goal as your campaign. All profiles that don't otherwise belong to a team belong to the campaign profile, and their `parentUuid` field will refer to the campaign profile. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').get('profile', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
all profiles
Returns all fundraising profiles in a campaign #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').get('profiles', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
all subscriptions
Returns a list of subscriptions you've previously created. The subscriptions will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').get('subscriptions', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
get all
Returns a list of designations you've previously created. The designations will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('designations').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Designations
get donation
Retrieve a specific **donation**. #### For custom components: `RaiselyComponents.api.one('donations', '{uuid}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
get all
Returns a list of donations you've previously created. The donations will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('donations').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
all receipts
Returns a list of the receipts attached to this donation #### For custom components: `RaiselyComponents.api.one('donations', '{uuid}').get('receipts', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
get exercise log
Retrieve a specific **exercise log**. #### For custom components: `RaiselyComponents.api.one('exercise-logs', '{uuid}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Exercise Logs
get all
Returns a list of exercise logs you've previously created. The exercise logs will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('exercise-logs').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Exercise Logs
get interaction
Retrieve a specific **interaction**. #### For custom components: `RaiselyComponents.api.one('interactions', '{uuid}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interactions
get all
Returns all of the **interaction categories** in the organisation #### For custom components: `RaiselyComponents.api.all('interaction_categories').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interaction Categories
get all
Returns all **interactions** #### For custom components: `RaiselyComponents.api.all('interactions').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interactions
get order
Returns a specific order #### For custom components: `RaiselyComponents.api.one('orders', '{uuid}').get('{uuid}', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Orders
get all
Returns all orders in a campaign #### For custom components: `RaiselyComponents.api.all('orders').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Orders
media
Returns all images in the organisation media library. #### For custom components: `RaiselyComponents.api.one('organisations', '{organisation}').all('media').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Media
get post
Retrieve a specific **post**. #### For custom components: `RaiselyComponents.api.one('posts', '{path}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Posts
get all
Returns a list of posts you've previously created. The posts will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('posts').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Posts
get product
Returns a specific product #### For custom components: `RaiselyComponents.api.one('products', '{uuid}').get('{uuid}', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Products
get profile
Returns a specific profile #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
get all
Returns all fundraising profiles in a campaign #### For custom components: `RaiselyComponents.api.all('profiles').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
all donations
Returns a list of donations you've previously created. The donations will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').get('donations', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
all members
Returns list of all members of a team profile #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').all('members').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
all posts
Returns a list of posts you've previously created. The posts will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').get('posts', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
get promo code
Returns a specific promo code #### For custom components: `RaiselyComponents.api.one('promo_codes', '{uuid}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Promo Codes
get all
Returns all promo codes in a campaign #### For custom components: `RaiselyComponents.api.all('promo_codes').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Promo Codes
get all
Returns a list of segments you've previously created. The segments will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('segments').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Segments
all users
Get the users matched by the segment #### For custom components: `RaiselyComponents.api.one('segments', '{uuid}').get('users', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Segments
get subscription
Retrieve a specific **subscription**. #### For custom components: `RaiselyComponents.api.one('subscriptions', '{uuid}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Subscriptions
get all
Returns a list of subscriptions you've previously created. The subscriptions will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('subscriptions').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Subscriptions
all donations
Returns a list of donations you've previously created. The donations will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.one('subscriptions', '{uuid}').get('donations', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Subscriptions
get tag
Retrieve a specific **tag**. #### For custom components: `RaiselyComponents.api.one('tags', '{uuid}').get('{uuid}', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Tags
get all
Retrieve the list of tags. **NOTE** Unlike other endpoints, any tags flagged as private will not be present unless the request includes private=1 #### For custom components: `RaiselyComponents.api.all('tags').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Tags
all records
Get all Raisely records that are assigned the provided Tag #### For custom components: `RaiselyComponents.api.one('tags', '{uuid}').all('records').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Tags
get user
Retrieve a specific **user**. #### For custom components: `RaiselyComponents.api.one('users', '{uuid}').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
get all
Returns a list of users you've previously created. The users will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.all('users').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
all donations
Returns a list of donations you've previously created. The donations will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.one('users', '{uuid}').get('donations', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
all interactions
Returns all **interactions** for a given user #### For custom components: `RaiselyComponents.api.one('users', '{uuid}').get('interactions', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interactions
all profiles
Returns all fundraising profiles owned by the provided user #### For custom components: `RaiselyComponents.api.one('users', '{uuid}').get('profiles', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
all subscriptions
Returns a list of subscriptions you've previously created. The subscriptions will be returned in descending order of when they were created, unless you specify otherwise. #### For custom components: `RaiselyComponents.api.one('users', '{uuid}').get('subscriptions', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
profile url
Helper endpoint to verify if a profile url is taken for a given campaign, and make suggestions if the path queried is not available #### For custom components: `RaiselyComponents.api.all('utils').get('profile-url', params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
get all
Retrieve the list of webhooks configured for the campaign #### For custom components: `RaiselyComponents.api.all('webhooks').get(params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Webhooks
update campaign
Updates the campaign with the new data #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
update config
Update a subkey of the config. This will overwrite the entire value of the key #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').one('config', '{attribute}').patch('{attribute}', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
update donation
Update the specified donation #### For custom components: `RaiselyComponents.api.one('donations', '{uuid}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
move
Move a donation to a different profile (the profile may be located in a different campaign) #### For custom components: `RaiselyComponents.api.one('donations', '{uuid}').patch('move', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
update exercise log
Updates an existing exercise log #### For custom components: `RaiselyComponents.api.one('exercise-logs', '{uuid}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Exercise Logs
update interaction
Updates a specific **interaction**. Only interaction.details may be updated (Cannot delete system generated or read only interactions) #### For custom components: `RaiselyComponents.api.one('interactions', '{uuid}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interactions
pin
Pin / Unpin an **interaction** #### For custom components: `RaiselyComponents.api.one('interactions', '{uuid}').patch('pin', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interactions
update post
Update the specified **post**. #### For custom components: `RaiselyComponents.api.one('posts', '{path}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Posts
update profile
Updates a specific **profile** #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
join
Joins the specified profile to a a new parent #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').patch('join', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
leave
Leaves the team profile (joins the campaign profile) #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').patch('leave', data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
update promo code
Updates a specific promo code #### For custom components: `RaiselyComponents.api.one('promo_codes', '{uuid}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Promo Codes
update subscription
Update the subscription If you update the frequency or count for a donation, the nextPayment will be recalculated (unless you also update the nextPayment) based on the last donation or the date the subscription was created If nextPayment is set to a time in the past, it will be set to the current time #### For custom components: `RaiselyComponents.api.one('subscriptions', '{uuid}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Subscriptions
update user
Update the specified **user**. #### For custom components: `RaiselyComponents.api.one('users', '{uuid}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
update webhook
Update the specified **webhook**. #### For custom components: `RaiselyComponents.api.one('webhooks', '{uuid}').patch(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Webhooks
add campaign
Create a new or cloned campaign #### For custom components: `RaiselyComponents.api.all('campaigns').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
register
Registers a user and creates a fundraisng profile for them and also (optionally) creates or adds them to a team, makes a donation or registration fee. **Campaign API key authentication:** When the request is authenticated with a campaign secret key (Authorization header, Bearer raisely-sk-...) and the explicit-user rollout is enabled for the organisation, you must supply data.user with the registrant's details (email, firstName, lastName, password, etc.). User fields must be nested under data.user — top-level data.firstName, data.email, and similar fields are not read. Omitting data.user returns 400 invalid value. The registrant may be any user (matched by email within the campaign's organisation), including the API key owner. JWT or session authentication is unchanged (a logged-in user may register without data.user). If creation is successful, the response will include a token and accessToken. However, if a user with that email already exists in the campaign, the user will be sent an email to confirm that they want to add the profile to their account. The records are created simultaneously in full or not at all. If there is a problem with the donation or profile, then all records will not be created. The exception is for donations. If the Stripe gateway is using the PAYMENT_INTENT method, then the donation must already be created to facilitate payment, the donation is completed (or fails) as part of the registration. If the registration is successful, the donation record will be assigned to the profile once it's created. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').all('register').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Authentication
restore
Restores the campaign #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').all('restore').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Campaigns
check user
Check if a user is already registered to this campaign with a specific email address. This is useful for validation in a sign-up form to prompt an existing user to log in. #### For custom components: `RaiselyComponents.api.all('check-user').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Authentication
add donation
Record a donation processed elsewhere in Raisely. These donations are recorded with a type of `OFFLINE` in Raisely to indicate they were processed externally. **Note:** Adding an offline donation does not automatically send a receipt. You need to call the `resend` API to issue a receipt for an offline donation after it has been added to Raisely. #### For custom components: `RaiselyComponents.api.all('donations').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
match
Match a donation using the specified matched giving configuration #### For custom components: `RaiselyComponents.api.one('donations', '{uuid}').all('match').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
resend
Send, or re-send, a donation receipt. If the donation was already receipted in Raisely, calling this API will mark the previous receipt as void and re-issue a new receipt. Optionally include an email in the API payload to send the receipt to an alternate email address, without updating the donation record. **Offline Donations** If you have added an offline donation, Raisely (out of an abundance of caution) doesn't automatically send a receipt. Calling this API after you've added an offline donation will trigger a receipt to be generated and sent to the donor. #### For custom components: `RaiselyComponents.api.one('donations', '{uuid}').all('resend').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Donations
add exercise log
Creates a new **exercise log** #### For custom components: `RaiselyComponents.api.all('exercise-logs').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Exercise Logs
add interaction
Creates a new **interaction** #### For custom components: `RaiselyComponents.api.all('interactions').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Interactions
login
Exchange an email and password for a token used for future requests. This endpoint can be used by admin or participant accounts. If you're logging in a participant, an organisationUuid must be present in the body. #### For custom components: `RaiselyComponents.api.all('login').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Authentication
logout
Invalidate the token used by this request #### For custom components: `RaiselyComponents.api.all('logout').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Authentication
resend
Resend an order receipt #### For custom components: `RaiselyComponents.api.one('orders', '{uuid}').all('resend').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Orders
add post
Create a new **post**. **Specifying the post author (explicit-user rollout):** When the explicit-user rollout is enabled for the organisation, data.userUuid is an optional author override. Campaign API key authentication (Authorization header, Bearer raisely-sk-...) and organisation/campaign admins may supply data.userUuid to author the post on behalf of any user in the same organisation; a userUuid from another organisation returns 404 not found. data.userUuid is never required — when it is omitted (or supplied by a non-admin who cannot override), the author defaults to the authenticated user. Non-admin callers cannot author as someone else. #### For custom components: `RaiselyComponents.api.all('posts').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Posts
add member
Create a new **member** on the parent profile. **Owner of the member profile:** data.userUuid is optional. When supplied it identifies the existing user who will own the member profile; under campaign API key authentication (Authorization header, Bearer raisely-sk-...) with the explicit-user rollout enabled, the user must belong to the same organisation as the campaign — a userUuid from another organisation returns 404 not found. When data.userUuid is omitted, the member defaults to the authenticated user (for a campaign API key that is the key owner). #### For custom components: `RaiselyComponents.api.one('profiles', '{path}').all('members').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Profiles
add promo code
Creates a new promo code #### For custom components: `RaiselyComponents.api.all('promo_codes').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Promo Codes
signup
Sign up a new user to your campaign. If the user you are registering is unknown you'll receive a token for the new user to use for future authenticated requests. If the user already exists in your organisation's database, they will be sent the Account Confirmation email and the API will return a human-friendly message. <br> _Note: Using /signup won't create a fundraising profile. You can create a profile later, or you can use /register. We recommend using /register when signing up a new fundraiser to a campaign._ #### For custom components: `RaiselyComponents.api.all('signup').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Authentication
add subscription
Creates a new subscription (otherwise known as a regular donation) in Raisely. External applications may use this endpoint to import regular donations created offline into Raisely, as long as you have tokenised card details in Stripe. To create a new subscription, you need to have a **customer** and **card** in Stripe, then set the `source` to `OFFLINE`. If you omit the `nextPayment` date, a payment will be taken immediately, otherwise it will be taken after the date specified. This endpoint must be authenticated. *Note: Raisely charges processing fees for imported subscriptions. Contact us for more information.* #### For custom components: `RaiselyComponents.api.all('subscriptions').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Subscriptions
add record
Assigns the provided tag to the specified records #### For custom components: `RaiselyComponents.api.one('tags', '{uuid}').all('records').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Tags
add user
Create a new **user** #### For custom components: `RaiselyComponents.api.all('users').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
add access token
Generates a fresh short-lived access token for an active non-admin user. Public/API callers require authenticated ORG_ADMIN or campaign API-key access for the target user's organisation. #### For custom components: `RaiselyComponents.api.one('users', '{uuid}').all('access-tokens').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
access tokens batch
Generates short-lived access tokens for up to 1,000 active non-admin users in a single request. Requires ORG_ADMIN or campaign API-key access. The server always sets context to 'public_api_bulk'; callers may not supply their own context. Duplicate UUIDs in the input are deduplicated (first occurrence wins). Results are returned in the same order as the deduplicated input array, with per-user error codes for any user that could not be issued a token. #### For custom components: `RaiselyComponents.api.all('users').all('access-tokens').all('batch').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
magic link
Request a magic link email for passwordless login. If the email matches an existing user, a magic link email will be sent. The response is always generic to prevent user enumeration. #### For custom components: `RaiselyComponents.api.all('users').all('magic-link').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Authentication
upsert
Upsert a user record, optionally tagging and creating an interaction. Useful for accepting form submissions. Requires a campaign UUID to be provided as a query parameter. #### For custom components: `RaiselyComponents.api.all('users').all('upsert').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Users
add webhook
Add a new webhook to your Raisely account. By default, this webhook will trigger for events across all campaigns in your Raisely account. Specify a `campaignUuid` if you'd like to restrict it to one campaign. #### For custom components: `RaiselyComponents.api.all('webhooks').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Webhooks
add media
Upload one or more files to the **media library** of your campaign. #### For custom components: `RaiselyComponents.api.one('campaigns', '{campaign}').one('media', '{folderUuid}').post(data = {}, params = {}, headers = {}) => Promise<{result}>` :fa-gears: See [Restie Response Data](https://github.com/raisely/restie#reading-and-handling-responses) for a more detailed overview of responses through the client wrapper
Media
FAQ

Raisely integration, answered

How do AI agents use Raisely through Open Connector?
Your user connects Raisely once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Raisely tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a Raisely MCP server?
Yes. Open Connector can serve Raisely as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Raisely actions with credentials injected server-side.
Where do Raisely credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents Raisely — keep the keys.

Open source, self-hostable, with Raisely credentials that never leave your infrastructure. Run it from source today.