# Ocrolus MCP connector

The Ocrolus connector for Elaichi lets Claude, ChatGPT, Cursor, or any MCP client read and work with your Ocrolus books, documents, transactions, fraud signals, and cash flow analysis, with each person signed in as themselves and every action logged.

Source: https://elaichi.ai/connectors/ocrolus/

## Facts

| | |
| --- | --- |
| Application | Ocrolus |
| Category | Accounting |
| AI tools | 67 |
| Authentication | App credentials |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 67 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Ocrolus is connected

- Summarize the books created in Ocrolus this week.
- List documents still processing in the Lending Ops book.
- Show fraud signals flagged on last month's Ocrolus books.

## Connect Ocrolus in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Ocrolus.
2. Optionally set Share with, then press Connect.
3. Paste your Ocrolus app credentials. Ocrolus authenticates the app rather than a person. One person supplies the credentials once, and everyone else works through Share with.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Ocrolus tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Ocrolus to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Ocrolus to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Ocrolus to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Ocrolus to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Ocrolus tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Ocrolus through Elaichi

### Read a borrower's book summary before the call

Underwriting. Ask for the summary and form data on an applicant's Ocrolus book and get income, balances, and the key figures from their bank statements and pay stubs in plain language, without opening the dashboard.

### Check fraud signals before approving a file

Fraud and risk. Pull the fraud signals on a book or on a single uploaded document and ask what was flagged, so tampered statements or altered pay stubs are caught before a decision is made.

### Open a book and upload the applicant's PDFs

Loan operations. Create a new Ocrolus book for a borrower, upload the bank statements and mixed PDFs they sent over, and check status until processing is done.

### Review enriched transactions and cash flow features

Credit analysis. List the enriched transactions on a book, ask for the cash flow features, and have the agent explain recurring deposits, overdrafts, and monthly revenue trends for a small business applicant.

### Confirm every document was classified correctly

Quality control. Ask for the classification summary on a book to see which pages were recognized as bank statements, tax forms, or pay stubs, and spot documents that still need attention.

### Import a Plaid asset report into a book

Onboarding. Bring an applicant's Plaid asset report into their Ocrolus book alongside the documents they uploaded, so the underwriter works from one complete file.

## Frequently asked questions

### How do I connect Ocrolus to Claude?

Connect Ocrolus in Elaichi first: pick Ocrolus from the catalog and enter the app credentials from your Ocrolus account, which takes a couple of minutes. There is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Sign in with your Elaichi account and Ocrolus is available in your chat.

### Does Ocrolus work with ChatGPT and Cursor as well as Claude?

Yes. Once Ocrolus is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Ocrolus once and every client you use picks it up.

### What can an AI agent actually do with my Ocrolus data?

With Ocrolus connected, an agent can create a book for a borrower, upload their bank statements and pay stubs, check processing status, and read back the summary, form data, and classification results. It can list transactions and enriched transactions, pull cash flow features, and report fraud signals on a book or a single document. Because Ocrolus has a large set of actions, short concrete asks like "fraud signals on the Acme book" work better than long sentences.

### Does connecting Ocrolus give the AI access to every book in our account?

No. Every call to Ocrolus runs inside the access of the person who signed in to Elaichi, so an agent sees the books and documents that person can already see in Ocrolus and nothing more. Elaichi can narrow that further, for example to read-only actions for a team, but it can never widen access beyond what Ocrolus itself allows.

### Can my team share one Ocrolus connection?

Yes. One person connects Ocrolus in Elaichi and shares the connection with a team, and nobody else ever handles the Ocrolus app credentials. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual underwriter or analyst behind every book opened or document uploaded.

### Can I stop an agent from deleting or changing things in Ocrolus?

Yes. Restrictions in Elaichi apply per action, so you can block deleting Ocrolus books or documents, or block uploads, while leaving summaries, transactions, and fraud signals available. A blocked action is never advertised to Claude, ChatGPT, or Cursor at all, so no prompt, however worded, can reach it.

### What happens to an Ocrolus connection when someone leaves?

Offboarding a person in Elaichi ends their access to Ocrolus at once, across Claude, ChatGPT, Cursor, and every other client they used. A shared Ocrolus connection keeps working for everyone else on the team. If you want to remove Ocrolus entirely, disconnecting it once in Elaichi removes it from every client for everyone.

## All 67 Ocrolus tools

Every tool below is callable through https://api.elaichi.ai/mcp once Ocrolus is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Ocrolus books** (List). List Ocrolus books with optional filtering by name, keyword search, or external ID. Returns: pk, book_uuid, name, book_class, book_type, is_public, xid, created. Results are returned in descending order by default.
- **Create a Ocrolus book** (Create). Create a new Book in Ocrolus for organizing and processing documents. Returns: pk, book_uuid, name, book_class, book_type, is_public, xid, created. Required: name.
- **Get single Ocrolus book by ID** (Get). Get information about a specific Ocrolus Book by UUID or primary key. Returns: pk, book_uuid, name, book_class, book_type, is_public, xid, created. Required: book_uuid or pk (mutually exclusive).
- **Ocrolus books get status** (Get). Get the processing status of an Ocrolus Book by UUID or primary key. Returns: pk, book_uuid. Required: book_uuid or pk (mutually exclusive).
- **Update a Ocrolus book by ID** (Update). Update an existing Ocrolus Book's name, processing class, type, visibility, or external ID. Returns: pk, book_uuid, name, book_class, book_type, is_public, xid, created. Required: book_uuid or pk (mutually exclusive).
- **Delete a Ocrolus book by ID** (Delete). Delete an Ocrolus Book by providing either its primary key or UUID. Returns an empty 204 response on success. Required: book_id or book_uuid (mutually exclusive).
- **Ocrolus books get classification summary** (Get). Get the document classification summary for an Ocrolus Book. Returns a classification summary object with form type breakdowns and duplicate detection results. Required: book_uuid.
- **Ocrolus books get form data** (Get). Get form data extracted from documents in an Ocrolus Book. Returns the captured form field values for the specified Book. Required: book_uuid or pk (mutually exclusive).
- **Ocrolus books get summary** (Get). Get the analytics summary for an Ocrolus Book containing bank statement transactions. Returns: job_id. Required: book_uuid. Books with more than 100,000 transactions require async=true; books exceeding 1,000,000 transactions are rejected.
- **Ocrolus books get fraud signals** (Get). Get fraud detection signals for an Ocrolus Book. Returns the fraud analysis results including dashboard_url. Required: book_uuid.
- **Ocrolus documents upload PDF** (Upload). Upload a PDF file to an Ocrolus Book for processing as a typed document. Returns: status, message, response. Required: upload, book_uuid, form_type. book_uuid and pk are mutually exclusive. Max 200 MB or 3000 pages per document.
- **Ocrolus documents upload mixed PDF** (Upload). Upload a mixed PDF to an Ocrolus Book for automatic document classification. Returns: status, message, response. Required: upload, book_uuid. book_uuid and pk are mutually exclusive. Max 200 MB or 3000 pages per document.
- **Ocrolus documents upload JSON** (Upload). Upload a Plaid or Finicity JSON file to an Ocrolus Book for analytics or reconciliation processing. Returns: status, message, response, grant_type. Required: either pk or uuid (the Book identifier) and upload (the JSON file). The upload_intent parameter controls whether transactions are added for analytics or matched against existing bank statement data for mismatch detection.
- **Ocrolus documents import plaid asset report** (Import). Import a Plaid Asset Report into an Ocrolus Book, creating a new Document from the provided asset report copy token. Returns the standard Ocrolus response envelope with status, message, and a response object containing the import result. Required: pk, audit_copy_token.
- **Delete a Ocrolus document by ID** (Delete). Delete a Document from an Ocrolus Book by doc_uuid or doc_id. Exactly one of doc_uuid or doc_id must be provided (mutually exclusive). Returns an empty 204 response on success.
- **Ocrolus documents download** (Download). Download an Ocrolus document file by its doc_uuid. Returns the raw binary file content of the document (content-type specific, e.g. PDF). Required: doc_uuid.
- **Ocrolus documents get fraud signals** (Get). Get fraud detection signals for a single Ocrolus document by uploaded_doc_uuid. Returns: doc_analysis, dashboard_url. Required: uploaded_doc_uuid.
- **Ocrolus documents get mixed document classification summary** (Get). Retrieve the document classification summary for a mixed (multi-document) upload, showing how each page or sub-document was classified.
- **Ocrolus image groups finalize** (Action). Mark an uploaded image group as complete in Ocrolus, constructing a Document from the uploaded images. Returns: status, message, response. Supply either book_uuid or pk (mutually exclusive).
- **Ocrolus image groups upload image** (Upload). Upload an image file to an Ocrolus Book as part of an image group. Returns: status, message, response. Required: upload. Supply either book_uuid or pk (mutually exclusive). Maximum file size 200 MB.
- **Ocrolus detect get visualization** (Get). Retrieve an Ocrolus Detect visualization by its UUID. Returns a content-type-specific response — a PNG image by default, or JSON data when an application/json accept header is supplied. Required: visualization_id.
- **List all Ocrolus transactions** (List). List Ocrolus transactions for a Book or Document after processing has completed. Returns transaction records extracted from processed bank statements. Filter by Book identifier (book_uuid or book_pk, mutually exclusive) or Document identifier (uploaded_doc_uuid or uploaded_doc_pk, mutually exclusive).
- **Ocrolus transactions list enriched** (List). List enriched transactions for an Ocrolus Book, including enrichment tags, categories, and counterparties. Returns: job_id, pending_plaid_transactions, tags, categories, counterparties. Required: book_uuid. Async mode is required for Books with over 100,000 transactions; Books exceeding 1,000,000 transactions are rejected.
- **Ocrolus cash flow get features** (Get). Get cash flow features analytics for an Ocrolus Book by book_uuid, analyzing all bank statements in the Book. Returns the cash flow features analytics payload, or job_id when async is enabled. Required: book_uuid. Async is required for Books with more than 100,000 transactions; Books exceeding 1,000,000 transactions are rejected.
- **Ocrolus cash flow get risk score** (Get). Get the cash flow risk score for an Ocrolus Book by book_uuid. Returns the risk score analytics payload, or job_id when async is enabled. Required: book_uuid. Async is required for Books with more than 100,000 transactions; risk score must be enabled for the organization.
- **Ocrolus cash flow get benchmarking** (Get). Get benchmarking analytics for an Ocrolus Book by book_uuid, comparing the Book's cash flow metrics against a peer group filtered by geography, industry level, and time window. Returns benchmark analytics data for the Book. Required: book_uuid. Peer group must contain at least 30 Books.
- **Ocrolus cash flow get job status** (Get). Poll the status of an asynchronous analytics job (e.g. a cash flow risk score or benchmarking request that returned a job ID because it was submitted with async=true). Returns a presigned result URL once complete.
- **Ocrolus income get summary** (Get). Get an Ocrolus income summary for a Book, filtered by underwriting guideline. Returns: attributes. Required: book_uuid. The guideline parameter defaults to FANNIE_MAE and supports FANNIE_MAE, FREDDIE_MAC, FHA, VA, and USDA.
- **Ocrolus income get calculations** (Get). Get Ocrolus income calculations for a Book, filtered by underwriting guideline. Returns: attributes. Required: book_uuid. The guideline parameter defaults to FANNIE_MAE and supports FANNIE_MAE, FREDDIE_MAC, FHA, VA, and USDA.
- **Ocrolus income calculate self employed fm** (Action). Calculate self-employed income for a borrower in an Ocrolus Book using Fannie Mae guidelines. Returns: attributes (the calculated self-employed income data object). Required: book_uuid, borrower_uuid, business_uuid, meta_info. The income_guideline parameter defaults to FANNIE_MAE.
- **Ocrolus income get bsic** (Get). Get Bank Statement Income Calculator (BSIC) analytics for an Ocrolus Book. Returns: attributes. Required: book_uuid. Returns 425 when analytics are still processing.
- **Ocrolus income get bsic excel** (Get). Download Bank Statement Income Calculator (BSIC) analytics for an Ocrolus Book as an Excel spreadsheet file. Required: book_uuid. Returns a binary .xlsx file with BSIC analysis data; returns 425 when analytics are still processing.
- **Ocrolus income configure entity** (Action). Configure the borrower/entity details required for income calculation on a book, including employment start date and income type (wage earner or self-employed).
- **Ocrolus income update guideline** (Update). Set the underwriting guideline used for income calculations on a book (e.g. Fannie Mae, Freddie Mac, FHA, VA, USDA, or conventional).
- **Ocrolus webhooks configure** (Action). Configure an Ocrolus webhook endpoint with a URL and list of events to subscribe to. The event list replaces all existing subscriptions. Returns: webhook_uuid, url, event_names. Required: url, event.
- **Get single Ocrolus webhook by ID** (Get). Get a single Ocrolus webhook by id. Returns: webhook_uuid, url, event_names. Required: id.
- **Ocrolus webhooks get configuration** (Get). Get the current Ocrolus webhook configuration details. Returns: webhook_uuid, url, event_names.
- **Update a Ocrolus webhook by ID** (Update). Update an Ocrolus webhook's event subscriptions by uuid. The event list replaces all existing subscriptions. Returns: webhook_uuid, url, event_names. Required: webhook_uuid, webhook.event_names.
- **Ocrolus webhooks test** (Test). Test the configured Ocrolus webhook endpoint by sending a test request to verify connectivity. Returns: webhook_endpoint.
- **Ocrolus webhooks test org** (Test). Test a specific Ocrolus org-level webhook by replaying a given event to verify the endpoint receives it. Returns: webhook_endpoint. Required: webhook_uuid, event_uuid.
- **Ocrolus webhooks list events** (List). List events subscribed to a specific Ocrolus webhook. Returns: event_uuid, event_name. Required: webhook_uuid.
- **Ocrolus webhooks bulk delete** (Delete). Delete an Ocrolus webhook by uuid. Returns: webhook_uuid, url, event_names. Required: webhook_uuid.
- **Create a Ocrolus webhook** (Create). Register a new org-level webhook subscription for one or more event types. This is distinct from the legacy single-endpoint account configuration (see configure) and supports multiple concurrent subscriptions.
- **List all Ocrolus webhooks** (List). List all org-level webhook subscriptions configured for the account.
- **Ocrolus webhooks rotate secret** (Rotate). Rotate the signing secret for an org-level webhook subscription. Use this to periodically refresh credentials or respond to a suspected leak.
- **Ocrolus auth grant token** (Action). Retrieve a JWT-compliant access token from Ocrolus for use with all other API endpoints. Returns: access_token, token_type, expires_in. Required: grant_type, client_id, client_secret. Tokens expire after 24 hours (86,400 seconds); refreshing every 12 hours is recommended.
- **List all Ocrolus users** (List). List users belonging to the authenticated organization account.
- **Ocrolus users create invitation** (Create). Invite a new user to join the organization account by email. The invitation is valid for 7 days.
- **Ocrolus users list invitations** (List). List pending invitations sent to prospective users of the organization account.
- **Ocrolus business get identifier** (Get). Retrieve the business identifier and display name associated with a book. Use this to resolve a book_uuid into a business_id for use with other business endpoints.
- **Get single Ocrolus business by ID** (Get). Retrieve full metadata for a business, including industry classification, loan history, and addresses. A business aggregates data across multiple books belonging to the same underlying entity.
- **Ocrolus business list transactions** (List). List deduplicated, enriched transactions across all books belonging to a business. Unlike the book-scoped transactions endpoint, this aggregates and deduplicates transactions across the business's entire book history.
- **Ocrolus business get summary** (Get). Retrieve a financial summary for a business, aggregated across its books, over an optional date range.
- **Create a Ocrolus tag** (Create). [Beta] Create a custom transaction tag for categorizing transactions in analytics and cash flow reporting.
- **List all Ocrolus tags** (List). [Beta] List available transaction tags, optionally filtered by tag type (system or custom).
- **Get single Ocrolus tag by ID** (Get). [Beta] Retrieve a single transaction tag by its UUID.
- **Update a Ocrolus tag by ID** (Update). [Beta] Update an existing custom transaction tag's name, description, color, or customization.
- **Delete a Ocrolus tag by ID** (Delete). [Beta] Delete a custom transaction tag. System tags cannot be deleted.
- **Ocrolus tags list revenue deduction tags** (List). [Beta] List the tags currently configured to be treated as revenue deductions in cash flow and analytics calculations.
- **Ocrolus tags update revenue deduction tags** (Update). [Beta] Replace the full list of tags treated as revenue deductions in cash flow and analytics calculations.
- **Ocrolus tags update book transaction tags** (Update). [Beta] Override the tags assigned to specific transactions within a book, identified by their transaction primary key.
- **Create a Ocrolus book copy job** (Create). Create book copy jobs (Encore) to share up to 50 books at a time from your organization to another organization on the Ocrolus network.
- **List all Ocrolus book copy jobs** (List). List book copy jobs (Encore) for the organization, filtered by direction (outbound or inbound) and optionally by counterparty organization.
- **Ocrolus book copy jobs accept** (Copy). Accept an inbound book copy job (Encore), optionally renaming the book as it's added to your organization.
- **Ocrolus book copy jobs reject** (Copy). Reject an inbound book copy job (Encore), declining to add the shared book to your organization.
- **Ocrolus book copy jobs get settings** (Copy). Retrieve the Encore book-copy settings for the organization, including which organizations are allowed to send or receive book copies.
- **Ocrolus book copy jobs run kickouts** (Copy). Automatically accept or reject pending inbound book copy jobs according to the organization's configured auto-accept rules.
