Skip to main content
Glama

ca-rate-filings

Server Details

Natural-language search over California's public insurance rate, rule & form filings.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

16 tools
get_filing_correspondenceGet Regulatory Exchange — Objection Thread + Filer DocsA
Read-onlyIdempotent
Inspect

Use this to see the REGULATORY POSITION history of a filing — the whole CDI ↔ carrier dialogue plus filer contact info — in order. NOT for the filing's content, rates, or forms. Content questions live in get_filing_summary (actuarial narrative), get_filing_source_file_link (raw PDFs for human download), and search_filing_embeds (paragraph-level body search).

Right questions this answers:

  • "Show me the full objection thread on FARM-134879410" — every letter, in order

  • "Who filed this and who reviewed it at CDI"

  • "What did the carrier say in response to CDI's second objection"

  • "Give me the paper trail so I can audit how this filing progressed"

Fetches every chunk in correspondence_embeds for the given SERFF, grouped by source_file (one entry per attachment) and ordered by chunk_index within each file. Covers three attachment types:

  • correspondence_attachment_*.pdf — the objection thread (CDI questions + carrier responses + follow-ups)

  • supporting_document_attachment_*.pdf — actuarial memos, exhibits, transmittal letters (filer contact / authorship signals)

  • .pdf — SERFF's top-level cover page with filing-person contact block

Everything comes back as readable text so the caller can quote it verbatim to the user. Group by source_file prefix client-side if you only want, e.g., the objection thread (correspondence_attachment_*).

For a one-call summary that ALSO includes filing metadata, extracted summary, references, and lineage alongside the correspondence, use get_filing_dossier.

Right surface for:

  • "Show me the objection thread on this filing" — after a search or when the user hands you a SERFF id and asks what CDI said.

  • "Pull the carrier's full response to CDI's second-round questions" — you get everything, in order; extract the passage you need.

  • Auditing/review workflows where a regulator wants the full paper trail on one filing.

Right combination: pair with search_correspondence_embeds — that surface finds candidate filings semantically; this one pulls the whole thread once you've picked one worth reading end-to-end.

Coverage: not every filing has correspondence. Only filings that received at least one objection round from the DOI (or the carrier uploaded a proactive supplemental letter under the same correspondence_attachment_ prefix) will have chunks. A filing with no exchange returns { files: [], chunk_count: 0 } — not an error.

Returns { serff, files: [{ source_file, chunks: [{ chunk_index, text, emails, email_domains, page_date }] }], file_count, chunk_count }. Each chunk's text is capped at 2000 chars.

ParametersJSON Schema
NameRequiredDescriptionDefault
serffYesCanonical SERFF id, shape PREFIX-IDENTIFIER (e.g. "ACEH-134881437"). Validated against /^[A-Z]{3,5}-[A-Z0-9]{7,15}$/; invalid values return an error envelope.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true. The description goes far beyond these by disclosing the response structure, the 2000-char chunk cap, the behavior for filings without correspondence (returns empty structure, not an error), the grouping/ordering logic, and the three attachment types. This is comprehensive behavioral transparency that adds significant value over the annotations.

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?

The description is lengthy but well-structured with headings, bullet points, and examples. The core purpose and alternatives are front-loaded, and each section (examples, technical details, coverage notes, return shape) serves a distinct purpose. Some redundancy exists, such as the 'Right questions' list partially duplicating the opening statement, but overall it is efficiently organized for an agent to parse.

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?

For a tool with this complexity (multiple attachment types, grouping, chunk caps, empty coverage, return shape), the description covers all necessary aspects: purpose, usage boundaries, technical behavior, coverage caveats, and alternatives. Even without an output schema, the return structure is fully spelled out with field names and types. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

The input schema already fully documents the `serff` parameter (100% coverage), including its format, validation regex, and error handling for invalid values. The description does not add any additional semantic context for the parameter itself; it only mentions 'given SERFF' in passing. Since the schema carries the full burden, the baseline of 3 is appropriate.

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?

The description clearly states the tool's function: 'see the REGULATORY POSITION history of a filing — the whole CDI ↔ carrier dialogue plus filer contact info — in order.' It explicitly distinguishes itself from content-related tools by naming specific alternatives (get_filing_summary, get_filing_source_file_link, search_filing_embeds) and provides concrete example questions. This is a specific verb+resource+scope with strong sibling differentiation.

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?

The description explicitly says what the tool is NOT for and routes to alternatives ('NOT for the filing's content, rates, or forms. Content questions live in get_filing_summary...'). It also provides 'Right surface for' scenarios and a pairing recommendation with search_correspondence_embeds, plus a note about the more comprehensive get_filing_dossier. The usage guidance is thorough and actionable, leaving no ambiguity about when to use vs alternatives.

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

get_filing_dossierGet Filing Regulatory DossierA
Read-onlyIdempotent
Inspect

Use this to see the full REGULATORY POSITION of a filing in one call — current CDI status, who is reviewing it, the entire objection history, filer contacts, and lineage to predecessor filings. NOT the tool if the question is about rating mechanics, base rates, factor tables, or actuarial numerics. For those, chain into get_filing_summary (actuarial narrative), search_actuarial_embeds (numerics), or search_filing_embeds (paragraph-level body).

Right questions this answers in one shot:

  • "Where does FARM-134879410 stand at CDI right now?" — status, pending/closed, live objections, who's on it

  • "Give me the full paper trail on this filing so I can audit how it progressed"

  • "Was this objected to? Approved? Withdrawn? Who reviewed it?" — the derived block answers at-a-glance

  • "Show me the objection thread + carrier lineage + references for this SERFF" — all sections inline

Composes get_filing_summary, get_filing_correspondence, get_filing_references, and get_filing_lineage in parallel for one SERFF id and returns the union along with a derived at-a-glance block. Each sub-fetch is independent — a missing summary or errored lineage still leaves the rest intact (each section carries a per-section error field on failure).

Wrong surface for:

  • Search — start with search_filings / search_summary_embeds / search_correspondence_embeds to find the SERFF, then dossier from there

  • Caseload / aggregate views — use list_email_workload for "which reviewer is on the most Pending filings"

Returns { serff, meta, derived, summary, correspondence, references, lineage }. The derived block carries {has_summary, correspondence_file_count, correspondence_chunk_count, has_objections, cdi_reviewer_emails, reference_count, lineage_depth} — enough for a client to render a status card without walking every sub-payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
serffYesCanonical SERFF id, shape PREFIX-IDENTIFIER (e.g. "FARM-134741754"). Validated against /^[A-Z]{3,5}-[A-Z0-9]{7,15}$/; invalid values return an error envelope.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds valuable behavioral detail beyond annotations: it reveals that the tool composes four sub-fetches in parallel, that failures are isolated per-section with an 'error' field, and that a derived at-a-glance block is included. This materially helps an agent predict partial-failure behavior and response structure.

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

Conciseness5/5

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

Although long, the description is tightly structured: bolded core purpose, bulleted example questions, a clearly marked 'Wrong surface for' section, and a compact return-shape line. Every sentence earns its place, and the most important guidance is front-loaded before alternatives and exclusions.

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?

For a composite tool with one parameter and no output schema, the description is complete: it names the composed tools, the returned top-level fields, the derived block contents, failure isolation behavior, and exclusions. An agent has everything needed to decide when to call it and what to expect back.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents 'serff' including format, validation regex, and error behavior. The description reinforces that the tool takes one SERFF id and composes over it, but does not need to add meaning — the baseline of 3 applies since the schema carries the parameter documentation burden.

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?

The description opens with a specific verb and resource: 'see the full REGULATORY POSITION of a filing' and enumerates exactly what that includes (CDI status, reviewer, objection history, filer contacts, lineage). It also explicitly distinguishes itself from rating-mechanics tools by naming what it is NOT for, making sibling differentiation immediate.

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?

The description gives explicit when-to-use ('Use this to see the full regulatory position...') and explicit when-not-to-use ('NOT the tool if the question is about rating mechanics... For those, chain into get_filing_summary...'). It further lists 'Wrong surface for' search and caseload scenarios and names the correct starting tools, leaving no ambiguity about routing.

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

get_filing_lineageGet Filing LineageA
Read-onlyIdempotent
Inspect

Returns the reconciled lineage chain for a SERFF id — leaf filing plus ordered predecessors back to the bureau root. Each chain entry includes the SERFF id, position (0 = leaf), role (leaf / predecessor), and a lite filing record (state, year, carrier name, product name, filing type, filing date).

Distinct from get_filing_references, which returns what the filing itself claims inside the PDF. Use this when you want the canonical chain (e.g. "what's the bureau root and prior versions for this Progressive auto programme?"); use get_filing_references when you want the carrier-stated lineage.

Walks back from any SERFF in a programme's chain — pass either the leaf or any predecessor and you get the same chain back. Returns { error: ... } if the SERFF id has not been resolved into any programme chain (the filing may be a non-rate-affecting type — Withdrawal / Correspondence — or simply not yet ingested).

Pair with search_filings using predecessor_prefix: search returns "filings that some programme adopted from bureau X"; lineage tells you, for any of those filings, the full chain it sits in.

ParametersJSON Schema
NameRequiredDescriptionDefault
serffYesCanonical SERFF id, shape PREFIX-IDENTIFIER (e.g. "AAIC-134567890"). Either the leaf or a predecessor — the chain is returned regardless. Validated against /^[A-Z]{3,5}-[A-Z0-9]{7,15}$/; invalid values return an error envelope.

TDQS

A4.7/5.0
Behavior5/5

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

The description adds behavioral context beyond annotations, such as walking back from any SERFF in a program's chain, returning an error if not resolved, and noting possible non-rate-affecting types. No contradiction with annotations (readOnlyHint, idempotentHint).

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

Conciseness5/5

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

The description is well-structured and front-loaded with the main purpose, followed by differentiation from siblings and additional usage details. Each sentence adds value without redundancy.

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?

The description covers the return structure (chain entries with SERFF id, position, role, lite filing record), error handling, and relationship to sibling tools. Given the single parameter and no output schema, it provides sufficient context for an AI agent.

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

Parameters3/5

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

Schema coverage is 100% with a detailed parameter description including regex validation and error envelope behavior. The description does not add significant new meaning beyond the schema, so baseline 3 is appropriate.

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?

The description clearly states the tool returns the reconciled lineage chain for a SERFF id, specifying the verb 'returns' and the resource. It explicitly distinguishes itself from the sibling get_filing_references by noting the difference between canonical chain and carrier-stated lineage.

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?

The description provides explicit guidance on when to use this tool ('when you want the canonical chain') versus when to use get_filing_references. It also suggests pairing with search_filings using predecessor_prefix, and explains the error case for unresolved SERFF ids.

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

get_filing_referencesGet Filing ReferencesA
Read-onlyIdempotent
Inspect

Returns the predecessor, superseded, and companion filings that this filing itself cites in its supporting documentation. Carrier-claimed lineage extracted from inside the PDF (e.g. "supersedes XXXX-NNNN", "loss costs adopted from NCCI-NNNN").

Distinct from get_filing_lineage, which returns the reconciled chain across the corpus. The two often agree but can diverge — get_filing_references is the carrier's stated lineage; get_filing_lineage is what was actually wired together across filings. When they disagree, that is itself a signal worth surfacing.

Each entry typically carries a SERFF id, NAIC, group code, filing type, and a relationship label (predecessor / superseded / loss-cost-source). Use to answer "what does this filing claim to replace?" or "which bureau filing did this carrier adopt?".

Returns { error: ... } if no references record exists for the SERFF id (the filing has not yet been classified).

ParametersJSON Schema
NameRequiredDescriptionDefault
serffYesCanonical SERFF id, shape PREFIX-IDENTIFIER (e.g. "AAIC-134567890"). Validated against /^[A-Z]{3,5}-[A-Z0-9]{7,15}$/; invalid values return an error envelope.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds that data is extracted from inside the PDF (carrier-claimed), that entries include specific fields, and that an error is returned if no record exists. This goes beyond the annotations, though not exhaustively.

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?

The description is well-structured with clear sections (what it does, distinction, use cases, error handling). Slightly verbose but every sentence adds value; no fluff.

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

Completeness4/5

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

Despite no output schema, the description explains return format (list entries with specific fields and an error case). Given the tool's moderate complexity and rich input schema, this is adequately complete.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions the parameter shape (PREFIX-IDENTIFIER) and regex validation, which is already in the schema. No additional semantic value beyond what the schema provides.

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?

The description specifies the exact resource returned (predecessor/superseded/companion filings cited by this filing) and distinguishes from the sibling tool get_filing_lineage, using concrete examples like 'supersedes XXXX-NNNN'.

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?

Explicitly compares to get_filing_lineage, explaining when each is appropriate ('carrier's stated lineage' vs 'reconciled chain'). Provides specific use cases: 'what does this filing claim to replace?' and 'which bureau filing did this carrier adopt?'.

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

get_filing_summaryGet Filing SummaryA
Read-onlyIdempotent
Inspect

Returns an actuarial narrative summary for a single SERFF id — the Filing Type header, the "What This Filing Does" section (concrete bullet-pointed change list with page citations for Rate / Rule / Form / New Programme / Withdrawal filings), the structured Description, and the key references the summary cites.

This is the fastest route from "I have a SERFF id" to "I understand what this filing changes" — typically a few KB rather than the hundreds of KB of raw source. Page citations of the form (p. N) let a reviewer verify each claim against the source PDF.

Returns { error: ... } if no summary exists for the SERFF id (the filing has not yet been classified). Use list_filing_source_files and mcp_health to triage; do not retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
serffYesCanonical SERFF id, shape PREFIX-IDENTIFIER (e.g. "AAIC-134567890"). Validated against /^[A-Z]{3,5}-[A-Z0-9]{7,15}$/; invalid values return an error envelope.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior; the description adds that it returns an error if no summary exists, typical response size, and use of page citations. This provides useful context beyond the annotations.

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?

The description is concise, front-loads the main purpose, and uses formatting (bold, bullet points) to improve readability. A few sentences efficiently convey necessary information.

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

Completeness4/5

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

Given no output schema, the description outlines the return structure (sections, error envelope) and provides enough detail for an agent to understand what the tool provides. It covers key behaviors like error handling and citation format.

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 coverage is 100% with a good parameter description; the description adds validation details (regex pattern) and error handling for invalid values, which enriches the schema.

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?

The description clearly states the tool returns an actuarial narrative summary for a single SERFF id, listing specific sections like Filing Type and 'What This Filing Does'. It distinguishes from siblings by calling it the 'fastest route' and noting the response size, making the purpose unambiguous.

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

Usage Guidelines4/5

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

It specifies when to use (when you have a SERFF id and want to understand changes) and provides fallback tools (list_filing_source_files, mcp_health) for missing summaries, advising not to retry. However, it does not explicitly contrast with other sibling tools like get_filing_extracts.

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

list_email_workloadList Regulatory Caseload by EmailA
Read-onlyIdempotent
Inspect

Use this to size up a person's REGULATORY caseload — how many filings a reviewer, actuary, or contact appears on, split by filing status. NOT for content or rating questions about the filings themselves.

Wrong tool for reading filing content, answering "what does this filing do", or seeing the objection text itself. For those, chain from a caseload result: this tool gives you the emails and volumes; search_correspondence_embeds({email}) or get_filing_correspondence({serff}) returns the actual paperwork.

Right questions this answers directly:

  • "Which CDI reviewer has the heaviest live caseload?" → email_domain='insurance.ca.gov' + year=2026 — top rows show pending vs closed split

  • "How many filings has actuary jane@wps-inc.com been on this year, and how many are still Pending?" → email='jane@wps-inc.com', year=2026

  • "Top carrier-side filers across the whole corpus" → no filter, topK=50

  • "Which of Pan Wong's recent Farmers filings are still under CDI review" → email='pan.wong@farmersinsurance.com', then search_correspondence_embeds({email, filing_status:'Pending'}) for the specific filings

Cost: one indexed aggregate + one join against filings. No LLM.

Each row: {email, filings_total, filings_closed, filings_pending, filings_other, earliest_filing, latest_filing}. filings_closed matches serff_filing_status ILIKE 'Closed%' (Approved, Withdrawn, Disapproved, Acknowledged); filings_pending matches ILIKE 'Pending%'; filings_other catches everything else (Filed, Draft, N/A, etc.). Sorted by filings_total descending, top topK returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
topKNoMax rows to return. Defaults to 20; capped at 200.
yearNoExact filing year. Mutually exclusive with year_from/year_to.
emailNoOptional exact email to scope the aggregate to a single address (case-insensitive).
year_toNoUpper bound on filing year, inclusive.
year_fromNoLower bound on filing year, inclusive.
email_domainNoOptional exact domain to scope the aggregate (e.g. "insurance.ca.gov"). Case-insensitive.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds valuable behavioral context: it is a single indexed aggregate with one join, no LLM, sorted by filings_total descending, and it precisely defines how filings_closed, filings_pending, and filings_other are computed from serff_filing_status. This goes well beyond the annotations.

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

Conciseness5/5

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

The description is long but tightly organized: purpose, exclusions, example questions, cost, and output semantics each earn their place. The most important scoping information is front-loaded, and the examples are concrete and directly actionable.

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?

With no output schema, the description fully explains the return row shape, status classification logic, sorting order, and topK behavior. It also covers cost and the absence of LLM processing, leaving no critical gap for an agent deciding whether and how to invoke this 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 100%, so the schema already documents all six parameters. The description adds extra value by showing realistic parameter combinations (e.g., email_domain='insurance.ca.gov' + year=2026, email='jane@wps-inc.com', topK=50) and explaining what each row means, which helps an agent construct correct calls.

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?

The description states a specific verb and resource: 'size up a person's REGULATORY caseload' with counts split by filing status. It explicitly distinguishes itself from content/rating tools and names sibling tools it is not, so an agent can select it correctly without opening schemas.

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?

The description gives explicit when-to-use guidance with concrete example questions and parameter mappings. It also states when NOT to use it and names the correct alternatives (`search_correspondence_embeds`, `get_filing_correspondence`), including how to chain from caseload results to actual filings.

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

list_filing_source_filesList Filing Source FilesA
Read-onlyIdempotent
Inspect

Lists the source files (PDFs, XLS spreadsheets, DOC manuals, ZIP archives) ingested for a SERFF id. Returns metadata only — name, size in bytes, MIME-class type (pdf / spreadsheet / document / csv / archive / other), file extension, modified timestamp.

Pair with get_filing_source_file_link to mint a signed download link the user can click — list names here, mint a link there.

Use this to:

  • triage a filing whose summary looks thin ("did we even ingest the right files?"),

  • discover the XLSM rater / rate manual PDF / rating-samples spreadsheet for a filing,

  • confirm which artefacts a filing actually shipped (e.g. is there a separate rate manual XLS, or just the PDF?).

Returns { error: ... } if no source files exist for the SERFF id.

ParametersJSON Schema
NameRequiredDescriptionDefault
serffYesCanonical SERFF id, shape PREFIX-IDENTIFIER (e.g. "AAIC-134567890"). Validated against /^[A-Z]{3,5}-[A-Z0-9]{7,15}$/; invalid values return an error envelope.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnly/readOnly and idempotent; description adds return metadata details, error envelope for missing files, and parameter validation pattern, going beyond annotations.

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

Conciseness5/5

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

Well-structured with bullet points, front-loaded with key action, and every sentence adds value without redundancy.

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?

For a single-parameter, no-output-schema tool, description fully explains return values, error behavior, and relation to sibling tool, leaving no gaps.

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

Parameters3/5

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

Schema coverage is 100% with detailed description of serff parameter; description reiterates validation but adds no new meaning beyond schema.

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?

The description clearly states the tool lists source files for a SERFF id, specifies file types (PDFs, XLS, DOC, ZIP), and distinguishes from sibling tool get_filing_source_file_link.

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?

Provides explicit use cases (triage, discover, confirm) and pairs with get_filing_source_file_link for download, giving clear when-to-use and when-not-to-use guidance.

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

mcp_accountMCP Account DetailsA
Read-onlyIdempotent
Inspect

Returns the resolved identity behind the current MCP bearer — email, company_name, account_type (free vs production), and company_reference. Quota-exempt: this is an identity probe, not a value-bearing call. Returns nulls for fields mono has no value for. Useful for an MCP client to confirm "who am I talking to mono as" without burning the user's monthly quota.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint. Description adds quota-exempt status, null returns for missing fields, and role as identity probe. These are valuable behavioral details beyond annotations.

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

Conciseness5/5

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

Three sentences, each adding essential info: what it returns, quota-exempt, null handling, and typical use case. No wasted words. Front-loaded with key point.

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

Completeness4/5

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

No output schema, but description enumerates returned fields and explains null behavior. For a simple identity probe, this is complete enough. Could mention authentication context, but annotations may imply it.

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?

No parameters exist. Baseline for 0 parameters is 4. Description does not need to add parameter semantics. It correctly notes no parameters are needed.

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?

Description specifies it returns resolved identity fields (email, company_name, account_type, company_reference). The verb 'returns' plus resource 'identity' is clear. No sibling tools overlap with account info, so it is well-distinguished.

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

Usage Guidelines4/5

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

Explicitly states it is useful as an identity probe without burning quota. Implies usage context (confirming identity). Could be more explicit about when not to use, but given distinct purpose and siblings, guidance is adequate.

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

mcp_get_startedHow to connect from Claude or ChatGPTA
Read-onlyIdempotent
Inspect

Onboarding + connection guide. Returns plain-text instructions: sign up for a free account at statefilings.ai, use the client_id / client_secret shown at signup when the MCP client prompts for auth, and per-client walkthrough URLs (Claude, ChatGPT). Quota-exempt — call this whenever a user asks how to use this MCP, get set up, or connect a new client.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, and openWorldHint false, so the safety profile is established. The description adds useful context beyond that: it returns plain-text instructions, is quota-exempt, and includes specific auth-flow expectations. It does not contradict the annotations.

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

Conciseness5/5

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

The description is compact and front-loaded: a headline phrase, the core output, the actionable instructions, and the trigger condition. Every sentence contributes unique value, and the most important guidance appears before the details.

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?

For a zero-parameter, no-output-schema, self-serve guide, the description covers all the essentials: what it returns, how to interpret the auth flow, the per-client URLs, and when to invoke it. There is no residual ambiguity that structured fields would need to resolve.

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?

With zero parameters, the schema is fully covered and there is nothing to add about parameter meaning. The description instead clarifies the return content and auth flow, which serves the parameterless tool well. The baseline of 4 for no-parameter tools is appropriate.

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?

The description names a clear resource (onboarding + connection guide) and a specific verb (returns plain-text instructions), then itemizes exactly what the instructions cover: signup, client credentials, and per-client walkthrough URLs. It also explicitly states the purpose is to help users get set up, which distinguishes it from the filing/search siblings.

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?

It gives an explicit when-to-use trigger: 'call this whenever a user asks how to use this MCP, get set up, or connect a new client.' It also highlights that the tool is quota-exempt, which is a concrete consideration for tool choice. No alternative tool is relevant here, so no exclusions are needed.

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

mcp_healthMCP Server HealthA
Read-onlyIdempotent
Inspect

Diagnostic snapshot of the deployed MCP server: build identifier, server_version (1.0. tag), boot time, advertised tool names, a hash of the tool surface, and corpus_updated_at (freshest watermark across the filings pipeline). Call this first when you suspect the connector is showing a stale tool list or you want to detect whether code or data has changed since your last call — compare tools_advertised against what your client lists, server_version for code, corpus_updated_at for data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate the tool is read-only, idempotent, and not open-world. The description adds behavioral details about the snapshot contents (build info, tool names, hash, data watermark). It does not contradict annotations and provides useful context beyond what annotations convey.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys purpose, contents, and usage. Every clause adds value with no extraneous words.

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?

Despite having no output schema, the description lists all returned fields (build identifier, server_version, boot time, tool names, hash, corpus_updated_at). The guidance on how to interpret results (comparing versions and hashes) makes the tool self-sufficient and complete for its diagnostic role.

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?

The input schema has zero parameters, and the schema description coverage is trivially 100%. No parameter explanations are needed. The baseline for zero-parameter tools is 4 per guidelines.

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?

The description explicitly states it provides a 'Diagnostic snapshot of the deployed MCP server' and lists specific returned fields (build identifier, server_version, boot time, etc.), which distinguishes it clearly from sibling tools focused on filings, products, and searches.

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?

The description gives explicit guidance: 'Call this first when you suspect the connector is showing a stale tool list or you want to detect whether code or data has changed since your last call.' It also explains what to compare (tools_advertised, server_version, corpus_updated_at), providing clear context for when to use it.

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

search_actuarial_embedsSemantic Search — Actuarial MemosA
Read-onlyIdempotent
Inspect

Pure vector search over per-filing actuarial-memorandum embeddings (extract_embeds where kind='actuarial_memo'). Each hit is a filing whose memo is semantically closest to your query, with the matching excerpt and lite filing metadata.

Cost: one query-embedding call + one indexed Postgres lookup. Bounded, cheap, fast. No LLM planning, no LLM composition.

This is the right tool any time the question is actuarial-shape. Reach for it — not search_summary_embeds and not search_filing_embeds — when the user is asking about:

  • Rate adequacy: headline rate change, indicated vs selected, off-balance, capping.

  • Loss trends: severity trend, frequency trend, pure-premium trend, projected ultimates, LDFs, IBNR development.

  • Credibility / experience: experience period, weight assigned to own experience vs class-plan / bureau, credibility tables.

  • Expense / profit provisions: permissible loss ratio, target combined ratio, profit & contingency loading, expense ratio, investment-income offset.

  • Reason codes / drivers: reinsurance cost, weather/cat load, severity-driven rate need, mix shift, frequency reductions from telematics.

  • Anything where the answer would be a number from the actuarial memo rather than a description of what the filing does.

The memo is where actuaries put the numerics; the extraction summary is where the pipeline puts the prose. If the question reaches for numbers, hit this surface first.

Wrong surface for:

  • Content questions ("filings discussing wildfire scoring", "telematics programmes", "parametric triggers") — those discuss what the filing is about, not actuarial numerics. Use search_summary_embeds (broader coverage).

  • Concrete-filter questions ("Filings from carrier NAIC 12345 in 2024") — use search_filings.

  • Filings with no actuarial memo. Memos are typically attached to Rate filings; Form, Rule, and Withdrawal filings often have none. Coverage is narrower than search_summary_embeds for that reason — most of the 2026 corpus is covered, prior years are backfilling.

How to combine:

  • "Personal auto filings in California whose indicated rate exceeds selected by 5+ points" → search_filings (state=CA, product_type="Personal Auto", filing_type="Rate") to scope a candidate set, then this tool over the candidates' memos.

  • "Carriers citing severity-driven rate need in 2025" → this tool first; get_filing_summary on the top hits to read in full.

Returns top-K hits, each with {serff, similarity, excerpt, meta}. Default topK=10, max 50. Excerpt is the first 800 chars of the matching memo.

ParametersJSON Schema
NameRequiredDescriptionDefault
naicNoExact NAIC carrier identifier (5-digit string). Restricts the cosine search to that carrier.
topKNoNumber of top filings to return. Defaults to 10; capped at 50.
yearNoExact filing year. Mutually exclusive with year_from/year_to.
queryYesNatural-language query. Pass the user's actuarial question verbatim — short, specific queries (5-30 words) match best. The query is embedded and cosine-compared against per-filing actuarial-memo embeddings.
serffNoOptional SERFF id to scope the search to a single filing's actuarial memo (shape PREFIX-IDENTIFIER). Each filing has at most one memo embedding, so topK is effectively 1 when serff is set.
stateNoTwo-letter US state code, uppercase. Corpus currently covers CA only.
date_toNoUpper bound on filing date (ISO YYYY-MM-DD).
year_toNoUpper bound on filing year, inclusive.
date_fromNoLower bound on filing date (ISO YYYY-MM-DD).
year_fromNoLower bound on filing year, inclusive.
filing_typeNoWildcard match on filing type ("Rate", "Rule", "Form", "Withdrawal", etc.). Substring match.
product_typeNoWildcard match on product type ("Personal Auto", "Homeowners", "Commercial Auto", "Workers Compensation", etc.). Substring match — "Auto" matches both Personal and Commercial Auto.
predecessor_prefixNoBureau / org SERFF prefix ("ISOF", "NCCI", "AAIS", "MSO"). Restricts to filings carriers actually adopted into a programme.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, so the bar is lower. The description still adds meaningful behavior beyond annotations: cost model, no LLM planning/composition, coverage caveats about 2026 backfill, cosine similarity semantics, and the first-800-chars excerpt limit. This is rich, non-contradictory context.

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

Conciseness5/5

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

The description is long but every section earns its place: purpose and cost are front-loaded, sibling differentiation is explicit, and the bullet lists are dense examples rather than filler. Headings make the structure scannable for an agent.

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?

With no output schema, the description supplies the return shape explicitly: top-K hits with {serff, similarity, excerpt, meta}. It also covers coverage limitations, how to combine with search_filings and get_filing_summary, and when not to use the tool. Given the 13-parameter complexity and rich sibling set, nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even without extra parameter detail. The description does reinforce query behavior and topK defaults, but most of those facts are already present in the input schema (e.g., topK capped at 50, serff singleton, CA-only state). It adds routing context rather than new parameter-level meaning.

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?

The first sentence names the exact resource and operation: pure vector search over per-filing actuarial-memorandum embeddings. It explicitly contrasts with search_summary_embeds and search_filing_embeds, and clarifies this tool is for actuarial numerics rather than content or filtering.

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?

The description has dedicated 'right tool', 'wrong surface', and 'how to combine' sections. It lists concrete actuarial topics that should use this tool, explicitly routes content queries to search_summary_embeds and filter queries to search_filings, and gives worked combination examples. An agent can not only choose this tool but know when to route elsewhere.

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

search_correspondence_embedsSemantic Search — Regulatory Position (Objections + Filer Contacts)A
Read-onlyIdempotent
Inspect

Use this to understand the REGULATORY POSITION of a filing — what the state regulator questioned, how the carrier answered, who was on the exchange. NOT to understand what the filing does or how it rates.

Wrong tool for content questions ("what does this filing change", "what's the base rate", "which forms did it introduce", "what's the indicated vs selected rate"). Reach for search_summary_embeds (filing content), search_actuarial_embeds (rate/trend/credibility numerics), or search_filing_embeds (paragraph-level filing body) instead.

Right tool for questions about the state's dialogue with the carrier: "what did CDI push back on", "who is the reviewer on this filing", "which of my Pending Rate filings still have unresolved objections", "every filing involving actuary X".

Pure vector search over correspondence_embeds — the per-chunk embed table populated from three attachment types in a filing's source folder:

  • correspondence_attachment_*.pdf — CDI objection letters + carrier response letters (the dialogue itself)

  • supporting_document_attachment_*.pdf — actuarial memos, exhibits, transmittal letters (highest volume of filer contact info)

  • .pdf (top-level cover page) — SERFF's official filing-person contact block (highest per-page email density)

Every hit is a passage from one of those, ranked by cosine similarity. The excerpt IS the source text — you can quote it back to the user to replay the exchange or identify who filed the paper without a separate PDF fetch. Use source_file on each hit to see which attachment type the excerpt came from.

Facet filters (all optional, all combine with AND on top of the semantic ranking):

  • email — chunks mentioning this exact address (case-insensitive)

  • email_domain — chunks mentioning any address on this domain (e.g. insurance.ca.gov for CDI reviewers)

  • serff — scope to one filing's thread

  • filing_status — substring match (use Pending for live objections, Closed for resolved)

  • year / year_from / year_to / date_from / date_to — filing-year and filing-date windows

  • state, naic, product_type, filing_type, predecessor_prefix — carrier + programme scope

For "which filings did jane.reviewer@insurance.ca.gov touch this quarter", use list_email_workload instead — it aggregates and is designed for caseload views.

Cost: one query-embedding call + one indexed Postgres lookup. Bounded, cheap, fast.

Right surface for:

  • "What did CDI push back on in this filing?" — pass serff to scope; get the reviewer's own words.

  • "Show me carrier responses to territory-factor objections" — semantic search, no scope; excerpts read as regulator-carrier dialogue.

  • "Find filings where CDI questioned reinsurance costs" — use the semantic query alone.

  • "Every objection where jane.reviewer@insurance.ca.gov was on the exchange" — pass email, optionally combined with the semantic query.

  • "All filings whose objection thread involves anyone at Farmers" — pass email_domain=farmersinsurance.com.

Right combination with other tools: pair with get_filing_correspondence to pull the full ordered thread for one filing once search surfaces a hit worth reading end-to-end.

Wrong surface for:

  • Filing-content questions (rate manuals, forms, actuarial memos) — use search_summary_embeds or search_filing_embeds.

  • "Which filings had ANY objections at all" — for presence-only, prefer get_filing_correspondence with a file_count > 0 check per SERFF.

Facet coverage (as of 2026): most objection letters do not embed email addresses in the body — CDI reviewers sign off with a name + division, not a mailbox. So email / email_domain scopes will match a minority of chunks even for filings that had a full objection round. Semantic search is the dominant surface here; the email facets are a bonus filter, not the primary shape.

Returns top-K chunks with {serff, source_file, chunk_index, similarity, excerpt, emails, email_domains, page_date, meta}. Default topK=10, max 50. Excerpt is the first 1200 chars of the matching chunk.

ParametersJSON Schema
NameRequiredDescriptionDefault
naicNoExact NAIC carrier identifier (5-digit string). Restricts to that carrier.
topKNoNumber of top hits to return. Defaults to 10; capped at 50.
yearNoExact filing year. Mutually exclusive with year_from/year_to.
emailNoOptional exact-match email filter. Only chunks mentioning this address are searched. Case-insensitive (lowercased on match). Sparse coverage — most objection letters do not embed email addresses in the body.
queryYesNatural-language query. Pass the user's question verbatim — short, specific (5-30 words) matches best. Embedded and cosine-compared against per-chunk correspondence embeddings.
serffNoOptional SERFF id to scope the semantic search to a single filing's correspondence thread (shape PREFIX-IDENTIFIER). Useful for "what did CDI push back on in this filing?" questions.
stateNoTwo-letter US state code, uppercase. Corpus currently covers CA only.
date_toNoUpper bound on filing date (ISO YYYY-MM-DD).
year_toNoUpper bound on filing year, inclusive.
date_fromNoLower bound on filing date (ISO YYYY-MM-DD).
year_fromNoLower bound on filing year, inclusive.
filing_typeNoWildcard match on filing type ("Rate", "Rule", "Form", "Withdrawal", etc.). Substring match.
email_domainNoOptional exact-match email-domain filter (e.g. "insurance.ca.gov", "farmersinsurance.com"). Only chunks mentioning any address on that domain are searched. Case-insensitive.
product_typeNoWildcard match on product type ("Personal Auto", "Homeowners", "Commercial Auto", "Workers Compensation", etc.). Substring match.
filing_statusNoWildcard match on filing status ("Pending", "Closed - Approved", "Closed - Withdrawn", etc.). Substring match — use to distinguish live vs closed objections.
predecessor_prefixNoBureau / org SERFF prefix ("ISOF", "NCCI", "AAIS", "MSO").

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true, idempotentHint=true, and the description adds substantial context beyond them: the pure vector-search mechanics, that excerpts ARE quotable source text, cost characteristics ('one query-embedding call + one indexed Postgres lookup'), the topK cap, and the critical sparse-coverage caveat that email/email_domain facets match only a minority of chunks. This materially shapes how an agent uses the tool.

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?

Front-loaded with purpose and usage, and well-organized with bold headers and distinct Right/Wrong tool sections. It is long, but every section carries decision-relevant information — routing, facet semantics, coverage caveats, and concrete example queries — so the length is earned rather than padded. Slightly over-built for a search tool, hence 4 not 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?

No output schema exists, so the description correctly carries the burden of explaining return values: 'Returns top-K chunks with {serff, source_file, chunk_index, similarity, excerpt, emails, email_domains, page_date, meta}. Default topK=10, max 50. Excerpt is the first 1200 chars.' For a 16-param tool with heavy sibling differentiation needs, nothing an agent needs to call it correctly is missing.

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 coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema: it explains how facets combine ('all combine with AND on top of the semantic ranking'), gives the sparse-coverage caveat for email filters, and specifies query semantics ('Pass the user's question verbatim — short, specific 5-30 words matches best'). Does not fully restate every parameter, but adds meaning the schema lacks.

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?

The description opens with a precise statement of what the tool does — understand the REGULATORY POSITION of a filing — and immediately distinguishes it from siblings by naming exactly what it is not ('NOT to understand what the filing does or how it rates'). The verb+resource pair ('semantic search over correspondence_embeds') is specific and unambiguous.

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 when-to-use ('Right tool for questions about the state's dialogue'), when-not-to-use ('Wrong tool for content questions'), and concrete alternatives — search_summary_embeds, search_actuarial_embeds, search_filing_embeds, list_email_workload, get_filing_correspondence — each with the condition that selects it. Even provides combination guidance for pairing with get_filing_correspondence for end-to-end thread reads.

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

search_filing_embedsSemantic Search — Filing BodyA
Read-onlyIdempotent
Inspect

Pure vector search over per-chunk full-document embeddings (filing_embeds, ~12.4M rows across ~65K filings — each filing sliced into ~190 paragraph-sized chunks). The most granular semantic surface in the corpus.

Cost: one query-embedding call + one indexed Postgres lookup. No LLM planning, no LLM composition.

Right surface for:

  • "Find the exact passage discussing X" — granular text-search where you need the paragraph not just the filing.

  • "Find filings whose body text mentions X" when the summary-level surface (search_summary_embeds) might miss a topic buried in a long PDF.

  • "Drill into this specific filing semantically" — pass serff to restrict the cosine search to a single filing. Without scoping, commodity-vocabulary chunks from other filings can out-rank your target filing; scoping eliminates that.

Wrong surface for:

  • Filing-level questions where multiple hits per filing are noise — use search_summary_embeds (one match per filing).

  • Concrete-filter questions like "Filings from carrier NAIC 12345 in 2024" — use search_filings.

aggregate: true (default) collapses to top-K filings by best-chunk similarity (one row per filing, the best matching paragraph as excerpt). aggregate: false returns top-K raw chunks (may include several from the same filing) — use when the user asked to see the actual paragraphs. When serff is set, aggregate is forced to false (every hit is the same filing already).

Returns top-K hits, each with {serff, chunk_index, similarity, excerpt, meta}. Default topK=10, max 50. Excerpt is the first 800 chars of the matching chunk.

ParametersJSON Schema
NameRequiredDescriptionDefault
naicNoExact NAIC carrier identifier (5-digit string).
topKNoNumber of top hits to return. Defaults to 10; capped at 50. If filters narrow the candidate set below topK you get what's there, no silent fallback to cross-filing matches.
yearNoExact filing year. Mutually exclusive with year_from/year_to.
queryYesNatural-language query. Pass the user's question verbatim when you can — short, specific queries (5-30 words) match best. The query is embedded and cosine-compared against per-chunk body embeddings.
serffNoOptional SERFF id to scope the chunk search to a single filing (shape PREFIX-IDENTIFIER, e.g. "REGU-134742228"). Use this when you already know which filing you want to read semantically — e.g. "find the territory factor table in REGU-134742228".
stateNoTwo-letter US state code, uppercase. Corpus currently covers CA only.
date_toNoUpper bound on filing date (ISO YYYY-MM-DD).
year_toNoUpper bound on filing year, inclusive.
aggregateNoWhen true (default), collapse to top-K filings by best-chunk similarity. When false, return top-K raw chunks (may include multiple chunks from the same filing). Ignored (forced to false) when `serff` is set — scoping to one filing always returns raw chunks.
date_fromNoLower bound on filing date (ISO YYYY-MM-DD).
year_fromNoLower bound on filing year, inclusive.
filing_typeNoWildcard match on filing type ("Rate", "Rule", "Form", etc.). Substring match.
product_typeNoWildcard match on product type. Substring match — "Auto" matches Personal Auto and Commercial Auto.
predecessor_prefixNoBureau / org SERFF prefix ("ISOF", "NCCI", "AAIS", "MSO").

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate readOnly and idempotent hints. The description adds valuable behavioral context (e.g., cost breakdown, aggregate behavior when serff is set, no LLM involvement) beyond the annotations.

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?

The description is lengthy but well-structured with sections and bullet points. It front-loads core concepts and every sentence adds value, though slight brevity could improve conciseness.

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?

Completely covers use cases, alternatives, and behavioral traits. Includes corpus statistics, explains return format, and addresses edge cases like scoping with serff. No output schema but description compensates adequately.

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 coverage is 100% so parameters are well-documented. The description adds extra context for key parameters like aggregate and serff, enhancing understanding beyond the schema.

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?

The description clearly states it is a 'pure vector search over per-chunk full-document embeddings' for granular semantic search, and explicitly distinguishes it from sibling tools like search_summary_embeds and search_filings.

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?

Provides explicit 'Right surface for' and 'Wrong surface for' sections, detailing when to use this tool vs. alternatives, and includes guidance on aggregate and serff parameters.

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

search_filingsSearch FilingsA
Read-onlyIdempotent
Inspect

Search the SERFF filings corpus by carrier, NAIC, product line, state, year-range, filing type, or bureau lineage. Returns a lite row shape per match (SERFF id, state, year, NAIC, group code, carrier name, product name, filing type / status / date). For the substance of a filing, follow up with get_filing_summary once you have a SERFF id.

All filters AND together. Defaults: limit=25, capped at 100; ordered by filing date descending. Pagination via offset. The full count matching the predicate is returned in total (independent of limit/offset) so you can decide whether to paginate or narrow the predicate.

Common patterns:

  • "All California auto filings from 2024" → state="CA", product_type="Auto", year=2024.

  • "Recent rule changes in workers comp" → product_type="Workers", filing_type="Rule", year_from=2023.

  • "Which Progressive filings adopted ISO?" → search="PRGS", predecessor_prefix="ISOF".

  • "Anything mentioning telematics in the product name" → search="telematics".

predecessor_prefix answers "filings adopted from a bureau" questions — it restricts to filings that appear in some programme's adopted-from chain, so orphan bureau filings no carrier ever pulled in are excluded. Validated against /^[A-Z][A-Z0-9]{1,7}-?$/; trailing dash optional. Invalid values return { error: ... } rather than a row set.

Only filings that have been fully read and classified are returned — partial / pre-classification rows are hidden so every result is a filing you can actually reason about.

ParametersJSON Schema
NameRequiredDescriptionDefault
naicNoExact match on the NAIC carrier identifier (5-digit string). Use when you know the specific carrier (e.g. "24260" = Progressive Direct). One filing always belongs to exactly one NAIC.
yearNoExact filing year (e.g. 2024). The corpus covers filings from 2005 onward; earlier years return no rows. Mutually exclusive with `year_from`/`year_to` — pick one form.
limitNoMax rows returned in this call. Defaults to 25; capped at 100. Pair with `offset` to page. Always check `total` in the response to decide whether you need more pages.
stateNoTwo-letter US state code, uppercase. The corpus currently covers California (`CA`) only — other state codes will return no rows until additional states are onboarded. One filing always belongs to exactly one state.
offsetNoRow offset for pagination. Defaults to 0. Combined with the descending filing-date ordering, `offset=N` skips the most recent N filings matching the predicate.
searchNoFree-text wildcard match across SERFF id, carrier name, and product name. Useful for "anything mentioning Progressive" or "filings whose product name contains 'condo'". Prefer the structured fields below — `naic`, `state`, `filing_type`, `product_type` — when you can; they are more precise and do not false-match on substrings.
date_toNoUpper bound on filing date as ISO date (YYYY-MM-DD).
year_toNoUpper bound on filing year, inclusive.
date_fromNoLower bound on filing date as ISO date (YYYY-MM-DD). Use for finer-grained windows than `year_from` allows. Compares against the date the carrier submitted the filing, not the rate effective date.
year_fromNoLower bound on filing year, inclusive. The corpus covers filings from 2005 onward. Pair with `year_to` for a range, or use alone for "everything since".
filing_typeNoWildcard match on filing type. Common values: "Rate", "Rule", "Rate/Rule", "Loss Cost / Rule", "Form", "Rate/Rule/Form", "Withdrawal", "Correspondence", "Adoption". Substring matches: `filing_type="Rule"` returns Rule, Rate/Rule, and Loss Cost / Rule. Substantive (rate-affecting) filings are typically Rate, Rule, Rate/Rule, Loss Cost / Rule, or Form combinations.
product_typeNoWildcard match on product type. Common values include "Personal Auto", "Homeowners", "Commercial Auto", "Workers Compensation", "Property", "Liability". Substring matches: `product_type="Auto"` returns Personal Auto and Commercial Auto.
predecessor_prefixNoBureau or organisation SERFF prefix — common values: "ISOF" (ISO Services), "NCCI" (workers comp loss costs), "AAIS" (American Association of Insurance Services), "MSO" (Mutual Service Organisation). Returns filings carriers actually adopted into a programme — orphan bureau filings nobody picked up are excluded. Validated against /^[A-Z][A-Z0-9]{1,7}-?$/ (1-8 alphanumeric chars, trailing dash optional). Invalid input returns `{ error: ... }`. Case-insensitive on the way in.

TDQS

A5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description adds: all filters AND together, default/capped limit, descending order, pagination via offset, total count independent of limit/offset, validation of predecessor_prefix with error response, and that only fully read/classified filings are returned. This gives comprehensive 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.

Conciseness5/5

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

The description is well-structured with clear sections: purpose, behavior, common patterns, special parameter details, and data readiness. Each sentence adds value, and it is front-loaded with the core purpose. Despite length, it is efficient and not verbose.

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?

Given 13 parameters, no output schema, and 16 siblings, the description is complete: it explains input, behavior, pagination, error handling, common patterns, and the return shape (lite row with specific fields). It also clarifies that partial filings are hidden. No gaps for a search tool.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning: common patterns for each parameter, mutual exclusivity of year vs year_from/to, wildcard matching behavior for filing_type and product_type, and precise explanation of predecessor_prefix. This goes well beyond the schema alone.

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?

The description clearly states the tool searches the SERFF filings corpus by various criteria and returns a lite row shape, explicitly distinguishing from get_filing_summary for substance. The verb 'Search' and resource 'SERFF filings corpus' are specific, and it differentiates from siblings as a search/discovery tool.

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?

The description provides explicit guidance: follow up with get_filing_summary for details, prefer structured fields over free-text, and includes common patterns like 'All California auto filings from 2024'. It tells when to use this tool and when to narrow or paginate, but does not explicitly contrast all siblings; however, the guidance is sufficient.

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

search_summary_embedsSemantic Search — Filing SummariesA
Read-onlyIdempotent
Inspect

Pure vector search over per-filing extraction-summary embeddings (one embedding per filing, ~59K rows total). Each hit is a filing whose extraction summary is semantically closest to your query, with the matching excerpt and lite filing metadata (state, year, company, product type, filing type, filing date).

Cost: one query-embedding call + one indexed Postgres lookup. Bounded, cheap, fast. No LLM planning, no LLM composition. Always reach for this before any LLM-driven alternative.

Right surface for what is this filing about questions:

  • "Show me filings discussing X" — content questions where X is not a concrete filter (wildfire scoring, telematics programmes, autonomous-vehicle exposure, ESG factors, parametric triggers, etc.).

  • "Find filings that mention " — when you need to discover filings by content rather than by structured metadata.

  • "Filings citing trend data on " — when the question is content-shaped, not numerics-shaped.

Wrong surface for:

  • Actuarial-shape questions like "filings with credibility under 50%", "filings whose indicated and selected rate diverge sharply", "rate filings where frequency trend is negative". Use search_actuarial_embeds — those numerics live in the actuarial memo, not the summary.

  • Concrete-filter questions like "Filings from carrier NAIC 12345 in 2024" or "ISOF-rooted filings carriers adopted". Use search_filings with the typed filters — much faster, no embedding cost at all.

  • Anything with a SERFF id already in hand — use the get_filing_* tools.

How to combine:

  • For "recent auto programmes in California with novel rating factors": first search_filings (state=CA, product_type="Auto", year_from=…) to get a candidate set, then call this tool over those candidates' descriptions implied by the question.

  • For "filings whose summary mentions X": this tool alone, then get_filing_summary on the top hits to read in full.

Returns top-K hits, each with {serff, similarity, excerpt, meta}. Default topK=10, max 50. Excerpt is the first 800 chars of the matching summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
naicNoExact NAIC carrier identifier (5-digit string). Restricts the cosine search to that carrier.
topKNoNumber of top filings to return. Defaults to 10; capped at 50. The result will contain at most this many rows; if filters narrow the candidate set below topK you get what's there, no silent fallback.
yearNoExact filing year. Mutually exclusive with year_from/year_to.
queryYesNatural-language query. Pass the user's question verbatim when you can — short, specific queries (5-30 words) match best. The query is embedded and cosine-compared against per-filing summary embeddings.
serffNoOptional SERFF id to scope the search to a single filing's summary embedding (shape PREFIX-IDENTIFIER). Each filing has at most one summary embedding, so topK is effectively 1 when serff is set.
stateNoTwo-letter US state code, uppercase. Corpus currently covers CA only.
date_toNoUpper bound on filing date (ISO YYYY-MM-DD).
year_toNoUpper bound on filing year, inclusive.
date_fromNoLower bound on filing date (ISO YYYY-MM-DD).
year_fromNoLower bound on filing year, inclusive.
filing_typeNoWildcard match on filing type ("Rate", "Rule", "Form", "Withdrawal", etc.). Substring match.
product_typeNoWildcard match on product type ("Personal Auto", "Homeowners", "Commercial Auto", "Workers Compensation", etc.). Substring match — "Auto" matches both Personal and Commercial Auto.
predecessor_prefixNoBureau / org SERFF prefix ("ISOF", "NCCI", "AAIS", "MSO"). Restricts to filings carriers actually adopted into a programme.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false. The description adds key behavioral details: it's a pure vector search with bounded cost, no LLM planning, defaults topK=10 with max 50, and clarifies behavior when filters narrow candidate set (no silent fallback). This provides substantial context beyond annotations.

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?

The description is well-structured with sections, bullet points, and clear headings, front-loading the core purpose. While it is somewhat lengthy, every sentence adds valuable information for a tool with 13 parameters and multiple use cases. Minor verbosity prevents 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?

Given the tool's complexity (13 parameters, no output schema), the description is remarkably complete. It specifies return fields (serff, similarity, excerpt, meta), excerpt length (800 chars), filtering behavior, combination strategies, and caveats like corpus coverage. No obvious gaps remain.

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

Parameters5/5

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

All 13 parameters are fully described in the schema, but the description adds significant meaning beyond the schema. For example, it advises short specific queries for best matches, explains topK behavior with filters, notes that state corpus currently covers CA only, and includes substring match examples for product_type. This greatly aids correct parameter usage.

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?

The description clearly states 'Pure vector search over per-filing extraction-summary embeddings' and explains the return of semantically closest filings with metadata. It explicitly distinguishes from sibling tools like search_actuarial_embeds and search_filings, making the purpose unambiguous.

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?

The description provides explicit when-to-use (content questions about what filing is about) and when-not-to-use (actuarial-shape, concrete filters, SERFF already in hand) guidelines. It also offers combination strategies with other tools, such as first using search_filings for candidate sets.

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

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides retrieval-augmented generation for insurance claims, enabling search, clause retrieval, and governed tool-calling over policy documents using local LLM (Ollama).
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables deep analysis of SEC EDGAR filings through universal company search, document content extraction, and advanced filing search capabilities. Provides AI-ready access to business descriptions, risk factors, financial statements, and full-text search across any public company's SEC documents.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables querying and analysis of SEC filing documents through natural language. Uses Pinecone vector search with document summarization to help users retrieve and understand financial filings for various companies.
    1
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.5/5.0
Disambiguation4/5

The get_filing_* family has distinct purposes, though get_filing_lineage and get_filing_references could be confused without the detailed descriptions. The search_* tools are clearly separated by embedding surface, and dossier/composite vs single-filing retrievals are explicitly differentiated.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern with clear prefixes: get_filing_*, search_*, list_*, and mcp_*. No style mixing or vague generic verbs.

Tool Count4/5

At 16 tools, this sits at the upper edge of the ideal range. Each tool earns its place, though get_filing_dossier could have been a client-side composition of the other get_filing_* calls rather than a separate tool.

Completeness5/5

The domain (retrieving CA rate filings) is covered end to end: structured and semantic search across multiple granularities, filing summaries, correspondence threads, actuarial numerics, lineage, source file listing/download, and reviewer caseload. The read-only nature of the domain means no create/update operations are needed, and every retrieval path leads to a terminal artifact.

Resources