MCP server
Run cascades from your AI assistant
@crscreditapi/cascades-mcp-server is a Model Context Protocol server that exposes
the Cascades API as 9 tools. It is a thin wrapper: every tool is exactly one
authenticated REST call using your own API key and scopes — no separate MCP auth, no data the
API does not already return.
Install
Pick your client. Signed-in readers get their sandbox key pre-filled in every snippet and one-click install links.
claude mcp add command, or .mcp.json.
Instructions
Claude Desktop
Merge into claude_desktop_config.json.
Instructions
Cursor
One-click install link, or .cursor/mcp.json.
Instructions
VS Code
One-click install link, or .vscode/mcp.json.
Instructions
Windsurf
Merge into mcp_config.json.
Instructions
ChatGPT
Needs remote MCP — not hosted yet.
Instructions
Requirements
- Node.js 18 or newer. Clients launch the server with
npx -y @crscreditapi/cascades-mcp-server; nothing else to install. - An API key with the right scopes:
workflows:read,workflows:write,executions:read,executions:write. Keys minted on API keys carry all of them. A key missing a scope gets403 insufficient_scopeon the affected tools only. - The host, not the API prefix: set
CASCADES_PROD_BASE_URLtohttps://cascades.crscreditapi.com— without/api/v1; the server appends it.
Before you let an agent loose
Tools
Each tool page lists the input schema, the REST operation behind it, and an example call. Descriptions are the ones the model sees.
| Tool | What it does | Access | REST call |
|---|---|---|---|
| cascades_create_workflow | Create a new cascade (decision workflow) from a JSON definition, owned by the API key's account. | write |
POST
/workflows
|
| cascades_delete_workflow | Delete a cascade (soft-delete). | destructive |
DELETE
/workflows/{id}
|
| cascades_generate_workflow | Build a cascade from a plain-English policy description using the Cascades AI builder, then create it (by default) so it is immediately runnable with cascades_trigger_workflow. | write |
POST
/workflows/generate
|
| cascades_get_execution | Fetch a single cascade execution by id to check its status and results. | read |
GET
/executions/{id}
|
| cascades_get_workflow | Fetch one cascade by id, including its full node graph (`definition`). | read |
GET
/workflows/{id}
|
| cascades_list_test_cases | List the pre-registered sandbox test-case subjects for a cascade — the synthetic applicants the CRS Testcase Service has authored for that cascade's products (e.g. specific credit-score bands). | read |
GET
/workflows/{id}/test_cases
|
| cascades_list_workflows | List the caller's saved Cascades (decision workflows) — their id, code, name, use_case, trigger_type, and whether each is active. | read |
GET
/workflows
|
| cascades_trigger_workflow | Run a saved cascade for an applicant — i.e. start a decision. | write |
POST
/workflows/{id}/trigger
|
| cascades_update_workflow | Update an existing cascade. | write |
PATCH
/workflows/{id}
|
A worked session
What an assistant does with the tools, from "what can I run" to a decision — list, test cases, trigger, then poll the execution.
-
You
List my cascades and run the standard tenant screening for one of the sandbox test cases.
-
Tool callCall
{ "active": true }Result{ "data": [ { "id": 157, "object": "workflow", "code": "WF-157", "name": "Tenant screening — standard", "use_case": "tenant_screening", "trigger_type": "manual", "active": true } ], "meta": { "page": 1, "per_page": 25, "total_count": 1, "total_pages": 1, "object": "list" } } -
Assistant
You have one active cascade: Tenant screening — standard (id 157). Looking up its registered test subjects.
-
Tool callCall
{ "workflow_id": 157 }Result{ "object": "test_case_list", "workflow_id": 157, "test_cases": [ { "id": 54, "case_name": "Cascades_Credit_720", "product_code": "TUC1001", "payload": { "applicant": { "first_name": "Sandrx", "last_name": "Bowkey" }, "property": { "state": "MD" } } } ] } -
Assistant
One subject is registered for its TransUnion credit pull: Cascades_Credit_720 (Sandrx Bowkey). Running it in test mode.
-
Tool callCall
{ "workflow_id": 157, "execution_mode": "test", "payload": { "applicant": { "first_name": "Sandrx", "last_name": "Bowkey" }, "property": { "state": "MD" } } }Result{ "data": { "id": 4821, "object": "execution", "workflow_id": 157, "status": "pending", "execution_mode": "test", "created_at": "2026-09-09T17:04:11Z" } } -
Assistant
Execution 4821 is pending — the run is asynchronous. Polling until it reaches a terminal status.
-
Tool callCall
{ "execution_id": 4821 }Result{ "data": { "id": 4821, "object": "execution", "workflow_id": 157, "status": "completed", "decision": "approve", "step_outputs": { "credit": { "score": 712 }, "decision": { "outcome": "approve" } } } } -
Assistant
Done: execution 4821 completed with decision approve. The credit step returned a 712 score, above the cascade's 680 threshold, and no other rule fired.
Test with MCP Inspector
Before wiring an editor, call the tools by hand. The Inspector starts the server with the same environment and opens a browser UI listing every tool.
CASCADES_API_KEY={{API_KEY}} CASCADES_PROD_BASE_URL=https://cascades.crscreditapi.com \
npx @modelcontextprotocol/inspector npx -y @crscreditapi/cascades-mcp-serverConfiguration
| Environment variable | Required | Description |
|---|---|---|
CASCADES_API_KEY | yes | Your bearer token. The server sends it as Authorization: Bearer … on every call. |
CASCADES_PROD_BASE_URL | yes | Cascades host without /api/v1, e.g. https://cascades.crscreditapi.com. |
CASCADES_DEV_BASE_URL | no | Alternate host used when a tool is called with environment: "dev"; falls back to the prod URL. |
CASCADES_TIMEOUT_MS | no | Per-request timeout, default 30000. |
MCP_TRANSPORT | no | stdio (default; what every editor uses) or http. |
MCP_PORT | no | Port for HTTP mode, default 3004. |