Skip to main content
Glama

List universe companies

list_universe_companies
Read-onlyIdempotent

Search, filter, and paginate companies in the cross-customer Rivalize universe by keyword, category, or populated intelligence layer, excluding your tracked competitors.

Instructions

List companies from the Rivalize universe — the cross-customer competitive-intelligence dataset (not your own tracked competitors; for those use list_competitors).

Search by keyword, filter by category or by which intelligence layer is populated, and paginate.

Args:

  • q (string, optional): search name/domain/description

  • category (string, optional): category SLUG, e.g. "ai-infra" (names like "AI infrastructure" do not match; each row's categories lists its slugs)

  • layer (string, optional): require a populated layer — one of identity, pricing, features, ads, social, reviews, funding_hiring, rankings

  • limit (number, optional): page size 1-100 (default 50)

  • offset (number, optional): pagination offset (default 0)

Returns compact JSON: { data: Company[], pagination: { total, limit, offset, returned, next_offset }, filters }. Each Company: domain, name, primaryCategory, categories (slugs), priorityScore, lastEnrichedAt, layers (which layers are populated), layersUpdated, description (at most 120 characters). If a page does not fit one response, fewer rows come back with _truncated, and pagination.limit/returned say how many; always continue with offset = pagination.next_offset (null when there are no more). Use get_universe_company for one company's full profile.

Use when: "who are the players in ?" or "show me universe companies matching ".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoSearch name/domain/description
layerNoRequire this intelligence layer to be populated
limitNoPage size (1-100)
offsetNoPagination offset
categoryNoCategory slug or name

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.2

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so safety is covered; the description goes further by disclosing truncation behaviour ('_truncated', reduced 'returned'), the pagination continuation rule (always advance with pagination.next_offset, null means done), unnamed defaults for limit/offset that the schema omits, and the slug-vs-name matching pitfall. It stops short of error/auth behaviour, but for a read-only list endpoint this is well above the annotation baseline.

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?

Purpose and sibling routing are front-loaded, then args, then return shape, then usage triggers — a clean, scannable structure. It is somewhat long and the Args block duplicates most of the schema's own parameter descriptions, though each entry carries a small increment (defaults, slug caveat) that justifies keeping it.

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, and the description fully covers the return contract: the compact JSON envelope, pagination fields, the per-Company field list including the 120-character description cap, and the truncation continuation rule. Combined with the sibling routing, an agent has everything needed to call and paginate this tool correctly.

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, and the description genuinely adds meaning on top: it warns that category values are slugs and that display names such as 'AI infrastructure' do not match, and it supplies the defaults (limit 50, offset 0) that the schema does not encode. It largely restates the q/layer parameter prose, but the slug caveat and defaults are real added value.

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 (list companies from the Rivalize universe) and immediately disambiguates it from the sibling that could be confused with it: 'not your own tracked competitors; for those use list_competitors.' An agent can pick between list_universe_companies, list_competitors, and get_universe_company without opening a schema.

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?

The description names both the exclusion condition ('not your own tracked competitors') and the replacement tool (list_competitors), plus explicit trigger phrasing ('who are the players in <category>?' / 'show me universe companies matching <keyword>') and a hand-off to get_universe_company for single-entity lookups. Nothing about when to reach for this tool is left to inference.

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