Skip to main content
Glama
cfpb-complaints-mcp

cfpb-complaints-mcp

by bnovarini

search_narratives

Search archived CFPB complaint narratives by keywords, phrases, or alternatives, and narrow results by company, product, state, or date to find relevant complaints and snippets.

Instructions

Keyword search over archived complaint narratives (frozen at 2026-08-14; CFPB stopped publishing them in September 2026). query: words that must all appear (case-insensitive), or use phrase for an exact phrase, or any_of for alternatives. Returns a snippet per complaint plus its structured fields, newest first (date order, not relevance-ranked: every result contains all your words); use get_complaint for the full text. Searches scan text, so narrow with date_from/date_to, company/company_contains, product or state when you can: an unfiltered search over all years can time out. Filters: company, company_contains, product, state (2 letters), date_from/date_to (YYYY-MM-DD or YYYY-MM), plus issue, sub_product, company_response, timely, tag (these are slower).

Input Schema

NameRequiredDescriptionDefault
tagNo
issueNo
limitNo
queryNo
stateNo
any_ofNo
offsetNo
phraseNo
timelyNo
companyNo
date_toNo
productNo
date_fromNo
sub_productNo
company_containsNo
company_responseNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.3

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does so: it discloses the data is frozen at 2026-08-14, that results are date-ordered rather than relevance-ranked (a real surprise for a 'search' tool), that every result contains all words, that snippets plus structured fields are returned, and that unfiltered searches can time out. This is unusually rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A dense single block, but front-loaded with the core purpose and each subsequent clause carries a distinct piece of information (query semantics, return shape, filter guidance, timeout warning). It would read better split into a few short sentences, hence not a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be fully specified, yet the description still summarizes the return shape and ordering. Combined with the freeze date, timeout caveat, filter performance notes, and the get_complaint handoff, an agent has everything needed to call this correctly for a 16-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 16 parameters, so the description must compensate, and it largely does: it defines the mutual semantics of query/phrase/any_of (all-words vs exact phrase vs alternatives), state as 2 letters, date formats as YYYY-MM-DD or YYYY-MM, and separates fast filters from slower ones. It omits limit/offset and does not say whether the three query modes are combinable or exclusive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('keyword search over archived complaint narratives') and immediately distinguishes itself from the sibling get_complaint by noting that get_complaint returns the full text while this returns only a snippet. The frozen-date note pins down exactly what corpus is being searched.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing to the alternative ('use get_complaint for the full text') and explicit escalation guidance ('narrow with date_from/date_to, company/company_contains, product or state when you can: an unfiltered search over all years can time out'). It also flags which filters are slower, which is actionable when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.