Skip to main content
Glama

Kaleidoscope MCP (SEC & financial data)

Graph Ledger (company/person overview — pre-joined investors, employment, peers, liquidity, health signals in one call) [beta]

graph_ledger
Read-onlyIdempotent

Tell me about this company / person / investor — call this tool for a full company overview or background profile, by name, ticker, or domain. Accepts a bare company name/ticker/domain directly via identifier (resolves internally, no separate resolve call needed) and returns a complete overview: profile, investors (with portfolio context), employment, peers, liquidity windows, and health signals, pre-joined in one call. Replaces mars_company_resolve + mars_funding_history + mars_search_articles — those three separate calls collapse into this one.

Each neighbor section is fused with the multi-table facts that make it interesting (a board member arrives with their OTHER board seats and whether those companies went bankrupt/delisted/were acquired), plus next_hops — the exact node_ids to dig deeper with graph_neighbors.

Pilot scope: serves a precomputed set of 50 companies/people/investors (mars.entity_ledger_v2) — growing, not yet full graph coverage. Every other company or person returns an honest found: false with a pointer to graph_neighbors for a live walk instead, never an error.

Each neighbor section carries a dig pointer (a ready graph_neighbors(...) call) for the rest of that edge type beyond what's itemized here — pointers are checked against this server's own live catalog before being returned, so a dig string you get back is always actually callable.

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": "graph_ledger"
  }
}

Input Schema

NameRequiredDescriptionDefault
node_idNoCanonical node UUID (from a prior graph_resolve/graph_ledger call). Skip this and pass `identifier` instead if you only have a name/ticker.
node_typeNoOptional — informational only in the pilot (the precomputed row already knows its own kind); surfaced as a mismatch warning if it disagrees with the stored row.
identifierNoName / ticker / domain / CIK / crd / linkedin_url — resolved internally (same logic as graph_resolve) before the ledger lookup. Provide this OR node_id, not both.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint=false) and closed-world scope, so the bar is lower. The description still adds real context: internal identifier resolution with no separate resolve call, the 50-entity precomputed pilot and its growth, honest found:false instead of an error, and dig pointers validated against the live catalog. It stops short of describing result size, truncation of neighbor sections, or latency for the pre-joined payload, so it earns a 3 rather than the top of the scale.

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 bold front-loaded hook answers the core question immediately, followed by identifier behavior, return payload, sibling replacement, pilot scope, and pointer mechanics in descending priority. Dense but every sentence carries actionable information; the only waste is echoing 'pre-joined in one call' from the title.

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?

There is no output schema, yet the description enumerates the returned sections (profile, investors, employment, peers, liquidity, health signals), explains the fused multi-table neighbor facts and next_hops, and documents the not-found contract. Nothing an agent needs to call it correctly or interpret an empty result 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; the description adds value by stressing that identifier resolves internally like graph_resolve and that node_id can be omitted when only a name is known. It largely mirrors the schema on node_type's informational, mismatch-warning role rather than extending it.

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

Purpose5/5

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

States a specific verb and resource ('full company overview or background profile') plus the accepted identifier forms, and explicitly names the three sibling calls it collapses (mars_company_resolve, mars_funding_history, mars_search_articles). An agent can separate it from graph_neighbors, graph_resolve, and graph_entity from the text alone.

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?

Gives an explicit when-to-use ('Tell me about this company / person / investor'), names what it replaces, and states the fallback path: entities outside the 50-row pilot return found:false with a pointer to graph_neighbors for a live walk. The 'dig' pointer clarifies when to go beyond the itemized edges.

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