Skip to main content
Glama

Kaleidoscope MCP (SEC & financial data)

Material Contracts (filed agreements — parties, terms, clause types)

material_contracts
Read-onlyIdempotent

A company's filed agreements — every EX-10 material contract and EX-2.1 M&A agreement it filed or signed as a party — with counterparties (companies and people), dates, term, amount and its basis, governing law, and which clause types each agreement contains (change of control, non-competition, termination, indemnification, ...). Same data as Kaleidoscope Console's Material Contracts report.

Filters: since / as_of (filing date), agreement_types (e.g. 'credit_agreement', 'employment_agreement', 'license_agreement', 'merger_agreement', 'supply_agreement', 'lease_agreement'), families ('credit', 'employment', 'commercial', 'ma', 'equity', 'capital_markets', 'real_estate', 'governance', ...), has_clause (clause_type keys from clause_facet, e.g. 'change_of_control_definition', 'non_compete', 'non_solicit_employee'; clause_match any|all) and counterparty (name substring).

Each agreement lists clauses [{type, label, group, n, has_passages}], grouped substantive-first. Only merger agreements carry clause passages today; other types name the clause type only — read the text with get_filing(accession, exhibit=filename). Before 2016 only agreements with clause headings have clause types. clause_facet counts agreements per clause type across everything matching the other filters (use its keys in has_clause; the most common clause_facet_limit types, default 60 — clause_types_total says how many exist); type_facet does the same per agreement type.

Amounts are as written in the agreement with their basis (total / annual / per-unit, ...) and direction; 'undisclosed' / 'redacted' when withheld. For an M&A agreement the amount is often a termination fee, not the deal value — use company_deals for deals.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "material_contracts"
  }
}

Input Schema

NameRequiredDescriptionDefault
as_ofNoYYYY-MM-DD — only agreements filed on or before (point in time). Default today.
limitNoAgreements per page (max 100).
sinceNoYYYY-MM-DD — agreements filed on or after.
offsetNo
familiesNoreporting families: credit, employment, commercial, ma, equity, capital_markets, real_estate, governance, fund_management, other.
company_idNomars company UUID (instead of ticker_or_cik).
has_clauseNoclause_type keys (see clause_facet).
clause_matchNoAgreement must contain any (default) or all of has_clause.any
counterpartyNoKeep agreements with a party whose name contains this text.
ticker_or_cikNoTicker or CIK.
agreement_typesNoagreement_type keys (see type_facet).
clause_facet_limitNoMax clause types in clause_facet (most common first; 0 = all).
include_amendmentsNo
include_unverifiedNoInclude integrity 'warn' rows (default: verified + vouched only).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses real coverage caveats: only merger agreements carry clause passages today, and before 2016 only agreements with clause headings have clause types. It also explains amount semantics ('undisclosed'/'redacted' when withheld) and that the default excludes integrity 'warn' rows, which the annotations do not convey.

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?

It is dense but well organized: what the data is, then filters, then record shape and caveats, then amount semantics. Almost every clause earns its place, though the facet paragraph mixes several ideas (clause_facet, type_facet, limits, clause_types_total) in one long span that could be split for faster scanning.

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 14-parameter tool with no output schema, the description covers the returned record shape, the facet mechanics, the temporal and historical coverage limits, pagination intent via the schema, and the M&A amount pitfall. An agent has enough to call it correctly and interpret the response without opening a schema.

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 86%, so the baseline is 3, but the description adds genuine meaning: has_clause must use keys returned by clause_facet, clause_match toggles any/all, and clause_facet_limit/type_facet are facet-generation controls whose keys feed back into the filters. That facet-to-filter relationship is not visible in the bare 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 names the specific resource (filed EX-10 material contracts and EX-2.1 M&A agreements) and enumerates exactly what each record carries: counterparties, dates, term, amount and basis, governing law, and clause types. It also draws the boundary against siblings by noting company_deals covers deal value and get_filing holds the passages, so an agent can distinguish it from adjacent tools.

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 gives clear routing rules: 'use company_deals for deals' when the amount is a termination fee rather than deal value, and 'read the text with get_filing(accession, exhibit=filename)' when clause passages are needed. What it lacks is an upfront statement of the scenario that should trigger this tool at all (e.g. screening for change-of-control exposure), leaving the general when-to-use case to inference from the filter list.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources