Skip to main content
Glama

get_industry_classification

Read-onlyIdempotent

Industry and sector classification of a company (revenue-based sector/industry, NAICS sector, SIC category). Without a company it gives the official US industry code list (NAICS, 2 to 6 digits) with the parent/child tree: industry_code for one code (e.g. '522110', '52' or '31-33') with its parent, path and children; industry_query to search titles (e.g. 'banking'). Code list filters: version (2022 default, or 2017), code (prefix), level (2 sector to 6 most detailed), parent, sector, limit, offset; e.g. filters={"level": 2} lists the 20 sectors. With industry_code and area_stats it gives that industry's businesses, employees and payroll: us_by_year (US totals for every year), or state, metro, county or zip (the areas ranked by employees for the newest year; zip by businesses). Filters then: year (e.g. 2023 or all), state (e.g. CA), sort, limit, offset. With metrics it gives numbers by industry (official US statistics): dataset revenue (market size: revenue and firms for every code, US and states, 2017 and 2022; quarterly revenue of service industries), gdp (value added, share of GDP, real value added, gross output), ppi (producer price index), output (industrial production index), capacity (capacity utilization), retail_sales (monthly sales by store type), wholesale_sales, shipments (monthly manufacturers' shipments, new orders, inventories). metrics "values" + industry_code: every series of that industry over time (filters: metric, frequency, state, from, to, seasonally_adjusted, limit); "series": which series exist (industry_code, industry_query or filters parent, level); "ranking" + dataset: one period across industries, e.g. the fastest rising producer prices or the largest industries by revenue (filters: metric, parent such as '00' for the sectors, level, period, sort change_1y_pct|value, order; with industry_code and {"area_type": "state"} it ranks the states).

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

Input Schema

NameRequiredDescriptionDefault
symbolNoTicker symbol, e.g. AAPL, MSFT or NVDA. Use search_symbols if you only know the company name.
datasetNoFor metrics: revenue, gdp, ppi, output, capacity, retail_sales, wholesale_sales or shipments.
filtersNoOptional extra filters as a JSON object of API parameter names and values, e.g. {"fiscal_year": 2025}. Call list_filters with this tool's name to see every accepted filter.
metricsNoNumbers by industry: values (an industry's series over time, needs industry_code), series (which series exist) or ranking (one period across industries, needs dataset).
area_statsNoWith industry_code: businesses, employees and payroll of the industry: us_by_year, or the areas ranked (state, metro, county, zip).
company_nameNoExact company name as listed, e.g. 'Apple Inc.'. Use search_symbols to find it.
industry_codeNoIndustry code for the code list, e.g. '522110' (commercial banking), '52' or '31-33'; gives its parent, path and children. Leave symbol empty.
industry_queryNoWords to find in industry titles, e.g. 'banking' or 'software'. Leave symbol empty.

Output Schema

NameRequiredDescriptionDefault
dataNoThe records: a list of objects (or one object) with the requested data.
noteNoPresent when the answer was shortened, with how to get the rest.
rowsNoNumber of records the API returned (before any shortening).
errorNoPresent when the call failed, with the reason.
detailNoExtra error detail from the API, e.g. which filter is required.
pagingNoFor paged answers: offset, rows_shown, total and next_offset (call again with offset=next_offset for more rows).
endpointNoDataPorium API endpoint that answered, e.g. /company-info.
filters_sentNoFilters sent to the API for this answer.
allowed_filtersNoOn an unknown-filter error: the filters this endpoint accepts.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / paging
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "For paged answers: offset, rows_shown, total and next_offset (call again with offset=next_offset for more rows).",
      +  "title": "Paging"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / area_stats / description
      Added value: +"With industry_code: businesses, employees and payroll of the industry: us_by_year, or the areas ranked (state, metro, county, zip)."
    • addedInput schema / properties / dataset
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "For metrics: revenue, gdp, ppi, output, capacity, retail_sales, wholesale_sales or shipments.",
      +  "title": "Dataset"
      +}
    • addedInput schema / properties / metrics
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "values",
      +        "series",
      +        "ranking"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Numbers by industry: values (an industry's series over time, needs industry_code), series (which series exist) or ranking (one period across industries, needs dataset).",
      +  "title": "Metrics"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / area_stats
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "us_by_year",
      +        "state",
      +        "metro",
      +        "county",
      +        "zip"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Area Stats"
      +}
  4. Changed2 schema fields changed
    • addedInput schema / properties / industry_code
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Industry code for the code list, e.g. '522110' (commercial banking), '52' or '31-33'; gives its parent, path and children. Leave symbol empty.",
      +  "title": "Industry Code"
      +}
    • addedInput schema / properties / industry_query
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Words to find in industry titles, e.g. 'banking' or 'software'. Leave symbol empty.",
      +  "title": "Industry Query"
      +}
  5. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered; the description still adds useful behavior — NAICS version defaulting to 2022 (or 2017), defaults like 'newest year' for area rankings, and the distinction that zip rankings are by businesses while others are by employees. No auth, rate-limit or pagination behavior beyond limit/offset is disclosed.

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

Conciseness3/5

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

Dense but largely justified for a genuinely multi-mode tool; the primary purpose is front-loaded. The problem is structure: a single semicolon-chained paragraph mixing four distinct modes makes it hard to parse, and mode headings or line breaks would have cost nothing. Length is defensible, formatting is not.

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?

With an output schema present, return values need not be described, and with 8 zero-required params the description must carry the routing burden — which it largely does, covering every mode and its trigger parameters. Minor gaps: no overview of how the modes conflict if several optional params are supplied together, and no pointer to list_filters for the full filter surface in the description text.

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 goes well beyond it: it enumerates the undocumented `filters` keys per mode (version, code, level, parent, sector, limit, offset; year, state, sort; metric, frequency, from, to, seasonally_adjusted), gives worked examples (filters={"level": 2}, parent '00', change_1y_pct|value) and concrete code formats ('522110', '31-33'). This is exactly what the opaque `filters` object needs.

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

Purpose4/5

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

Opens with a specific verb+resource ('Industry and sector classification of a company') and names the classification schemes (revenue-based sector/industry, NAICS, SIC), which no sibling covers. However, the first line undersells the real scope — the tool is also a NAICS code tree browser, an area-statistics lookup and an economic-metrics API — so an agent skimming only the opening sentence would misjudge it. Sibling differentiation is implicit rather than stated.

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?

Gives real conditional routing: no company → official NAICS code list; with industry_code + area_stats → area employment figures; with metrics → statistical series, with sub-modes values/series/ranking each explained. It does not, however, name alternative tools (e.g. get_sector_industry_performance) for overlapping needs, and the 'use search_symbols if you only know the name' hint lives only in the schema, not here.

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