API operations for AI clients
The Scalar API MCP is generated from the same published contract as the API Reference. Use search-openapi-operations to discover a method and path, then execute-request with the returned Scalar identifiers. The operation IDs below identify the OpenAPI contract; they are not executor IDs. This catalog covers callable API operations, not the two outbound webhook schemas.
| OpenAPI operation ID | Request | Effect |
|---|---|---|
createChurch |
POST /v1/churches |
Write; confirm intended action |
listChurches |
GET /v1/churches |
Read |
importChurches |
POST /v1/churches/import |
Write; confirm intended action |
getChurch |
GET /v1/churches/{id} |
Read |
registerChurchBankAccount |
POST /v1/churches/{id}/bank-account |
Write; send from your backend, not through the assistant |
setChurchPayoutSchedule |
POST /v1/churches/{id}/payout-schedule |
Write; confirm intended action |
requestChurchVerification |
POST /v1/churches/{id}/verification |
Write; confirm intended action |
recordChurchConsent |
POST /v1/church_consents |
Write; confirm intended action |
getFlowSettings |
GET /v1/flow-settings |
Read |
saveFlowSettings |
PUT /v1/flow-settings |
Write; confirm intended action |
getAllowedOrigins |
GET /v1/allowed_origins |
Read |
saveAllowedOrigins |
PUT /v1/allowed_origins |
Write; confirm intended action |
createDonorSession |
POST /v1/donor_sessions |
Write; send from your backend, not through the assistant |
getDonorSession |
GET /v1/donor_sessions/{id} |
Read |
createManageSession |
POST /v1/manage_sessions |
Write; send from your backend, not through the assistant |
listEnrollments |
GET /v1/enrollments |
Read |
getEnrollment |
GET /v1/enrollments/{id} |
Read |
createRefund |
POST /v1/refunds |
Write; confirm intended action |
listRefunds |
GET /v1/refunds |
Read |
getRefund |
GET /v1/refunds/{id} |
Read |
cancelRefund |
POST /v1/refunds/{id}/cancel |
Write; confirm intended action |
listFinancialEvents |
GET /v1/financial_events |
Read |
listEvents |
GET /v1/events |
Read |
createWebhookEndpoint |
POST /v1/webhook_endpoints |
Write; send from your backend, not through the assistant |
listWebhookEndpoints |
GET /v1/webhook_endpoints |
Read |
testWebhookEndpoint |
POST /v1/webhook_endpoints/{id}/test |
Write; confirm intended action |
listWebhookDeliveries |
GET /v1/webhook_endpoints/{id}/deliveries |
Read |
deleteWebhookEndpoint |
DELETE /v1/webhook_endpoints/{id} |
Write; confirm intended action |
getSandboxFixtures |
GET /sandbox/fixtures |
Read |
simulateDeposit |
POST /sandbox/simulate/deposit |
Sandbox simulation; changes test state |
simulatePayrollConnected |
POST /sandbox/simulate/payroll-connected |
Sandbox simulation; changes test state |
simulatePayrollDisconnected |
POST /sandbox/simulate/payroll-disconnected |
Sandbox simulation; changes test state |
simulateConnectionBroken |
POST /sandbox/simulate/connection-broken |
Sandbox simulation; changes test state |
simulateAccountClosure |
POST /sandbox/simulate/account-closure |
Sandbox simulation; changes test state |
simulateLateReturn |
POST /sandbox/simulate/late-return |
Sandbox simulation; changes test state |
simulateKycOutcome |
POST /sandbox/simulate/kyc |
Sandbox simulation; changes test state |
simulateRefundReturned |
POST /sandbox/simulate/refund-returned |
Sandbox simulation; changes test state |
All POST operations require Idempotency-Key. Required fields, state prerequisites and responses are in the API Reference. Sandbox simulation endpoints do not exist in production. An accepted simulation is not proof that its asynchronous effect has completed. In the hosted sandbox flow, a person connects the payroll through the payroll provider's window in its test mode; simulatePayrollConnected and simulatePayrollDisconnected play that provider for scripts and CI that do not drive the window, and simulateConnectionBroken is the only way to break a connection in the sandbox.
Before a write, have the assistant show the environment, church or enrollment ID, action and idempotency key. In the sandbox, have it read the test values (donor phone numbers and code, church EINs, routing and account numbers) with getSandboxFixtures (GET /sandbox/fixtures) instead of inventing them. Church, donor session and enrollment IDs come from your own API responses and events, and consent comes from the donor in the flow; never let the assistant make them up. Do not put raw personal information or secrets in the prompt. Create webhook endpoints from your backend, not through the assistant: createWebhookEndpoint returns the whsec_ signing secret once, and an AI transcript would keep it; if that happens, delete the endpoint and create a new one. For the same reason, send registerChurchBankAccount (and a church creation or import that carries bank_account), createDonorSession and createManageSession from your backend: they carry bank account numbers or return a donor's one-time link; see What to run through the MCP. Donor changes and cancellation must happen in the donor's authenticated flow. createRefund returns money to a donor: before running it, have the assistant show the donation ID, the amount (or that it refunds what is left), the reason and cancel_recurrence, and wait for your confirmation.
Both servers list the same four tools: the documentation server (https://docs.rostergiving.com/mcp) and the API server (https://mcp.scalar.com/@rostergiving/…). Both run in Scalar's dynamic mode for the same documentation and API, which is why the four names repeat. Only the API server forwards your key, so an execution on the documentation server answers 401. Do not claim an import or simulation ran when execution failed; see MCP troubleshooting.