TrollerBk MCP Server

Let Claude, ChatGPT, Cursor, or your own agent ask which business bankruptcies just filed a sale motion, a plan, or a claim transfer, anywhere in the US, and pull the papers. Subscriber credential required.

MCP · JSON-RPC 2.0 · Authentication Required

Buyer guide  ·  Start a trial  ·  trollerbk.com

Overview

Point your assistant at one URL and it can answer the questions PACER cannot: what filed this week, which sectors are moving, and which cases match the report we built for you. Every answer links to the case, the docket, and the court PDF.

The server speaks JSON-RPC 2.0 over HTTPS (the MCP Streamable HTTP transport). Every request requires a valid TrollerBk API credential. There is no free tier.

Every custom report on your subscription shows up as a tool named custom_<report>. Ask for it by name.

Endpoint: https://mcp.trollerbk.com/mcp
Transport: HTTP POST, JSON-RPC 2.0
Protocol version: 2025-03-26

Looking up a single case you already know?

BankruptcyObserver has a free-tier MCP for exact-name and case-number lookups: mcp.bankruptcyobserver.com/docs. TrollerBk MCP is subscriber-only and starts from the national event feed. Start a trial at trollerbk.com/trial.

Authentication

All requests — including initialize and tools/list — require a valid credential. Two schemes are accepted; use whichever is more convenient for your client.

Option 1 — API token as Bearer header

Pass your TrollerBk API token as an Authorization header:

Authorization: Bearer <your-api-token>

Option 2 — Email + API Key Headers

Pass your registered email and API token as separate headers:

X-Client-Email: [email protected]
X-API-Key: <your-api-token>

Both schemes resolve to the same credential. The API token is under Your Account → API Token after you log in. For AI clients, prefer OAuth 2.1 so the assistant never holds that long-lived token.

Requests with missing or invalid credentials receive a JSON-RPC error with code -32001 and an HTTP 401 status.

Quick Start

1. Initialize the session

curl -X POST https://mcp.trollerbk.com/mcp \
  -H "Authorization: Bearer <your-api-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "clientInfo": { "name": "my-app", "version": "1.0" },
      "capabilities": {}
    }
  }'

2. List available tools

curl -X POST https://mcp.trollerbk.com/mcp \
  -H "Authorization: Bearer <your-api-token>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

3. Call a tool

curl -X POST https://mcp.trollerbk.com/mcp \
  -H "Authorization: Bearer <your-api-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "get_new_filings",
      "arguments": { "days": 7, "chapter": 11, "industry": "Retail" }
    }
  }'

Available Tools

get_new_filings

Return recent US business bankruptcy filings. Answers: "What Chapter 11s filed in Texas this week?"

ArgumentTypeDescription
daysintegerTrailing window in days (1–90). Default: 7.
chapterintegerBankruptcy chapter (7, 11, 13, etc.).
statestringTwo-letter US state code (e.g. TX).
industrystringIndustry keyword (e.g. Retail, Health Care).
limitintegerMax results (1–100). Default: 25.

search_cases

Structured case screening across all bankruptcies. Answers: "Which open retail Chapter 11s filed in Texas in the last 6 months?"

ArgumentTypeDescription
namestringDebtor name keyword.
chapterintegerBankruptcy chapter.
statestringTwo-letter US state code.
industrystringIndustry keyword.
statusstringopen, closed, or all. Default: open.
date_fromstringFiled on or after (YYYY-MM-DD).
date_tostringFiled on or before (YYYY-MM-DD).
limitintegerMax results (1–100). Default: 25.

get_case_details

Return the full case record for a single bankruptcy by TrollerBk simpleName.

ArgumentTypeDescription
simple_name requiredstringTrollerBk simpleName identifier.

search_by_ein

Find all bankruptcy filings by a debtor's EIN.

ArgumentTypeDescription
ein requiredstringNine-digit EIN, with or without hyphen (e.g. 12-3456789).

get_case_by_number

Resolve a court case number to a TrollerBk case record.

ArgumentTypeDescription
case_number requiredstringShort court case number (e.g. 24-10001).

case_status

Refresh one case from the court case summary and return the dates the court has on file (filed, last filing, converted, plan confirmed, discharged, dismissed, terminated, closed). The response identifies the case by simpleName. This calls the court, so use it for one case at a time.

ArgumentTypeDescription
simple_namestringTrollerBk simpleName. simpleName is accepted as an alias.
case_idstringInternal TrollerBk case id.
case_numberstringShort court case number. If more than one case uses it, pass simple_name or case_id.

get_docket

Return docket entries for a case. Identify the case by case_id, simple_name, or case_number. Defaults to the first 10 items. Use returned docketId values with request_document to fetch PDFs (subject to charges).

ArgumentTypeDescription
case_idstringInternal TrollerBk case id.
simple_namestringTrollerBk simpleName identifier.
case_numberstringShort court case number (e.g. 24-10001).
date_from / date_tostringFilter by item date (YYYY-MM-DD).
item_from / item_tointegerFilter by docket item number.
limitintegerMax items (default 10, max 100).

get_document_cost

Preview the cost of a court PDF before pulling it. Does not charge and does not retrieve the file. Identify by docket_id or pacer_rss_id (the id on a custom report row). Call this first, then request_document if you want to proceed.

ArgumentTypeDescription
docket_idstringDocket id, or a claims-register document id.
pacer_rss_idstringId from a custom report row, used instead of docket_id.
docket_ids / pacer_rss_idsarraySame, for multiple documents.

request_document

Pull the court PDF. May charge; often $0 if the document is already in the library. Prefer get_document_cost first. Set zip: true to receive several files as one zip with a manifest.

ArgumentTypeDescription
docket_id / pacer_rss_idstringSame identifiers as get_document_cost.
docket_ids / pacer_rss_idsarrayMultiple documents.
zipbooleanDeliver as one zip file.

get_claims_register

Return the claims register for a case: creditor, claim number, filed date, amounts, status, and the proof-of-claim documents linked to each claim. Use each POC’s claims_register_doc_id with get_poc_document.

ArgumentTypeDescription
simple_name / case_id / case_numberstringIdentify the case (one of these).
creditor / description / claim_number / searchstringOptional filters.
date_from / date_tostringClaims filed in this window (YYYY-MM-DD).
limit / offsetintegerPagination (default 100, max 500).

get_poc_document

Retrieve one or more proof-of-claim PDFs by the ids returned from get_claims_register. A single POC returns a download link; several are delivered as one zip. Set cost_only: true to preview cost without pulling.

ArgumentTypeDescription
claims_register_doc_idstringA single POC document id.
claims_register_doc_idsarraySeveral POC ids (always zipped).
cost_onlybooleanPreview cost; do not pull or charge.
zipbooleanDeliver even a single POC as a zip.

Custom Reports

In addition to the tools listed above, every custom report on your subscription shows up as a tool named custom_<report> after you authenticate. Ask for it by name.

Custom tools appear only after you authenticate with a token on that subscription. If you do not see yours in tools/list, check that the API token is active and belongs to the right account. Reports in the subscriber portal continue to work independently of MCP.

Example call (after seeing the tool in your list):

curl -X POST https://mcp.trollerbk.com/mcp \
  -H "Authorization: Bearer <your-api-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 10,
    "method": "tools/call",
    "params": {
      "name": "custom_gcf_finalreport",
      "arguments": { "start_date": "2026-05-01", "end_date": "2026-06-01" }
    }
  }'

Response Format

All responses follow the JSON-RPC 2.0 envelope. A successful tool call returns:

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      { "type": "text", "text": "{\"items\":[...],\"count\":12}" }
    ],
    "structuredContent": {
      "items": [ ... ],
      "count": 12
    }
  }
}

Errors use the standard JSON-RPC error envelope:

{
  "jsonrpc": "2.0",
  "id": 3,
  "error": { "code": -32602, "message": "Missing required argument: simple_name" }
}

Error Codes

CodeMeaning
-32001Authentication failed (invalid or missing credentials).
-32600Invalid JSON-RPC request.
-32601Method or tool not found.
-32602Invalid parameters or missing required argument.
-32603Internal server error.
-32700JSON parse error.

Connecting an AI Assistant

Any MCP client: Claude, ChatGPT, Cursor, Claude Desktop, mcp-remote, or your own agent. Two auth options:

1. Direct Bearer Token (simple)

{
  "mcpServers": {
    "trbk": {
      "url": "https://mcp.trollerbk.com/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-token>"
      }
    }
  }
}

2. OAuth 2.1 (recommended for AI clients)

Just point the client at the URL (no static header). The client will auto-discover OAuth metadata and run a secure PKCE authorization code flow.

{
  "mcpServers": {
    "trbk": {
      "url": "https://mcp.trollerbk.com/mcp"
    }
  }
}

Once connected, the assistant can answer investor questions directly from your conversation:

Using OAuth 2.1 (PKCE + Bootstrap from API Token)

The TrollerBk MCP implements OAuth 2.1 (RFC 8414 / 7591 / 9708 etc.) with:

Easiest way (the "paste your token" bootstrap):

  1. Log in at trollerbk.com/login and copy your API token from Your Account → API Token.
  2. Configure your MCP client with just the url (see example above). Do not hard-code a Bearer header.
  3. When the client tries to connect or list tools, it will start the OAuth flow and open (or prompt for) a browser to the authorization page.
  4. On the form at https://mcp.trollerbk.com/oauth/authorize (or /oauth/login), paste your existing API token and click "Authorize MCP Client". After submit you will be redirected back to complete the OAuth handshake.
  5. The client receives a proper OAuth access_token (and refresh_token). Your long-lived subscription token is never sent to the AI.

For ChatGPT connector / custom OAuth forms (DCR):

After providing these, ChatGPT will perform DCR, then during authorization redirect you to the paste-token form where you enter your TrollerBk API token.

ChatGPT: tools appear but will not run

Full manual flow (for custom clients, curl, or testing):

  1. Discover: GET https://mcp.trollerbk.com/.well-known/oauth-authorization-server (or the /mcp/ version). Note the authorization_endpoint, token_endpoint, registration_endpoint, supported PKCE method (S256), etc.
  2. (Optional but recommended) Register your client:
    POST https://mcp.trollerbk.com/oauth/register
    Body: {"client_name": "My Custom Client", "redirect_uris": ["https://example.com/callback"], "service": "trbk"}
    You get back client_id (and secret for confidential clients).
  3. Start authorization: Direct the user (or open in browser) to the authorization_endpoint with query params:
    ?client_id=YOUR_ID&redirect_uri=...&response_type=code&code_challenge=BASE64URL(SHA256(verifier))&code_challenge_method=S256&state=...&scope=mcp
    (The page renders a simple form asking for your existing TrollerBk API token.)
  4. After the user submits the token, you are redirected back to your redirect_uri with ?code=SHORT_LIVED_CODE&state=...
  5. Exchange the code:
    POST https://mcp.trollerbk.com/oauth/token
    Form fields: grant_type=authorization_code, code=..., client_id=..., code_verifier=your-original-verifier, redirect_uri=... (add client_secret if you registered a confidential client).
  6. Use the returned access_token as Authorization: Bearer <token> on all calls to https://mcp.trollerbk.com/mcp.
  7. When it expires, POST to the same /oauth/token with grant_type=refresh_token + your refresh_token to get a fresh pair (old tokens are revoked on rotation).
  8. Revoke anytime with POST /oauth/revoke (token=...).

The bootstrap flow (steps 3-5 above) is the main supported path today for TrollerBk subscribers who already have an API token. Full user/password or other grants are not implemented; the goal is secure token exchange from your existing subscription.

Batch Requests

The server accepts JSON-RPC batch arrays (multiple calls in one HTTP request):

[
  { "jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_cases","arguments":{"chapter":11,"status":"open"}} },
  { "jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_new_filings","arguments":{"chapter":11}} }
]

Responses are returned as a matching array.

Getting Access

MCP access is included with active TrollerBk subscriptions. Your API token (used for direct Bearer auth or to bootstrap an OAuth session) is available under Your Account → API Token after logging in at trollerbk.com/login.

The OAuth flow (paste-token bootstrap) lets you authorize AI clients without handing them your long-lived token.

For questions, new subscriptions, or integration support, contact [email protected].