bko-mcp
https://mcp.bankruptcyobserver.com
Registry code: 87fc420c8cca7455
Bankruptcy Observer covers US business bankruptcy cases compiled from federal court records since 2005: case identity, docket text, debtor's counsel, a subscriber's monitoring list, and court filing PDFs. It is for a company bankruptcy, a case number, an EIN, a docket, or new business filings by industry, NAICS code, state, or date. Individual consumer debtors and adversary proceedings are omitted unless the request asks for them. A short case number can match more than one court; a court name or state distinguishes them. An exact or prefix name search, and a 7-digit case-number lookup, do…
- endpoint
- https://mcp.bankruptcyobserver.com/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is bko-mcp live?
- Yes — it answered the hub's last check (checked 7h ago). It answered 100% of checks over the last 30 days.
- Is bko-mcp free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does bko-mcp have?
- 19 tools: add_monitored_case_tool, refresh_docket_tool, purchase_plan_tool, get_case_by_ein_tool, get_case_by_case_number_tool, get_cases_by_naics_tool, get_cases_by_state_tool, get_docket_entries_tool, ….
- Is bko-mcp safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 98.9%· all time 98.9%
last good check
of 19 tools
- degraded → live
- live → degraded· HTTP 502
- degraded → live
- degraded → live
- live → degraded· timeout after 20000ms
- topic
- government & legal legal
- used for
- search us business bankruptcy cases
- get a bankruptcy docket
- download a court filing
- summarize a bankruptcy case
- monitor a bankruptcy case
- takes → gives
- text → data, documents
- tools
- 15 reads2 changes data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_case_by_ein_tool reads open 2d ago
Look up a case by debtor EIN. Paid (full data, and optional last filing date). Does not contact the court.
{ "type": "object", "required": [ "debtor_ein" ], "properties": { "debtor_ein": { "type": "string", "description": "Debtor employer identification number, digits with or without a hyphen." }, "include_last_filing": { "type": "boolean", "description": "Include lastFilingDate from docket (slower)." } } }arguments 16 linesget_case_by_case_number_tool reads open 2d ago
Look up case(s) by short case number (e.g. 26-10543). FREE for 7-digit format (limited fields, all courts). Paid lookups return the full record. Pass court with the court name from a case result to limit the lookup to one court. Does not contact the court.
{ "type": "object", "required": [ "short_case_number" ], "properties": { "court": { "type": "string", "description": "Court name as returned in the court field, for example \"Delaware\" or \"Texas Southern\"." }, "court_state": { "type": "string", "description": "2-letter state. Matches every district in that state." }, "short_case_number": { "type": "string", "description": "Short case number, for example 26-10543." } } }arguments 20 linesget_cases_by_naics_tool reads open 2d ago
US business bankruptcy cases by NAICS (2-4 digits). Individual debtors and adversary proceedings (lawsuits) are omitted unless include_individuals or include_adversary is true. start_date and end_date are inclusive calendar days (YYYY-MM-DD). When a date is set, total is the full match count and skip (or offset) pages past limit (max 100). Paid.
{ "type": "object", "required": [ "naics" ], "properties": { "skip": { "type": "integer", "description": "Rows to skip. Alias: offset. skip wins when both are set." }, "limit": { "type": "integer", "description": "Max rows in this page (1-100). Default 25." }, "naics": { "type": "string" }, "offset": { "type": "integer", "description": "Alias for skip." }, "end_date": { "type": "string", "description": "Filed on or before this date (YYYY-MM-DD), inclusive through the end of that day." }, "start_date": { "type": "string", "description": "Filed on or after this date (YYYY-MM-DD), inclusive of that whole day." }, "include_adversary": { "type": "boolean", "description": "Include adversary proceedings (lawsuits). Default false." }, "include_individuals": { "type": "boolean", "description": "Include individual debtors. Default false (business filings only)." } } }arguments 39 linesget_cases_by_state_tool reads open 2d ago
US business bankruptcy cases by debtor state (2-letter). Individual debtors and adversary proceedings (lawsuits) are omitted unless include_individuals or include_adversary is true. start_date and end_date are inclusive calendar days (YYYY-MM-DD). When a date is set, total is the full match count and skip (or offset) pages past limit (max 100). Paid.
{ "type": "object", "required": [ "state" ], "properties": { "skip": { "type": "integer", "description": "Rows to skip. Alias: offset. skip wins when both are set." }, "limit": { "type": "integer", "description": "Max rows in this page (1-100). Default 25." }, "state": { "type": "string" }, "offset": { "type": "integer", "description": "Alias for skip." }, "end_date": { "type": "string", "description": "Filed on or before this date (YYYY-MM-DD), inclusive through the end of that day." }, "start_date": { "type": "string", "description": "Filed on or after this date (YYYY-MM-DD), inclusive of that whole day." }, "include_adversary": { "type": "boolean", "description": "Include adversary proceedings (lawsuits). Default false." }, "include_individuals": { "type": "boolean", "description": "Include individual debtors. Default false (business filings only)." } } }arguments 39 linesget_docket_entries_tool reads open 7h ago
Docket entries for a case. Numbered entries come first (itemNumber ascending); entries with no court docket number (itemNumber null) follow. missing_item_numbers lists numbers with no stored row. Each entry includes the full PACER itemText (never sliced). The case is identified by simpleName. A cost preview does not download the PDF. Downloading a PDF can charge the account. Pass simple_name or short_case_number / case_number (e.g. 26-42901; use court or court_state to disambiguate). Optional item_number or item_from/item_to to fetch specific entries. Single Case plan: monitored cases only. limit max 50 (default 25); pass skip (or offset, or 1-based page) to walk past the first block. A page may contain fewer than limit entries so every caption stays complete for MCP clients. Response includes total, skip, limit, returned, and has_more. This lookup reads the stored docket and does not contact the court.
{ "type": "object", "required": [], "properties": { "page": { "type": "integer", "description": "1-based page number; equivalent to skip=(page-1)*limit. Ignored if skip or offset is set." }, "skip": { "type": "integer", "description": "Number of entries to skip before returning results (default 0). Example: limit=50, skip=50 returns items 51–100." }, "court": { "type": "string", "description": "Court name as returned in the court field, for example \"Delaware\" or \"Texas Southern\"." }, "limit": { "type": "integer", "description": "Max entries to return (default 25, max 50). Combine with skip to walk the full docket. itemText is never cut; a page may return fewer than this when captions are long." }, "offset": { "type": "integer", "description": "Alias for skip." }, "item_to": { "type": "integer", "description": "Filter to items with itemNumber <= this value." }, "docket_id": { "type": "string", "description": "Return only this docket entry (40-character hex hash). Full itemText." }, "item_from": { "type": "integer", "description": "Filter to items with itemNumber >= this value." }, "case_number": { "type": "string", "description": "Short or full case number (e.g. 26-42901 or 1-26-42901). Pass court to pick one court when the number is reused." }, "court_state": { "type": "string", "description": "2-letter state. Matches every district in that state." }, "item_number": { "type": "integer", "description": "Return only this docket item number. Full itemText." }, "simple_name": { "type": "string", "description": "Case simpleName (e.g. 1251-pacific-st-llc)." }, "short_case_number": { "type": "string", "description": "Alias for case_number." } } }arguments 58 linesget_document_cost_tool reads open 23h ago
Preview the cost to download a court filing PDF. Identify the entry with simple_name and item_number. Does not pull the document and does not charge. Cost is $0 if already purchased, or if the PDF is already in our library and the plan has flagFreeLibrary. Free-page allowances (if any) come from plan limitDocuments and apply to billable pulls. Returns simpleName, item_number, page_count, chargeable_pages, cost, plan_limit_documents, pages_used_this_period, free_pages_remaining, document_in_library, and already_owned.
{ "type": "object", "required": [], "properties": { "docket_id": { "type": "string", "description": "Optional. A docket entry id already known to the caller. Responses identify filings by simpleName and item_number instead." }, "item_number": { "type": "integer", "description": "Docket item number (e.g. 1 for the petition). Use with simple_name." }, "simple_name": { "type": "string", "description": "Case simpleName (e.g. 1251-pacific-st). Use with item_number." } } }arguments 18 linesget_document_tool reads open 3d ago
Court filing PDF. Identify the entry with simple_name and item_number. Step 1: cost preview — omit accept_charge/download or set false. Step 2: after user confirms, call with the same simple_name and item_number plus accept_charge:true or download:true to purchase and download (signed URL). The response identifies the case by simpleName. Pulls from PACER when needed.
{ "type": "object", "required": [], "properties": { "download": { "type": "boolean", "description": "Optional legacy alias for accept_charge:true (some connectors cannot pass accept_charge)." }, "docket_id": { "type": "string", "description": "Optional. A docket entry id already known to the caller. Responses identify filings by simpleName and item_number instead." }, "item_number": { "type": "integer", "description": "Docket item number (e.g. 1 for the petition). Use with simple_name." }, "simple_name": { "type": "string", "description": "Case simpleName (e.g. 1251-pacific-st). Use with item_number." }, "accept_charge": { "type": "boolean", "description": "Optional. Omit or false for cost preview only. true after the user explicitly approves the previewed cost." } } }arguments 26 lineslist_plans_tool reads open 7h ago
List available BKO subscription plans (sourced from VwSubscriptions where service = BKO) with current pricing and agent tiers. No auth required.
{ "type": "object", "required": [], "properties": {} }arguments 5 linescheck_subscription_tool reads open 15h ago
Check the signed-in subscriber plan and remaining quota. A missing bearer token returns a sign-in-required result.
{ "type": "object", "required": [], "properties": {} }arguments 5 lineslist_monitored_cases_tool reads open 7h ago
List the cases on your BankruptcyObserver.com monitoring list (simpleName, name, chapter, court, case number, dateFiled, last docket date). Pass simple_name to get_docket_entries_tool. Requires your MCP token to be linked to your subscriber account. Subscribers only.
{ "type": "object", "required": [], "properties": {} }arguments 5 linesget_debtor_counsel_tool open 23h ago
Return the debtor's counsel of record: each attorney's name, firm, address, phone, and email. Trustees are not included. Identifies the case by simpleName. Pass simple_name or a case number (with court when the number is reused). When no counsel is stored, counsel is an empty list. Single Case plan: monitored cases only. Subscribers only.
{ "type": "object", "required": [], "properties": { "court": { "type": "string", "description": "Court name as returned in the court field, for example \"Delaware\" or \"Texas Southern\"." }, "simpleName": { "type": "string", "description": "Alias for simple_name." }, "case_number": { "type": "string", "description": "7-digit short case number alternative to simple_name." }, "court_state": { "type": "string", "description": "2-letter state. Matches every district in that state." }, "simple_name": { "type": "string", "description": "Case simpleName (e.g. adaptive-phage-therapeutics)." } } }arguments 26 linessearch_bankruptcy_cases_tool reads open 23h ago
Search US business bankruptcy cases by debtor name. Individual debtors and adversary proceedings (lawsuits) are omitted unless include_individuals or include_adversary is true. Case numbers are shortCaseNumber. FREE (exact/prefix, no *): limited fields, no auth. Use *term for contains (paid). Optional court filter uses the court name returned on a case (for example "Delaware" or "Texas Southern"). total is the full match count; pass skip for the next page.
{ "type": "object", "required": [], "properties": { "skip": { "type": "integer", "description": "Offset for paging." }, "court": { "type": "string", "description": "Court name as returned in the court field, for example \"Delaware\" or \"Texas Southern\"." }, "limit": { "type": "integer", "description": "Max results (1-100). Default 25." }, "court_state": { "type": "string", "description": "2-letter state. Matches every district in that state." }, "search_term": { "type": "string", "description": "Debtor name (prefix or *contains)" }, "include_adversary": { "type": "boolean", "description": "Include adversary proceedings (lawsuits). Default false." }, "include_individuals": { "type": "boolean", "description": "Include individual debtors. Default false (business filings only)." } } }arguments 34 linesget_cases_by_industry_tool reads open 2d ago
US business bankruptcy cases by industry label or key (Hotels, Retail, real-estate, etc.). Individual debtors and adversary proceedings (lawsuits) are omitted unless include_individuals or include_adversary is true. start_date and end_date are inclusive calendar days (YYYY-MM-DD). When a date is set, total is the full match count and skip (or offset) pages past limit (max 100). Filings from the last two days often have no NAICS yet; those are listed in untagged_recent instead of being dropped. debtorCity is the city only. Paid.
{ "type": "object", "required": [ "industry" ], "properties": { "skip": { "type": "integer", "description": "Rows to skip. Alias: offset. skip wins when both are set." }, "limit": { "type": "integer", "description": "Max rows in this page (1-100). Default 25." }, "offset": { "type": "integer", "description": "Alias for skip." }, "end_date": { "type": "string", "description": "Filed on or before this date (YYYY-MM-DD), inclusive through the end of that day." }, "industry": { "type": "string", "description": "Industry label or key, for example Hotels or Retail." }, "start_date": { "type": "string", "description": "Filed on or after this date (YYYY-MM-DD), inclusive of that whole day." }, "include_adversary": { "type": "boolean", "description": "Include adversary proceedings (lawsuits). Default false." }, "include_individuals": { "type": "boolean", "description": "Include individual debtors. Default false (business filings only)." } } }arguments 40 linesget_cases_by_date_range_tool reads open 15h ago
US business bankruptcy cases filed in a date range (dateFiled). Individual debtors and adversary proceedings (lawsuits) are omitted unless include_individuals or include_adversary is true. Omitting both dates defaults to yesterday. start_date and end_date are inclusive calendar days (YYYY-MM-DD), including filings later that day. Case numbers are shortCaseNumber. total is the full match count, not the page size. limit is one page (max 500, default 100); pass skip or offset for the next page. has_more is true when more rows remain. Paid.
{ "type": "object", "required": [], "properties": { "skip": { "type": "integer", "description": "Rows to skip. Alias: offset. skip wins when both are set." }, "limit": { "type": "integer", "description": "Max rows in this page (1-500). Default 100. total is the full match count." }, "offset": { "type": "integer", "description": "Alias for skip." }, "end_date": { "type": "string", "description": "YYYY-MM-DD. Inclusive through the end of that calendar day." }, "start_date": { "type": "string", "description": "YYYY-MM-DD. Inclusive of that whole calendar day." }, "include_adversary": { "type": "boolean", "description": "Include adversary proceedings (lawsuits). Default false." }, "include_individuals": { "type": "boolean", "description": "Include individual debtors. Default false (business filings only)." } } }arguments 34 linesget_recent_developments_tool reads open 15h ago
What happened recently? Docket entries since a date (default: last 7 days) for one monitored case (simple_name) or ALL your monitored cases when simple_name is omitted. Newest first, with item numbers, dates, full itemText (never sliced), and counts. A page may contain fewer than limit entries so every caption stays complete. Subscribers only.
{ "type": "object", "required": [], "properties": { "limit": { "type": "integer", "description": "Max entries (default 100, max 250)." }, "since_date": { "type": "string", "description": "YYYY-MM-DD; default 7 days ago." }, "simple_name": { "type": "string", "description": "Optional case simpleName; omit for all monitored cases." } } }arguments 18 linesget_case_status_tool open 3d ago
Refresh one case from the court case summary and return the dates the court has on file (filed, last filing, 341 meeting, converted, plan confirmed, discharged, dismissed, terminated, closed). dates.date341 is the §341 meeting date when the docket header lists one. Identifies the case by simpleName. Pass simple_name or a case number (with court when the number is reused). This calls the court, so use it for one case at a time. Single Case plan: monitored cases only. Subscribers only.
{ "type": "object", "required": [], "properties": { "court": { "type": "string", "description": "Court name as returned in the court field, for example \"Delaware\" or \"Texas Southern\"." }, "simpleName": { "type": "string", "description": "Alias for simple_name." }, "case_number": { "type": "string", "description": "7-digit short case number alternative to simple_name." }, "court_state": { "type": "string", "description": "2-letter state. Matches every district in that state." }, "simple_name": { "type": "string", "description": "Case simpleName (e.g. adaptive-phage-therapeutics)." } } }arguments 26 linesadd_monitored_case_tool changes data unknown never probed
Add a bankruptcy case to your BankruptcyObserver.com monitoring list so BKO checks the court hourly and updates the docket every business day. Pass simple_name or a 7-digit case_number (with court when the number is reused). Subscribers only; respects your plan monitoring limit.
{ "type": "object", "required": [], "properties": { "court": { "type": "string", "description": "Court name as returned in the court field, for example \"Delaware\" or \"Texas Southern\"." }, "case_number": { "type": "string", "description": "7-digit short case number alternative to simple_name." }, "court_state": { "type": "string", "description": "2-letter state. Matches every district in that state." }, "simple_name": { "type": "string", "description": "Case simpleName (e.g. SILVER-AIRWAYS)." } } }arguments 22 linesrefresh_docket_tool changes data unknown never probed
Request an immediate docket refresh from court sources for one case (slower; use when you need the latest filings now). Pass simple_name or case_number. Single Case plan: monitored cases only. Full Access: any case. Subscribers only.
{ "type": "object", "required": [], "properties": { "court": { "type": "string", "description": "Court name as returned in the court field, for example \"Delaware\" or \"Texas Southern\"." }, "case_number": { "type": "string", "description": "7-digit short case number alternative." }, "court_state": { "type": "string", "description": "2-letter state. Matches every district in that state." }, "simple_name": { "type": "string", "description": "Case simpleName." } } }arguments 22 linespurchase_plan_tool reads unknown never probed
Get Stripe checkout URL for a plan. No auth required. Pass plan_id (from list_plans_tool) and optional email.
{ "type": "object", "required": [ "plan_id" ], "properties": { "email": { "type": "string", "description": "Optional email to prefill on Stripe checkout" }, "plan_id": { "type": "string", "description": "Plan id or stripe price id from list_plans_tool" } } }arguments 16 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id87fc420c8cca7455.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/87fc420c8cca7455/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/87fc420c8cca7455?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.