---
name: iblai-connect-raisers-edge-nxt
description: "Read and write Raiser's Edge NXT data through the Blackbaud SKY API (Raiser's Edge NXT) and expose it to an ibl.ai agent as an MCP tool. Use when the user asks an agent to work with Raiser's Edge NXT data, or to set up a Raiser's Edge NXT MCP connection on ibl.ai."
metadata:
  kind: guide
---

# Raiser's Edge NXT connector for AI agents

> A starting point maintained on ibl.ai at https://ibl.ai/developer/connectors/raisers-edge-nxt — not part of the iblai/vibe repository. Checked against Blackbaud's documentation on October 20, 2026; test it against your own Raiser's Edge NXT setup before you rely on it.

Blackbaud's cloud fundraising CRM. It holds constituent records (addresses, emails, phones, education, relationships, notes, ratings), gifts, campaigns, funds, appeals, actions, opportunities and events.

## Auth & conventions

- **API:** Blackbaud SKY API (Raiser's Edge NXT) (REST). REST endpoints for constituents and their details; gifts, gift batches, splits and soft credits; campaigns, funds and appeals; actions; opportunities; events and participants; lists; plus webhooks for changes such as new gifts.
- **Base URL:** https://api.sky.blackbaud.com/
- **Access:** Public, self-serve. Anyone can create a SKY Developer account and subscribe (e.g. Standard APIs) on the My subscriptions page to get a subscription key. Reading an organization's data also needs OAuth 2.0 authorization from a user of that Raiser's Edge NXT environment.
- **Auth:** Subscription key header (Bb-Api-Subscription-Key); OAuth 2.0 authorization code. Every request carries Bb-Api-Subscription-Key and a Bearer token. Auth URL https://oauth2.sky.blackbaud.com/authorization, token URL https://oauth2.sky.blackbaud.com/token; the code flow needs a server to hold the secret.
- **Limits:** SKY API applies a short-term rate limit (429 Too Many Requests with Retry-After) and a daily quota (403 with Retry-After); thresholds depend on subscription tier. Blackbaud's Power Platform connector allows 500 calls per connection per 60 seconds.
- Keep Raiser's Edge NXT credentials in environment variables or the ibl.ai credential store. Never print a token in chat and never commit one to a file.
- Destructive or outward-facing calls are marked **Confirm with the user first** — do.

## Reads

- **Constituents** — Get, list and search constituents (constituent/v1); first, latest and greatest gift; lifetime giving; prospect status.
- **Constituent details** — Addresses, emails, phones, educations, relationships, notes, codes, ratings, consent records and custom fields.
- **Gifts** — Get and list gifts, gift batches, attachments and custom fields; gift splits, fundraisers and soft credits.
- **Actions and opportunities** — Get and list constituent actions and fundraising opportunities with attachments and custom fields.
- **Campaigns, funds, appeals** — Get and list campaigns, funds, appeals and packages.
- **Events** — Get and list events, participants, fees and participant options.

## Writes

- **Constituents and details** — Create individual or organization constituents; create and update addresses, emails, phones, notes, educations and relationships.
- **Gifts and gift batches** — Create gifts and gift batches, add gifts to a batch, update acknowledgement and receipt details.
- **Actions and opportunities** — Create and update constituent actions and opportunities.
- **Lists** — Create a list from a set of records or add records to a list.
- **Delete constituent code** — Delete a constituent code. **Confirm with the user first.**

## Expose it to an ibl.ai agent (MCP)

Blackbaud publishes an official MCP server, Blackbaud Connector for Anthropic Claude (https://webfiles-sc1.blackbaud.com/files/support/helpfiles/mcp/content/bb-mcp-connector.html). Register it below as-is, or host your own server that wraps the calls in this skill.

First install the ibl.ai platform skills and connect your organization (writes `IBLAI_ORG`, `IBLAI_USERNAME` and `IBLAI_API_KEY` to `.env`):

```bash
npx skills add iblai/vibe --all
# then, in your coding agent:
/iblai-api-login
```

Every call below sends `Authorization: Api-Token $IBLAI_API_KEY`.

1. **Register the server** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-servers/` with `name`, `url`, `transport` (`sse` | `websocket` | `streamable_http`) and `auth_type` (`none` | `token` | `oauth2`). Capture the returned `id`.
   - Raiser's Edge NXT supports per-user OAuth: `auth_type=oauth2` with `auth_scope=user` and a linked `oauth_service` makes each person connect their own account in the chat. It needs an `auth_{provider}` credential in the organization's credential store first.
2. **Create the connection** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-server-connections/` with `server`, `scope` (`platform` | `mentor` | `user`), `auth_type`, and either `credentials` + `authorization_scheme` or a `connected_service` id for OAuth. Credentials are masked on read; never send a masked value back.
3. **Enable it on the agent** — `GET https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mentors/{agent_id}/settings/`, add `mcp-tool` to `tool_slugs` and the server id to `mcp_servers`, then `PATCH` the full lists back. They are replaced, not merged.

Full reference: https://ibl.ai/developer/platform/mcp/mcp-connections and the `/iblai-api-agent-mcp` skill.

## Example prompts

- "Show this donor's lifetime giving and their three most recent gifts"
- "List open major-gift opportunities over $25,000 with no action in 90 days"
- "Log a call action on this constituent's record with my notes"
- "Which constituents gave to the Annual Fund last year but not this year?"

## Guardrails

- Donor personal data and giving history (financial records); alumni records can carry education details. Never pass payment card data (PCI) through an agent.
- Request the narrowest Raiser's Edge NXT scopes or role the task needs, and prefer a read-only credential for agents that only answer questions.
- Return the fields the user asked for, not whole records; do not paste personal data into chat that the user did not request.
- Before any write, show the user exactly what will change and wait for a yes.
- Respect the documented limits above: page through results and back off on rate-limit responses instead of retrying in a loop.

## References

- SKY API subscriptions (Blackbaud Help): https://help.blackbaud.com/docs/0/assets/skydev/content/plat-skydev-subscriptions.html
- Raiser's Edge NXT connector (Blackbaud, Microsoft): https://learn.microsoft.com/en-us/connectors/blackbaudraisersedge/
- Blackbaud Connector for Anthropic Claude: https://webfiles-sc1.blackbaud.com/files/support/helpfiles/mcp/content/bb-mcp-connector.html
- Blackbaud Connector for Anthropic Claude: https://webfiles-sc1.blackbaud.com/files/support/helpfiles/mcp/content/bb-mcp-connector.html
- This connector on ibl.ai: https://ibl.ai/developer/connectors/raisers-edge-nxt
- ibl.ai MCP server connections: https://ibl.ai/developer/platform/mcp/mcp-connections
