Skip to main content
Glama

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

Smart Money Flow (composite)

get_smart_money_flow
Read-onlyIdempotent

Composite flow score on [-100, +100] aggregating insider transactions, 13F institutional Δ-shares vs the prior quarter, and SC 13D/13G blockholder changes over a lookback window. Each component normalised independently, then combined with configurable weights (default: institutional 0.4, blockholder 0.4, insider 0.2). Returns per-component attribution so an agent can see WHY the score is what it is — not just the headline number. NOTE: the institutional component is a QoQ share-change signal computed over the top-5 13F filers on a MATCHED current-vs-prior basis (a filer only counts when its prior-quarter book is observable), NOT the issuer's complete institutional book — treat the score as a directional signal, not an exact flow. coverage.coverage_confidence (0–1) reports how much of that basis had a real prior quarter; when it is 0 the institutional component is forced to 0 so a 13F ingestion gap can never surface as a false max-conviction buy. See the coverage block for holder coverage + staleness. The score is a unitless composite, not a dollar figure. Institutional tier only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tickerYesIssuer ticker symbol — or a CIK (SEC identifier).
as_of_dateNoPoint-in-time cutoff (YYYY-MM-DD) applied to all three legs (institutional, insider, blockholder) via SEC accepted_at — filings accepted after this date are excluded so the composite is computed with zero look-ahead. Omit for the latest knowable signal.
lookback_daysNoLookback window for insider + blockholder components. Default 90.
weight_insiderNoWeight applied to the insider component (0–1).
weight_blockholderNoWeight applied to the blockholder component (0–1).
weight_institutionalNoWeight applied to the institutional component (0–1).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cikYes
_metaYesProvenance envelope — data lineage for every MCP response
tickerYes
weightsYes
coverageYesHonesty block: the institutional signal is computed from a top-N 13F slice with a top-5-filer matched basis. Surfaces holder coverage + staleness so the composite is never read as the issuer's complete book.
as_of_dateYesThe point-in-time cutoff actually applied (echo of the as_of_date input). Null when no PIT cut was requested — never the reporting period_end fabricated as a cutoff.
componentsYes
period_endYesThe institutional 13F REPORTING period — NOT a point-in-time cutoff.
company_nameYes
composite_scoreYes
insider_componentYes
blockholder_componentYes
institutional_componentYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
      Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt. Use THIS — not `last_updated` — when telling a user how current the fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to."New value: +"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
  2. Changed2 schema fields changed
    • changedInput schema / properties / ticker / description
      Previous value: -"Issuer ticker symbol."New value: +"Issuer ticker symbol — or a CIK (SEC identifier)."
    • changedInput schema / properties / ticker / pattern
      Previous value: -"^[A-Za-z.\\-]+$"New value: +"^[A-Za-z0-9.\\-]+$"
  3. Changed2 schema fields changed
    • addedOutput schema / properties / _meta / properties / fundamentals_as_of
      Added value: +{
      +  "description": "ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt. Use THIS — not `last_updated` — when telling a user how current the fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / price_as_of
      Added value: +{
      +  "description": "ISO timestamp when the price surfaces were last refreshed.",
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / _meta / properties / cost_usd
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Per-call cost transparency. Omitted for subscription-only tools that have no PAYG-equivalent price.",
      +  "properties": {
      +    "amount_usd": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "basis": {
      +      "description": "payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed.",
      +      "enum": [
      +        "payg_charge",
      +        "payg_rate_card"
      +      ],
      +      "type": "string"
      +    },
      +    "billed": {
      +      "description": "true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "amount_usd",
      +    "billed",
      +    "basis"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / _meta / properties / latency_ms
      Added value: +{
      +  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / pit_safe / description
      Added value: +"true iff a zero-look-ahead point-in-time cut was applied to every returned figure"
  6. Changed3 schema fields changed
    • addedOutput schema / properties / coverage / properties / component_basis_filers_matched
      Added value: +{
      +  "description": "Count of top-5 filers that had an observable prior-quarter book.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / coverage / properties / coverage_confidence
      Added value: +{
      +  "description": "Fraction of the top-5 basis with an OBSERVABLE prior-quarter book (matched filers / 5). 0 → institutional_component is forced to 0 (no honest QoQ basis), so a 13F ingestion gap can never masquerade as a saturated buy signal.",
      +  "maximum": 1,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedOutput schema / properties / coverage / required
      Previous value: -[
      -  "institutional_holders_covered",
      -  "institutional_topn_cap",
      -  "institutional_is_partial",
      -  "institutional_component_basis",
      -  "data_age_days",
      -  "staleness_warning",
      -  "note"
      -]New value: +[
      +  "institutional_holders_covered",
      +  "institutional_topn_cap",
      +  "institutional_is_partial",
      +  "institutional_component_basis",
      +  "coverage_confidence",
      +  "component_basis_filers_matched",
      +  "data_age_days",
      +  "staleness_warning",
      +  "note"
      +]
  7. Changed12 schema fields changed
    • addedInput schema / properties / as_of_date
      Added value: +{
      +  "description": "Point-in-time cutoff (YYYY-MM-DD) applied to all three legs (institutional, insider, blockholder) via SEC accepted_at — filings accepted after this date are excluded so the composite is computed with zero look-ahead. Omit for the latest knowable signal.",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / as_of_date
      Added value: +{
      +  "description": "The point-in-time cutoff actually applied (echo of the as_of_date input). Null when no PIT cut was requested — never the reporting period_end fabricated as a cutoff.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / components / properties / institutional / properties / component_basis_current_shares
      Added value: +{
      +  "description": "Current shares of the top-5 filers — the basis used for the component.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / components / properties / institutional / properties / component_basis_prior_shares
      Added value: +{
      +  "description": "Prior-quarter shares of the SAME top-5 filers (matched basis).",
      +  "type": "number"
      +}
    • addedOutput schema / properties / components / properties / institutional / properties / covered_book_shares
      Added value: +{
      +  "description": "Sum of shares across all covered (top-N) 13F holders — informative.",
      +  "type": "number"
      +}
    • removedOutput schema / properties / components / properties / institutional / properties / current_total_shares
      Removed value: -{
      -  "type": "number"
      -}
    • addedOutput schema / properties / components / properties / institutional / properties / net_change_shares / description
      Added value: +"Top-5 matched-basis QoQ share change."
    • removedOutput schema / properties / components / properties / institutional / properties / prior_total_shares
      Removed value: -{
      -  "type": "number"
      -}
    • changedOutput schema / properties / components / properties / institutional / required
      Previous value: -[
      -  "current_total_shares",
      -  "prior_total_shares",
      -  "net_change_shares"
      -]New value: +[
      +  "covered_book_shares",
      +  "component_basis_current_shares",
      +  "component_basis_prior_shares",
      +  "net_change_shares"
      +]
    • addedOutput schema / properties / coverage
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Honesty block: the institutional signal is computed from a top-N 13F slice with a top-5-filer matched basis. Surfaces holder coverage + staleness so the composite is never read as the issuer's complete book.",
      +  "properties": {
      +    "data_age_days": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "institutional_component_basis": {
      +      "type": "string"
      +    },
      +    "institutional_holders_covered": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "institutional_is_partial": {
      +      "description": "True when the top-N cap was hit — the 13F book is only partially covered.",
      +      "type": "boolean"
      +    },
      +    "institutional_topn_cap": {
      +      "type": "integer"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "staleness_warning": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "institutional_holders_covered",
      +    "institutional_topn_cap",
      +    "institutional_is_partial",
      +    "institutional_component_basis",
      +    "data_age_days",
      +    "staleness_warning",
      +    "note"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / period_end / description
      Added value: +"The institutional 13F REPORTING period — NOT a point-in-time cutoff."
    • changedOutput schema / required
      Previous value: -[
      -  "_meta",
      -  "ticker",
      -  "cik",
      -  "company_name",
      -  "period_end",
      -  "composite_score",
      -  "insider_component",
      -  "institutional_component",
      -  "blockholder_component",
      -  "weights",
      -  "components"
      -]New value: +[
      +  "_meta",
      +  "ticker",
      +  "cik",
      +  "company_name",
      +  "period_end",
      +  "as_of_date",
      +  "composite_score",
      +  "insider_component",
      +  "institutional_component",
      +  "blockholder_component",
      +  "weights",
      +  "components",
      +  "coverage"
      +]
  8. Added

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent, so the bar is lower on safety. The description goes far beyond that: it discloses the per-component normalization, configurable weights with defaults, the matched current-vs-prior 13F filer basis, how coverage_confidence forces the institutional leg to zero on ingestion gaps, and the zero-look-ahead semantics via as_of_date. This is exemplary behavioral detail for a composite signal.

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 long but every sentence earns its place: compositing logic, weights, attribution, the matched-filer caveat, coverage_confidence behavior, and unitlessness all matter. It is front-loaded with the primary purpose in the first sentence)Skip? Each sentence adds necessary information for a complex composite toolkl. The only minor issue is that the caveat-heavy middle section could be tightened slightly, but it is far from bloated.

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 complexityablet (six parameters, composite of three data sources, configurable weights, output schema present), the description is remarkably complete. It explains the computation basis, the failure mode when coverage_confidence is 0, the attribution return, and the directional-signal warning. The output schema exists, so the description need not enumerate return fields; it already references the coverage block. Nothing critical is missing for correct invocation.

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. The description adds no parameter-level meaning beyond what the schema already provides; it merely repeats weights and the lookback window. It does add context about the composite's nature and the coverage block, but those are not parameter semantics. The schema's parameter descriptions themselves are already thorough.

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: 'Composite flow score on [-100, +100] aggregating insider transactions, 13F institutional Δ-shares ... and SC 13D/13G blockholder changes.' It clearly distinguishes itself from individual data tools like get_insider_sentiment or get_institutional_holdings by positioning itself as a weighted composite with attribution. The scope ('Institutional tier only') and unitless nature are also made explicit.

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

Usage Guidelines3/5

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

The description includes usage constraints: 'Institutional tier only' and a strong caution to treat the score as a directional signal rather than exact flow. However, it never explicitly names sibling alternatives or states conditions for when to use this composite versus calling get_insider_transactions, get_institutional_holdings, or get_blockholders directly. Context is clear but exclusions and alternatives are left to inference.

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.