Skip to main content
Glama

Get a tracked competitor's collected data (Agent plan)

get_agent_competitor
Read-onlyIdempotent

Retrieve raw, source-backed competitor data by data group—website pages, pricing, App Store reviews, social, ads, SEO, and more—to inspect what Rivalize collected before doing your own analysis.

Instructions

Read the raw data Rivalize collected about one competitor in your Agent plan, by data group (core: website pages, pricing page, App Store reviews, social profiles; ads_seo: paid ads, search and traffic; extended: everything else collected). Each module carries its source, status and collected_at. There is NO analysis in it: the reasoning is yours. Reading is free and calls no vendor.

Args:

  • competitor_id (string, required): the competitor id from list_agent_competitors (its domain)

  • group (string, optional): core | ads_seo | extended; only that group

Returns JSON: { data: { id, name, url, slot, level, collection_status, collected_at, next_refresh_at, groups: { : { modules: { : { status, source, collected_at, data, error } } } }, not_in_plan: { : { code, message } } } }. A group your plan level does not include is absent from groups and named in not_in_plan with code agent_module_not_in_plan. collection_status "pending" means the first collection has not finished yet.

Use when: "what does charge?", "what ads is running?", "read everything you have on ".

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "competitor_id": "<competitor_id>"
    },
    "name": "get_agent_competitor"
  }
}

Input Schema

NameRequiredDescriptionDefault
groupNoReturn only this data group (core, ads_seo, extended). Default: every group your plan includes.
competitor_idYesCompetitor id from list_agent_competitors (its domain, e.g. "linear.app")

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.5.1

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/idempotentHint true and destructiveHint false, and the description adds genuinely new behavioral facts: reads are free and call no vendor, plan-level gating surfaces as not_in_plan with code agent_module_not_in_plan, and collection_status "pending" means the first collection has not finished. It also specifies the per-module status/source/collected_at metadata, which annotations cannot convey.

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 purpose statement is front-loaded and each block (groups, returns, status quirks, use-when) is scannable and earns its place. The inline return-shape JSON is verbose, though justified by the absence of an output schema, and the use-when triggers sit at the very end rather than earlier.

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 no output schema, the description carries the full return contract — top-level fields, nested groups/modules shape with status/source/collected_at/data/error, and the not_in_plan fallback — plus the pending-collection caveat. Nothing an agent needs to call this correctly or interpret the response is missing.

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 would be 3, but the description adds real meaning beyond the enum by spelling out what each group contains (core = website pages, pricing page, App Store reviews, social profiles; ads_seo = paid ads, search and traffic; extended = everything else). It also clarifies that competitor_id is the domain-form id obtained from list_agent_competitors.

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: reads the raw data Rivalize collected about one competitor, scoped to the Agent plan, and enumerates the data groups returned. It also explicitly draws the boundary against analysis-producing siblings ("There is NO analysis in it: the reasoning is yours"), so an agent can tell it apart from teardown_competitor or get_competitor_intelligence.

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?

The "Use when" block gives three concrete trigger phrasings (pricing, ads, read everything), and competitor_id is routed to its source tool, list_agent_competitors. It stops short of naming an alternative to use instead when the agent actually wants analysis, leaving that exclusion implicit.

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