Skip to main content
Glama

Research a company

research_company
DestructiveIdempotent

Source-backed research on one company, for goal-style asks: angles, what's changed, how to approach it, why now. Recent news and identity searches (deep adds the homepage and up to three same-origin pages) are rewritten into typed claims (what it sells, customers, funding, hiring, leadership, partnerships, expansion) that each cite a source URL and a verbatim excerpt; why_now lists the recent dated ones. Optional audience (3–2,000 characters) ranks claims for your goal when goal checks are available; otherwise extraction order and the date rule apply. ranking.by discloses goal or recency, ranking.judged counts claims judged, and ranking.why_now_judged counts the judged reasons at the front of why_now; the rest are dated only. Judged no reasons leave why_now but remain in claims. The goal changes neither the price nor the workspace research cache. Returns an operation_id to poll with get_operation using the same data:read scope (a fresh cache hit arrives already completed with its result). Reserves the planner's maximum (standard: the research price; deep adds per-page reads) and settles the components actually used. An ambiguous provider outcome keeps that reservation held for operator reconciliation. budget_credits trims deep page reads to fit and refuses below the standard minimum. dry_run: true returns the plan as of evaluated_at with nothing reserved. idempotency_key is required; reuse it only to retry creation of the same research.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
depthNostandard
dry_runNo
audienceNoOptional goal for ranking facts. Always accepted; when checks are off or unavailable, extraction order and the date rule apply, disclosed by ranking. Charges are unchanged.
budget_creditsNo
company_domainYesCompany website domain or URL, e.g. acme.com or https://www.acme.com/about
idempotency_keyYesA payment_required refusal means services are stopped for unpaid billing; direct the owner to the billing link in the error. Campaigns stay paused after payment until restarted. Optional for search and enrichment tools: supply one so a retry returns the original result without paying again; if that call failed with provider_unavailable, rate_limited or insufficient_credits (after a top-up), a retry runs it once more after its cooldown (30 s, or a longer retry_after_seconds; insufficient_credits as soon as the balance covers it), unless its provider may already have done the work. Required for tools that create an external side effect; reuse the same value after a timeout or an approval. A stored failure comes back with details.replayed: true; with retry_after_seconds, retry the same value after that.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional for search and enrichment tools: supply one so a retry returns the original result without paying again; if that call failed with provider_unavailable, rate_limited or insufficient_credits (after a top-up), a retry runs it once more after its cooldown (30 s, or a longer retry_after_seconds; insufficient_credits as soon as the balance covers it), unless its provider may already have done the work. Required for tools that create an external side effect; reuse the same value after a timeout or an approval. A stored failure comes back with details.replayed: true; with retry_after_seconds, retry the same value after that."New value: +"A payment_required refusal means services are stopped for unpaid billing; direct the owner to the billing link in the error. Campaigns stay paused after payment until restarted. Optional for search and enrichment tools: supply one so a retry returns the original result without paying again; if that call failed with provider_unavailable, rate_limited or insufficient_credits (after a top-up), a retry runs it once more after its cooldown (30 s, or a longer retry_after_seconds; insufficient_credits as soon as the balance covers it), unless its provider may already have done the work. Required for tools that create an external side effect; reuse the same value after a timeout or an approval. A stored failure comes back with details.replayed: true; with retry_after_seconds, retry the same value after that."
  2. Changed1 schema field changed
    • addedInput schema / properties / audience
      Added value: +{
      +  "description": "Optional goal for ranking facts. Always accepted; when checks are off or unavailable, extraction order and the date rule apply, disclosed by ranking. Charges are unchanged.",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional for search and enrichment tools: supply one to make a retry replay the original result. Required for tools that create an external side effect; reuse the same value after a timeout or an approval."New value: +"Optional for search and enrichment tools: supply one so a retry returns the original result without paying again; if that call failed with provider_unavailable, rate_limited or insufficient_credits (after a top-up), a retry runs it once more after its cooldown (30 s, or a longer retry_after_seconds; insufficient_credits as soon as the balance covers it), unless its provider may already have done the work. Required for tools that create an external side effect; reuse the same value after a timeout or an approval. A stored failure comes back with details.replayed: true; with retry_after_seconds, retry the same value after that."
  4. Added

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: reservation/settlement mechanics, cache behavior ('a fresh cache hit arrives already completed'), the data:read scope needed for polling with get_operation, the held reservation on ambiguous provider outcomes, and idempotency retry semantics. The annotations (destructive/readOnly/openWorld) are consistent with the spend-and-external-call model described.

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?

Front-loaded with the core purpose, but the middle is dense internal jargon ('ranking.judged counts claims judged', 'ranking.why_now_judged counts the judged reasons at the front of why_now') that is hard to parse and partially duplicates the audience parameter's schema description.

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 no output schema, the description carries the burden of describing returns and does so: typed claims with source URL and verbatim excerpt, why_now, ranking fields, and an operation_id to poll. The claim object's structure is only sketched, but an agent has enough to call and interpret the result.

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 only 50%, and the description compensates: it defines what deep adds, the 3–2,000 character audience constraint (absent from the schema), how budget_credits trims and refuses below the standard minimum, and what dry_run returns. It adds less for company_domain, which the schema already documents well.

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?

States a specific verb+resource ('Source-backed research on one company') and specifies the flavor of ask it serves (goal-style: angles, what's changed, how to approach, why now). It never names or contrasts with the close siblings (enrich_company, check_companies, find_companies), so an agent must still infer which company tool to pick.

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 clear context for use ('for goal-style asks', recent news + identity searches, deep for homepage/same-origin pages) and describes the dry_run and budget_credits paths. It stops short of explicit exclusions or naming the alternative tools to use when the ask is not goal-style.

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