Analook — Competitor Intelligence
Server Details
Competitor intelligence for AI agents — SEO, traffic, social, Product Hunt, pricing, AI insights.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 5 of 5 tools scored.
Each tool has a clear, distinct purpose: analyze_competitor starts a job, get_report_status polls, get_report and get_report_markdown retrieve results in different formats, and list_my_reports lists history. No overlap.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., analyze_competitor, get_report, list_my_reports), making them predictable and easy to distinguish.
Five tools perfectly cover the core workflow of submitting, polling, retrieving, and listing analyses without unnecessary redundancy. Well-scoped for the domain.
The tool surface covers the main lifecycle: submit, poll, retrieve (JSON and Markdown), and list history. A potential minor gap is the lack of a cancel or delete tool, but these are not essential for the primary use case.
Available Tools
5 toolsanalyze_competitorAInspect
Submit a competitor analysis job.
Analyzes a competitor's website across 15+ data sources (SEO, traffic,
social, Product Hunt, GitHub, Wayback Machine history, AI-generated
insights, etc.) and returns a job_id. Use get_report_status(job_id) to
poll and get_report(job_id) to retrieve results when status='completed'.
Typical analysis takes 2-5 minutes. Requires authentication (deducts 1
credit from your Analook balance).
Args:
url: Competitor website URL (e.g. 'https://linear.app' or 'lovable.dev')
product_name: Optional product name override (defaults to domain)
Returns:
{job_id: str, status: 'started', poll_url: str} on success
{error: str, hint?: str} on auth/validation failure| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| product_name | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: async job submission, return format (success/error), polling workflow, and credit consumption. No hidden traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured with clear sections, examples, and no filler. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a tool with 2 parameters and async result; covers return format, expected time, authentication, and integration with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (0% coverage), but description explains the 'url' parameter with examples and 'product_name' as optional with default behavior, adding necessary context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool submits a competitor analysis job, analyzing a website across 15+ data sources, and returns a job_id. It distinguishes from siblings like get_report_status and get_report by specifying the async workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions when to use (for competitor analysis), typical duration (2-5 minutes), authentication requirement, credit deduction, and references sibling tools for polling and retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportAInspect
Fetch the full competitor analysis report as structured JSON.
Reports contain: website snapshot, Wayback Machine history, SEO/traffic
data (DataForSEO), social media presence, Product Hunt launches, GitHub
stats, pricing, funding, AI-generated business insights, growth
playbooks, and more.
Args:
job_id: ID from analyze_competitor(); status must be 'completed'
Returns:
The full report dict (nested structure), or {error} if not found / not ready.| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly discloses that the tool returns the full report or an error if not found/not ready. This covers the key behavioral aspects for a read-only retrieval tool, though it could add details on error types.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a one-line summary, a list of report contents, and clearly labeled Args/Returns sections. Every sentence adds value with no redundancy. Well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers purpose, parameter, expected return structure (list of data types), and error condition. It provides sufficient context for an AI agent to use the tool correctly, despite not referencing sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter job_id has 0% schema description coverage. The description adds meaning by specifying it as the ID from analyze_competitor() and requiring 'completed' status. This effectively explains the parameter's purpose and constraints beyond the schema's bare 'Job Id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches the full competitor analysis report as structured JSON, listing a comprehensive set of data fields. It distinguishes from sibling tools like analyze_competitor (initiates analysis) and get_report_markdown (different format), making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the prerequisite: job_id from analyze_competitor() and that status must be 'completed'. This guides when to use the tool. However, it does not explicitly mention alternatives or when not to use it, but the precondition implies that get_report_status should be used first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_markdownAInspect
Fetch the competitor analysis report as human-readable Markdown.
Suitable for piping into agents that prefer text over structured JSON,
or for direct display to end users.
Args:
job_id: ID from analyze_competitor(); status must be 'completed'
Returns:
{markdown: str} or {error: str}| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses return format (markdown string or error) and status prerequisite. However, it does not explicitly state that the operation is read-only, nor cover potential side effects, authentication, or rate limits. For a simple fetch, the basics are covered but additional context would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise: one sentence for purpose, one for recommendation, then structured param and return specs. No fluff, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, no annotations, no output schema), the description covers purpose, usage, parameter prerequisites, and return format. It references sibling tool analyze_competitor for context. Could briefly mention how to obtain job_id or error scenarios, but overall complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning by explaining job_id is 'ID from analyze_competitor()' and that status must be 'completed'. This is valuable context beyond the schema's type string, helping agents select and invoke correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it fetches a competitor analysis report as Markdown, distinguishing it from the get_report sibling (which returns structured JSON). The verb 'fetch' and resource 'competitor analysis report as Markdown' are specific, and the output format is explicitly mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains suitability for end-user display or agents preferring text over JSON, implying when to use over get_report. It also specifies prerequisites: job_id must be from analyze_competitor and status must be 'completed'. Lacks explicit 'when not to use', but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_statusAInspect
Poll an analysis job's status.
Args:
job_id: ID returned from analyze_competitor()
Returns:
{status: 'running'|'completed'|'failed', progress?: str, report_url?: str}| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the return format (status, progress, report_url). It adequately describes the polling behavior, though it does not mention error cases or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and front-loaded, with clear sections for invocation and returns. Every sentence is necessary and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one required parameter, no output schema), the description covers everything needed: parameter source and response shape. It is complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no description for job_id (0% coverage), but the description adds critical context: 'ID returned from analyze_competitor().' This clarifies the parameter's origin and ensures correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Poll an analysis job's status,' with a specific verb and resource. It distinguishes well from sibling tools: analyze_competitor starts jobs, get_report and get_report_markdown retrieve reports, and list_my_reports lists reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies that the job_id comes from analyze_competitor(), giving clear context for when to use. No explicit exclusions or alternatives are stated, but the usage is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_reportsAInspect
List your recent competitor analysis reports (up to 50).
Requires authentication. Returns a lightweight list (id, url,
product_name, created_at, status) — use get_report(job_id) to fetch
the full report for any of them.
Returns:
{reports: [{id, url, product_name, created_at, status}, ...]}| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses authentication, 50-item limit, lightweight nature, and returned fields. Does not mention if operation is read-only or any side effects, but these are implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise paragraphs with front-loaded purpose. Every sentence adds value: purpose, auth requirement, return format, sibling reference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, description fully specifies return structure (fields, limit). References sibling tool for extended functionality, completing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100% vacuously. Baseline for 0 parameters is 4. Description adds no parameter info because none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List your recent competitor analysis reports (up to 50).' Verb 'List' and resource 'competitor analysis reports' are specific. Distinguishes from siblings by noting lightweight list vs. full report via get_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions 'Requires authentication.' Advises when to use (list needs) and directs to get_report for full details, providing clear guidance against using this tool for full report retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!