Skip to main content
Glama

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

Company search

search_companies
Read-onlyIdempotent

Returns companies matching a name, ticker, CIK or SIC code, with CIK, ticker, name, sector, industry, exchange, listing status and current S&P 500 membership. Use this when the user names a company and other tools need its ticker or CIK, or asks for current S&P 500 members. It covers current and former S&P 500 companies; membership on a past date comes from get_pit_universe.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cikNoSEC CIK to match exactly, digits only, leading zeros optional, e.g. 0000320193.
limitNoMaximum number of results, 1 to 50; defaults to 25, e.g. 10.
queryNoText matched against company names and tickers, case-insensitive; an all-digit value matches a CIK exactly, e.g. Apple.
is_sp500Notrue to return current S&P 500 members only, e.g. true.
sic_codeNoFour-digit SIC industry code to match exactly, e.g. 7372.
is_activeNotrue for current listings only, false for delisted or superseded listings only; omit for both, e.g. true.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
_metaYesProvenance envelope — data lineage for every MCP response
queryYes
companiesYes
coverage_noteNoPresent only when no company matched: what this connector covers.
results_returnedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / properties / include_inactive
      Removed value: -{
      -  "default": true,
      -  "description": "Whether delisted or superseded listings may appear; defaults to true and is ignored when is_active is set, e.g. false.",
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / coverage_note
      Added value: +{
      +  "description": "Present only when no company matched: what this connector covers.",
      +  "type": "string"
      +}
  2. Changed24 schema fields changed
    • changedInput schema / properties / cik / description
      Previous value: -"SEC CIK identifier (exact match). E.g. '0000320193' for Apple."New value: +"SEC CIK to match exactly, digits only, leading zeros optional, e.g. 0000320193."
    • changedInput schema / properties / include_inactive / description
      Previous value: -"Whether delisted / superseded listings may appear in results. Defaults to true — this is a survivorship-free product, so a search must not silently hide dead companies by default. Set to false to restrict to currently-active listings only (equivalent to `is_active: true`, but as a search-scope toggle rather than a hard filter). If `is_active` is also supplied, `is_active` wins."New value: +"Whether delisted or superseded listings may appear; defaults to true and is ignored when is_active is set, e.g. false."
    • changedInput schema / properties / is_active / description
      Previous value: -"Filter on whether the LISTING is current. true = currently trading; false = superseded listings only (delisted, or a ticker that moved to a new registrant). Omit to return both."New value: +"true for current listings only, false for delisted or superseded listings only; omit for both, e.g. true."
    • changedInput schema / properties / is_sp500 / description
      Previous value: -"Filter to current S&P 500 members only."New value: +"true to return current S&P 500 members only, e.g. true."
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of results to return (1–50). Defaults to 25."New value: +"Maximum number of results, 1 to 50; defaults to 25, e.g. 10."
    • changedInput schema / properties / query / description
      Previous value: -"Free-text search over company name and ticker. Case-insensitive. E.g. 'Apple', 'AAPL', 'Microsoft', 'semiconductor'."New value: +"Text matched against company names and tickers, case-insensitive; an all-digit value matches a CIK exactly, e.g. Apple."
    • changedInput schema / properties / sic_code / description
      Previous value: -"4-digit SIC industry code. E.g. '7372' for Prepackaged Software."New value: +"Four-digit SIC industry code to match exactly, e.g. 7372."
    • removedOutput schema / properties / _meta / properties / cost_usd
      Removed 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"
      -}
    • removedOutput schema / properties / _meta / properties / data_plan
      Removed value: -{
      -  "description": "Access plan: sample | sp500 | pro | full",
      -  "type": "string"
      -}
    • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
      Previous 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."New value: +"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."
    • removedOutput schema / properties / _meta / properties / last_updated
      Removed value: -{
      -  "description": "ISO timestamp when the snapshot was exported",
      -  "type": "string"
      -}
    • removedOutput schema / properties / _meta / properties / latency_ms
      Removed value: -{
      -  "description": "Wall-clock milliseconds this tool call took, measured server-side around the handler.",
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • removedOutput schema / properties / _meta / properties / limit_warnings
      Removed value: -{
      -  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
      -  "items": {
      -    "additionalProperties": true,
      -    "properties": {
      -      "code": {
      -        "const": "LIMIT_EXCEEDED",
      -        "type": "string"
      -      },
      -      "current_plan": {
      -        "type": "string"
      -      },
      -      "extensions": {
      -        "additionalProperties": {},
      -        "type": "object"
      -      },
      -      "limit_type": {
      -        "type": "string"
      -      },
      -      "limit_value": {},
      -      "remediation": {
      -        "additionalProperties": true,
      -        "properties": {
      -          "contact_sales": {
      -            "type": "string"
      -          },
      -          "default_action": {
      -            "type": "string"
      -          },
      -          "options": {
      -            "items": {
      -              "additionalProperties": {},
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "pricing_page": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "options",
      -          "default_action",
      -          "pricing_page",
      -          "contact_sales"
      -        ],
      -        "type": "object"
      -      },
      -      "requested_value": {},
      -      "returned_value": {},
      -      "subcode": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "code",
      -      "subcode",
      -      "limit_type",
      -      "current_plan",
      -      "remediation"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / _meta / properties / payg_override
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
      -  "properties": {
      -    "amount_cents": {
      -      "type": "number"
      -    },
      -    "entity_scope_hash": {
      -      "type": "string"
      -    },
      -    "meter": {
      -      "type": "string"
      -    },
      -    "quote_id": {
      -      "type": "string"
      -    },
      -    "retry_token_hash": {
      -      "type": "string"
      -    },
      -    "ticker_count": {
      -      "type": "number"
      -    },
      -    "tool": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "quote_id",
      -    "tool",
      -    "meter",
      -    "amount_cents",
      -    "ticker_count",
      -    "entity_scope_hash",
      -    "retry_token_hash"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / _meta / properties / rate_limit
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Caller's remaining budget",
      -  "properties": {
      -    "limit": {
      -      "type": "integer"
      -    },
      -    "remaining": {
      -      "type": "integer"
      -    },
      -    "reset_at": {
      -      "description": "ISO 8601 timestamp when the window resets",
      -      "type": "string"
      -    },
      -    "window": {
      -      "enum": [
      -        "minute",
      -        "hour"
      -      ],
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "limit",
      -    "remaining",
      -    "reset_at",
      -    "window"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / _meta / properties / request_id
      Removed value: -{
      -  "description": "Per-request correlation id (8-char)",
      -  "type": "string"
      -}
    • removedOutput schema / properties / _meta / properties / schema_version
      Removed value: -{
      -  "description": "Parquet schema version from manifest.json",
      -  "type": "string"
      -}
    • removedOutput schema / properties / _meta / properties / snapshot
      Removed value: -{
      -  "description": "Snapshot directory name (e.g. snapshot_20260420)",
      -  "type": "string"
      -}
    • removedOutput schema / properties / _meta / properties / truncation / properties / current_plan
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_required_for
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _meta / properties / truncation / properties / upgrade_url
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / _meta / required
      Previous value: -[
      -  "data_plan",
      -  "schema_version",
      -  "snapshot",
      -  "last_updated",
      -  "source",
      -  "pit_safe"
      -]New value: +[
      +  "source",
      +  "pit_safe"
      +]
    • changedOutput schema / properties / companies / items / properties / status / description
      Previous value: -"Entity-level flag from entity.status. Kept for back-compat and NOT a reliable liveness signal — it is wrong in both directions on real data (American Electric Power, a current S&P 500 member, reads 'INACTIVE'). Read `is_active` instead."New value: +"Entity-level flag from entity.status. Read `is_active` instead."
    • changedOutput schema / properties / companies / items / properties / valid_from / description
      Previous value: -"Date this listing became current, or null when unknown. Paired with valid_to/cik/is_active so an agent can disambiguate a RECYCLED ticker — two rows for one symbol, each covering a different window — without a second call."New value: +"Date this listing became current, or null when unknown."
  3. 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."
  4. Changed4 schema fields changed
    • addedInput schema / properties / include_inactive
      Added value: +{
      +  "default": true,
      +  "description": "Whether delisted / superseded listings may appear in results. Defaults to true — this is a survivorship-free product, so a search must not silently hide dead companies by default. Set to false to restrict to currently-active listings only (equivalent to `is_active: true`, but as a search-scope toggle rather than a hard filter). If `is_active` is also supplied, `is_active` wins.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / companies / items / properties / valid_from
      Added value: +{
      +  "description": "Date this listing became current, or null when unknown. Paired with valid_to/cik/is_active so an agent can disambiguate a RECYCLED ticker — two rows for one symbol, each covering a different window — without a second call.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / companies / items / properties / valid_to
      Added value: +{
      +  "description": "Same value as `listed_until`, under the CIK-first-resolution naming convention. Both are returned for back-compat.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / companies / items / required
      Previous value: -[
      -  "cik",
      -  "ticker",
      -  "name",
      -  "sector",
      -  "industry",
      -  "sic_code",
      -  "exchange",
      -  "status",
      -  "is_active",
      -  "listed_until",
      -  "is_sp500"
      -]New value: +[
      +  "cik",
      +  "ticker",
      +  "name",
      +  "sector",
      +  "industry",
      +  "sic_code",
      +  "exchange",
      +  "status",
      +  "is_active",
      +  "listed_until",
      +  "valid_from",
      +  "valid_to",
      +  "is_sp500"
      +]
  5. Changed5 schema fields changed
    • changedInput schema / properties / is_active / description
      Previous value: -"Filter to active (currently trading) companies only."New value: +"Filter on whether the LISTING is current. true = currently trading; false = superseded listings only (delisted, or a ticker that moved to a new registrant). Omit to return both."
    • addedOutput schema / properties / companies / items / properties / is_active
      Added value: +{
      +  "description": "Whether THIS listing is the current one for its ticker. When a company reincorporates or forms a holdco, SEC issues a new CIK and moves the ticker to it, so one symbol can return two rows — the superseded listing (false, with `listed_until` set) and the current one (true).",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / companies / items / properties / listed_until
      Added value: +{
      +  "description": "Date this listing stopped being current, or null while it still is. Non-null means the ticker moved to another registrant or the security was delisted.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / companies / items / properties / status / description
      Added value: +"Entity-level flag from entity.status. Kept for back-compat and NOT a reliable liveness signal — it is wrong in both directions on real data (American Electric Power, a current S&P 500 member, reads 'INACTIVE'). Read `is_active` instead."
    • changedOutput schema / properties / companies / items / required
      Previous value: -[
      -  "cik",
      -  "ticker",
      -  "name",
      -  "sector",
      -  "industry",
      -  "sic_code",
      -  "exchange",
      -  "status",
      -  "is_sp500"
      -]New value: +[
      +  "cik",
      +  "ticker",
      +  "name",
      +  "sector",
      +  "industry",
      +  "sic_code",
      +  "exchange",
      +  "status",
      +  "is_active",
      +  "listed_until",
      +  "is_sp500"
      +]
  6. 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"
      +}
  7. Changed3 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"
      +}
    • addedOutput schema / properties / companies / items / properties / match_confidence
      Added value: +{
      +  "description": "How confidently this result matches your query text: exact = exact ticker/name match, high = name starts with query, medium = word-boundary or ticker-prefix match, low = bare substring match. Omitted for filter-only calls with no text query.",
      +  "enum": [
      +    "exact",
      +    "high",
      +    "medium",
      +    "low"
      +  ],
      +  "type": "string"
      +}
  8. 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"
  9. Changed3 schema fields changed
    • addedOutput schema / properties / _meta / properties / payg_override / properties / entity_scope_hash
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _meta / properties / payg_override / properties / ticker_count
      Added value: +{
      +  "type": "number"
      +}
    • changedOutput schema / properties / _meta / properties / payg_override / required
      Previous value: -[
      -  "quote_id",
      -  "tool",
      -  "meter",
      -  "amount_cents",
      -  "retry_token_hash"
      -]New value: +[
      +  "quote_id",
      +  "tool",
      +  "meter",
      +  "amount_cents",
      +  "ticker_count",
      +  "entity_scope_hash",
      +  "retry_token_hash"
      +]
  10. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / payg_override
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Set when this single response was paid for via the agent-pay PAYG flow — the rate-limit / depth-limit checks were bypassed for this call only.",
      +  "properties": {
      +    "amount_cents": {
      +      "type": "number"
      +    },
      +    "meter": {
      +      "type": "string"
      +    },
      +    "quote_id": {
      +      "type": "string"
      +    },
      +    "retry_token_hash": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "quote_id",
      +    "tool",
      +    "meter",
      +    "amount_cents",
      +    "retry_token_hash"
      +  ],
      +  "type": "object"
      +}
  11. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / limit_warnings
      Added value: +{
      +  "description": "Soft-warning array for partial fulfillment. Each entry carries a stable subcode + remediation.options[]. AI agents pattern-match on subcode.",
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "code": {
      +        "const": "LIMIT_EXCEEDED",
      +        "type": "string"
      +      },
      +      "current_plan": {
      +        "type": "string"
      +      },
      +      "extensions": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "limit_type": {
      +        "type": "string"
      +      },
      +      "limit_value": {},
      +      "remediation": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "contact_sales": {
      +            "type": "string"
      +          },
      +          "default_action": {
      +            "type": "string"
      +          },
      +          "options": {
      +            "items": {
      +              "additionalProperties": {},
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "pricing_page": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "options",
      +          "default_action",
      +          "pricing_page",
      +          "contact_sales"
      +        ],
      +        "type": "object"
      +      },
      +      "requested_value": {},
      +      "returned_value": {},
      +      "subcode": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "subcode",
      +      "limit_type",
      +      "current_plan",
      +      "remediation"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  12. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / truncation
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Set when fewer rows were returned than requested — explains why and points to a remedy",
      +  "properties": {
      +    "current_plan": {
      +      "type": "string"
      +    },
      +    "plan_limit": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "reason": {
      +      "enum": [
      +        "PLAN_LIMIT",
      +        "DATA_NOT_AVAILABLE",
      +        "FISCAL_YEAR_BOUNDARY_FILTER",
      +        "OTHER"
      +      ],
      +      "type": "string"
      +    },
      +    "requested": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "returned": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "upgrade_required_for": {
      +      "type": "string"
      +    },
      +    "upgrade_url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "requested",
      +    "returned",
      +    "reason"
      +  ],
      +  "type": "object"
      +}
  13. Changed3 schema fields changed
    • addedOutput schema / properties / _meta / properties / data_quality
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Server-side invariants run on this response",
      +  "properties": {
      +    "notes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "validation_failed": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "detail": {
      +            "type": "string"
      +          },
      +          "rule": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "rule",
      +          "detail"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "validation_passed": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "validation_passed",
      +    "validation_failed",
      +    "notes"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / _meta / properties / rate_limit
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Caller's remaining budget",
      +  "properties": {
      +    "limit": {
      +      "type": "integer"
      +    },
      +    "remaining": {
      +      "type": "integer"
      +    },
      +    "reset_at": {
      +      "description": "ISO 8601 timestamp when the window resets",
      +      "type": "string"
      +    },
      +    "window": {
      +      "enum": [
      +        "minute",
      +        "hour"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "limit",
      +    "remaining",
      +    "reset_at",
      +    "window"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / _meta / properties / request_id
      Added value: +{
      +  "description": "Per-request correlation id (8-char)",
      +  "type": "string"
      +}
  14. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real behavioral context beyond that: it discloses the temporal scope (current and former S&P 500 members) and explicitly routes point-in-time membership elsewhere. It does not discuss result ordering or pagination, but the limit parameter and output schema mitigate that.

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?

Two sentences, front-loaded with what is returned, followed by the routing rule. No wasted clauses; every sentence carries selection-relevant information.

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 an output schema present, annotations covering the safety profile, and 100% schema description coverage, the description only needs to add scope and routing — which it does cleanly, including the S&P 500 caveat. Nothing needed to invoke 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?

Schema coverage is 100% with per-parameter descriptions including examples, so the schema does the heavy lifting. The description only groups the identifier types (name, ticker, CIK, SIC) and adds nothing about format, precedence, or empty-query behavior — the baseline 3 applies.

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 (returns) and resource (companies) plus the exact matching keys (name, ticker, CIK, SIC) and the fields returned (CIK, ticker, sector, exchange, S&P 500 membership). The scope statement about current vs. former S&P 500 companies clearly separates it from get_pit_universe.

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 names the triggering situation ('when the user names a company and other tools need its ticker or CIK') and the alternative for the adjacent case ('membership on a past date comes from get_pit_universe'). Both when-to-use and when-to-use-something-else are covered.

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.