Skip to main content
Glama
grodgers1-ctrl

linklight

linklight

The MCP server for SEO. Plug linklight into Claude Desktop, Claude Code, Cursor, or any MCP client and let your AI agent find prospects, draft outreach, and monitor backlinks — you approve and send.

Dashboard included. But the agent is the point.

linklight demo

MCP Server on Glama


60-second setup

  1. Sign in at lightlinks.dev with Google.

  2. Go to Settings → API Access → Generate key. Copy it.

  3. Paste this into ~/.claude/settings.json (or your MCP client's config):

    {
      "mcpServers": {
        "linklight": {
          "type": "http",
          "url": "https://lightlinks.dev/api/mcp",
          "headers": { "Authorization": "Bearer sk_ll_PASTE_YOUR_KEY_HERE" }
        }
      }
    }
  4. Restart your MCP client. Ask your agent: "List my linklight campaigns."

Full docs: lightlinks.dev/docs/mcp.

Related MCP server: seo-mcp

What your agent can do

Tool

What it does

search_prospects(keyword)

Find prospect sites for a topic (Tavily-backed, DA-enriched)

find_competitor_backlinks(competitor_domain)

Find pages linking to a competitor in roundups/alternatives lists — pass my_domain to get only NEW opportunities

find_similar_prospects(url)

Given one good prospect, return 20 more like it (Exa.ai neural search)

enrich_domain(domain)

DA + contact email + homepage title/description

find_email(domain)

Look up a contact email (Hunter)

draft_email(topic)

Write a personalised outreach email with a built-in spam score

save_draft(prospect_id, subject, body)

Save a drafted email against a prospect for you to review

find_quick_win_keywords(site_id)

Return striking-distance keywords (pages 2-3 with impressions)

find_prospect_gaps(campaign_id)

Prospects in a campaign missing an email, sorted by DA

list_lost_backlinks(site_id)

Backlinks currently broken, unreachable, or redirected

list_campaigns / list_prospects / list_replies / list_backlinks

Query your data

Sending emails is never exposed as an MCP tool. Every send needs your manual approval in the dashboard.

Example agent prompts

Find the top 20 prospects for "nextjs seo" with DA ≥ 40.
For each, draft a warm personalised email referencing their most recent post,
save each draft against the prospect, and show me the spam scores.
Who links to ahrefs.com in roundups or "best of" articles?
Exclude domains that already link to my site, and give me the top 15 by DA.
List my lost backlinks from the past 30 days, group by domain,
and tell me which ones are worth reaching out to.
For campaign "Q4 outreach", find prospects without emails and run find_email
on the top 10 by domain authority.

Pricing

$19/mo. 7-day free trial, no credit card required.

Under the hood

  • Next.js 16 (Turbopack) on Vercel

  • Supabase (Postgres) with RLS on every table

  • NextAuth + Google OAuth (Gmail + Search Console)

  • Tavily for real-time web search

  • Exa.ai for semantic prospect discovery

  • OpenAI for email drafting

  • Moz + Hunter for enrichment

MCP directories

See docs/mcp/directory-submission.md for ready-to-paste listing details.

License

MIT — see LICENSE.

Available Tools

14 tools
draft_emailA

Generate an outreach email draft. Returns subject, HTML body, plain-text body, and a spam score (0-10, higher = better). Pass prospect_url to fetch the target's page and personalize the draft with a reference to their actual content — this dramatically improves reply rate over generic drafts.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNofriendly
topicYesWhat the email is about
site_nameNo
prospect_urlNoOptional. If provided, the tool fetches this URL and uses its title + first paragraph to personalize the draft. Best URL is the specific post you want to reference; the homepage works too.
article_titleNoTheir article being referenced (optional)
campaign_typeNooutreach
prospect_nameNo

TDQS

A3.6/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the full burden. It transparently discloses the fetching behavior when prospect_url is provided and the output components. But it does not discuss auth, rate limits, or error handling, which would add completeness.

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 description is three sentences with a clear structure: what it does, a key usage tip, and a benefit. It avoids redundancy, though the benefit clause could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and no output schema or annotations, the description should enumerate all parameters and edge cases. It covers outputs and prospect_url well, but other parameters are ambiguous, and there is no mention of required fields beyond the schema. Overall, it is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is only 43%, and the description adds meaningful guidance for prospect_url (fetch and personalize). However, it leaves site_name, campaign_type, and prospect_name undefined, and does not explain tone beyond the enum. The description only partially compensates for the schema's low coverage.

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?

The description clearly states the tool's purpose: 'Generate an outreach email draft.' It enumerates the return fields (subject, HTML body, plain-text body, spam score), which distinguishes it from sibling tools like save_draft or find_email. The resource is specific and actionable.

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 description provides clear usage context: for drafting outreach emails, with a strong recommendation to pass prospect_url for personalization. However, it does not explicitly mention when not to use this tool or alternative tools, so it lacks explicit exclusions.

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

enrich_domainA

Return known facts about a domain: Moz Domain Authority, cached contact email, homepage title/description. Data is shared across all users of linklight so common domains are instant.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesBare hostname, e.g. example.com

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It discloses that the contact email is cached and data is shared across users, implying a shared cache. However, it does not mention potential staleness, rate limits, or behavior for unknown domains.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and specific output facts. Every sentence adds value, including the performance note about shared data.

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?

The description sufficiently covers what the tool returns and mentions caching behavior, which is helpful given no output schema. It could add error handling or unknown-domain behavior, but for a simple 1-parameter tool, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a full description for the 'domain' parameter (bare hostname). The tool description does not add additional meaning beyond the schema, so baseline 3 applies.

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?

The description clearly states the tool returns known facts about a domain, listing specific outputs (Moz Domain Authority, cached contact email, homepage title/description). This distinguishes it from sibling tools like find_email or list_backlinks, as no other tool focuses on domain-level enrichment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for domain enrichment but does not explicitly state when to use this tool versus alternatives. It mentions data sharing and instant results as a benefit but lacks guidance on exclusions or alternative tools.

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

find_emailB

Look up a contact email for a domain via Hunter. Cached in domain_facts on hit.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses a caching side effect ('Cached in domain_facts on hit'), which is a useful behavioral trait. However, it does not mention rate limits (implied by 'via Hunter'), error behavior when no email exists, or whether the lookup is read-only. The caching note adds some transparency but not comprehensive disclosure.

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

Conciseness5/5

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

The description is extremely concise: two short sentences with no filler. It front-loads the core purpose and adds one behavioral note. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is adequate but not complete. It explains the main function and a caching side effect, but does not describe the return value structure, error cases, or when to use this instead of similar tools. Given the tool's simplicity, the description is minimally viable but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter (domain) with no description, so schema coverage is 0%. The description only says 'for a domain', which adds little beyond the parameter name. It does not clarify expected format (e.g., with or without protocol), case sensitivity, or examples. The description fails to compensate for the lack of schema documentation.

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?

The description clearly states the tool's purpose: look up a contact email for a domain via Hunter. It uses a specific verb ('look up'), names the resource ('contact email for a domain'), and identifies the external service ('via Hunter'). This distinguishes it from sibling tools like search_prospects or enrich_domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention any contrasting use cases, prerequisites, or excluded scenarios. The only additional context is the caching mention, which is not a usage guideline.

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

find_prospect_gapsA

Return prospects in a campaign that are missing a contact email, sorted by Domain Authority DESC. Use to answer 'which prospects should I run find_email on next?'

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
campaign_idYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the core behavior: filtering for missing emails and sorting by Domain Authority descending. It does not mention side effects or permission requirements, but for a read-only query tool this is adequately transparent.

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

Conciseness5/5

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

The description is two sentences: the first states the function, the second provides a use case. Every word earns its place, and it is front-loaded with the primary purpose.

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?

This is a simple query tool with two parameters and no output schema. The description covers the what, the sorting, and the intended use case. It lacks explicit mention of the limit behavior but that is in the schema, so overall it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description implies campaign_id via 'in a campaign' but never names the parameter or explains the limit parameter. It adds minimal value beyond the schema, and the limit functionality is completely undocumented in the description.

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?

The description clearly states the tool returns prospects in a campaign missing a contact email, sorted by Domain Authority descending. This is a specific verb (return), resource (prospects in a campaign), and filter/sort, clearly distinguishing it from siblings like find_email.

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 description explicitly says to use it to answer 'which prospects should I run find_email on next?', providing clear context and suggesting the workflow. However, it does not explicitly state when not to use it or mention alternative tools, so it falls short of a perfect score.

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

find_quick_win_keywordsA

Return keywords the caller's site is ranking for in Search Console, filtered to 'quick win' opportunities: position 11-30 with meaningful impressions. Sorted by opportunity score (impressions ÷ position). Use to answer 'what should I write about next?'

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
site_idYesUUID from list_campaigns' sites (or run list_sites first)
position_maxNo
position_minNo
min_impressionsNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses filtering logic (position 11-30, meaningful impressions) and sorting formula (impressions ÷ position), which is valuable behavioral detail. However, it does not explicitly state whether the operation is read-only or mention auth/rate limit constraints, which are relevant for a Search Console tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the action, then the use case. No fluff or repetition.

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 could have described the return format, but it states it returns 'keywords' which is sufficient for the agent's decision. It covers the main filtering and sorting behavior. Given the tool's simplicity, it is mostly complete, though not exhaustive.

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 20% (only site_id described). The description compensates by explaining the purpose of position_min, position_max, and min_impressions through the 'quick win' criteria and mentions the sorting formula. It does not explain 'limit' directly, but its meaning is implied by 'sorted' results. The site_id is adequately described in the schema.

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?

Description explicitly states it returns keywords the caller's site ranks for in Search Console, filtered to positions 11-30 with meaningful impressions, and sorted by opportunity score. This clearly distinguishes it from sibling tools focused on prospects, backlinks, and emails.

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?

Provides an explicit use case: 'Use to answer what should I write about next?' This gives clear context for when to invoke. It does not mention exclusions or alternatives, but sibling tools are obviously different, so the context is sufficient.

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

find_similar_prospectsA

Given a known-good prospect URL, return semantically similar URLs via Exa.ai's neural search. Use this when the caller already has one great prospect and wants 5-20 more like it. Excludes the source domain by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe reference URL (e.g. https://backlinko.com/link-building-tools)
limitNo

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description adds key behaviors: 'Excludes the source domain by default' and 'via Exa.ai's neural search.' This gives insight into the search method and a default filtering action. It does not discuss rate limits or auth, but for a read-oriented search tool this is adequate.

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

Conciseness5/5

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

Three concise, front-loaded sentences: purpose, usage scenario, and a key default behavior. Every sentence adds distinct value with no redundancy or filler.

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?

For a simple 2-parameter tool with no output schema, the description covers the operation, input, appropriate use, and an important default behavior. It conveys that the output is URLs, which is sufficient for an agent to invoke this tool effectively.

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?

The schema covers the URL parameter but only gives type/range for limit. The description adds context to both: URL is a 'known-good prospect' reference, and limit is implicitly tied to '5-20 more like it.' This partially compensates for the schema's 50% coverage.

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?

The description clearly states the tool returns semantically similar URLs via Exa.ai's neural search, using a known-good prospect URL as input. This specifies the verb+resource and differentiates it from siblings like search_prospects or find_competitor_backlinks by requiring an existing reference URL.

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?

It explicitly says 'Use this when the caller already has one great prospect and wants 5-20 more like it,' providing a clear context. It does not name alternatives or when-not-to-use, but the prerequisite of a known-good URL implies the distinction from broader search tools.

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

list_campaignsA

List the caller's campaigns with id, name, status, and created_at.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full responsibility. It specifies the scope (caller's campaigns) and output fields, but does not explicitly mention pagination, rate limits, or that it is read-only, though 'List' implies a non-destructive operation.

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

Conciseness5/5

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

The description is a single, direct sentence with no fluff. It front-loads the action and includes relevant output details, making it appropriately concise.

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?

For a parameterless list tool, the description covers the essential behavior and return fields. It omits potential details like pagination or ordering, but these are likely secondary for a simple listing operation.

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?

The tool has zero parameters, so the schema is trivially covered. The description adds value by enumerating the returned fields (id, name, status, created_at), which the schema does not provide since there is no output schema.

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?

The description clearly states the tool lists the caller's campaigns with specific fields (id, name, status, created_at). The verb 'List' and resource 'campaigns' distinguish it from sibling tools like list_prospects and list_backlinks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only states what it does, without mentioning exclusions or comparing to sibling tools like search_prospects or list_replies.

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

list_prospectsA

List prospects. Filter by campaign_id and/or status (prospect|contacted|replied|live_link|declined|archived).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo
campaign_idNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It describes a read-oriented operation ('List'), but does not disclose return format, pagination behavior, or any side effects. It adds no behavioral context beyond the basic listing action.

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

Conciseness5/5

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

The description is concise and front-loaded: two short sentences that state the primary action and filtering options. No wasted words, and the status enum is provided inline efficiently.

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?

For a simple list tool with three optional parameters and no output schema, the description covers the essential use case (listing and filtering) adequately. It omits mention of the 'limit' parameter and return format, but these are either inferable from the schema or implied by the operation.

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 description coverage is 0%, so the description must compensate. It explicitly mentions two of three parameters (campaign_id and status) and enumerates valid status values, which adds meaning beyond the bare schema. The 'limit' parameter is not described, but its schema constraints (default, min, max) are self-explanatory.

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?

The description clearly states 'List prospects', a specific verb+resource pair, and mentions filtering capabilities. It does not explicitly distinguish from the sibling tool 'search_prospects', but the listing vs searching distinction is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the filter options (by campaign_id and/or status) but does not provide explicit guidance on when to choose this tool over alternatives like 'search_prospects'. No exclusions or alternative mentions are present.

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

list_repliesB

List prospects who replied to outreach. Optionally filter by ISO-8601 since date.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNoISO-8601 timestamp; only prospects updated after this

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only mentions an optional filter, not return format, pagination, ordering, or read-only safety. 'List' implies read-only but does not explicitly state it, leaving significant unknowns.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core purpose and then mentions the optional filter. Every word earns its place, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, so the description should explain return values and usage context, but it does not. It only states the basic action and one filter, leaving the agent without enough information to anticipate the response shape or behavior, making it incomplete for a non-trivial tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: the 'since' parameter has a description in the schema, and the tool description repeats that it is an ISO-8601 date filter, adding no new meaning. The 'limit' parameter has no description in schema or tool, although its default and max are present. The description does not compensate for the gap.

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?

The description clearly states the verb 'List' and the resource 'prospects who replied to outreach', which is specific and distinguishes from sibling tools like list_prospects and search_prospects. It is unambiguous about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (for listing prospects who replied) but does not explicitly state when to choose this over alternatives like list_prospects or search_prospects. There are no exclusions or alternative references, so guidance is only implied.

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

save_draftA

Save a drafted email as a note on a prospect. Does NOT send — user must review and send from the linklight UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectYes
body_htmlYes
body_textNo
prospect_idYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description takes on the burden of behavioral disclosure. It passes the most critical behavior: the tool does not send the email, only saves it as a note, and the user must send via the UI. This goes beyond the basic verb and adds meaningful workflow context. It could mention side effects (e.g., whether the note is visible on the prospect record) but the key non-sending behavior is well covered.

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

Conciseness5/5

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

The description is two sentences long and front-loads the core action in the first sentence. The second sentence adds essential clarification ('Does NOT send') without redundancy. Every sentence earns its place, making it highly efficient and easy to scan.

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?

For a simple save-draft tool with no output schema and no annotations, the description provides the essential context: purpose, non-sending behavior, and the follow-up workflow (review and send from the UI). It could be richer by explaining what a 'note' means on the prospect record, but the core usage context is adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage for parameters, and the tool description adds no semantic information about the parameters. While parameter names like prospect_id, subject, and body_html are somewhat self-explanatory from the context, the description does not explain relationships such as body_text vs body_html or whether body_text is required. With zero coverage, the description needed to compensate but fell short.

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?

The description clearly states the action: 'Save a drafted email as a note on a prospect.' It uses a specific verb ('save') and resource ('note on a prospect'). It also distinguishes itself from a sending tool with the explicit 'Does NOT send' and points to the linklight UI for the actual send, preventing confusion with sibling tools like draft_email.

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 description provides clear context for when to use the tool: to save a drafted email without sending it. The explicit 'Does NOT send — user must review and send from the linklight UI' serves as a when-not-to-use directive, implying the tool is for drafting/note-saving rather than sending. However, it does not explicitly name alternative tools or exclusions, so it stops short of a 5.

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

search_prospectsA

Find link-building prospect sites for a keyword. Prefers roundup / list / resource-page targets over direct competitor product pages. Uses the shared SERP cache when fresh; hits Tavily on miss. Returns url, title, domain, position, and Moz Domain Authority.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
keywordYesSearch phrase (2-200 chars)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and explains key behaviors: uses a shared SERP cache when fresh and falls back to Tavily, and returns specific fields (url, title, domain, position, Moz DA). It also discloses the target preference. It doesn't mention rate limits or auth, but for a read-only search tool this is sufficient and adds value beyond the schema.

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

Conciseness5/5

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

Three concise sentences: the first states purpose, the second adds target preferences, the third discloses cache behavior and return fields. Every sentence adds value, no fluff, and the most important info is front-loaded.

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?

For a simple 2-parameter search tool with no output schema, the description covers purpose, target preferences, caching, and return fields. It is sufficiently complete to guide an agent, though it could mention the output format (e.g., array of objects) or the meaning of 'position' to be fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (keyword described, limit not). The description mentions 'for a keyword' but not the limit's effect. The limit parameter has default/minimum/maximum in the schema, which gives semantics, so the description doesn't need to over-explain. However, it doesn't add any behavioral context about limit (e.g., how it affects result count), leaving a minor gap.

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?

The description begins with a specific action and resource: 'Find link-building prospect sites for a keyword.' It clearly distinguishes from siblings by emphasizing keyword-driven discovery and target-type preferences (roundup/list/resource-page vs direct competitor pages). This is more specific than generic sibling names like 'list_prospects'.

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?

It provides clear context: use for finding link-building prospects by keyword, with a preference for curated pages. It does not explicitly name alternatives or state when not to use, but the purpose and expected output make the usage scenario evident. Lacks explicit exclusions or references to sibling tools, so a 4 is appropriate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv0.1.0
    • First observeddraft_email
    • First observedenrich_domain
    • First observedfind_competitor_backlinks
    • First observedfind_email
    • First observedfind_prospect_gaps
    • First observedfind_quick_win_keywords
    • First observedfind_similar_prospects
    • First observedlist_backlinks
    • First observedlist_campaigns
    • First observedlist_lost_backlinks
    • First observedlist_prospects
    • First observedlist_replies
    • First observedsave_draft
    • First observedsearch_prospects

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes: discovery (search, similar, competitor), enrichment (domain, email), listing (prospects, backlinks, replies, campaigns), outreach (draft, save), and analysis (quick win keywords, gaps). Minor overlap exists (list_backlinks vs list_lost_backlinks, enrich_domain vs find_email) but descriptions clarify the intended use cases.

Naming Consistency4/5

All tool names use snake_case with a verb_noun structure, consistently using 'list' for listing actions and 'find' for discovery. The only deviation is 'search_prospects' using 'search' instead of 'find', but this is acceptable given the keyword-based nature of the search.

Tool Count5/5

With 14 tools, the set is well-scoped for a link-building workflow, covering discovery, enrichment, outreach, and monitoring. Each tool serves a distinct purpose and none are redundant or superfluous, fitting the 3-15 tool sweet spot.

Completeness3/5

The toolset covers discovery, enrichment, outreach drafting, and backlink monitoring, but lacks lifecycle management operations such as updating prospect status or creating campaigns. This creates a dead end where agents can list prospects by status but cannot move them through the pipeline, making the surface incomplete for full workflow automation.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    The official MCP server for Semantic Pen - an advanced AI article generator and SEO content writer. Create, manage, and optimize SEO-friendly articles directly from Claude Code and Cursor Windsurf with powerful AI automation.
    5
    50
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that gives AI assistants live access to Google Search Console and Bing Webmaster Tools for search performance, indexing, keyword research, and crawl health analysis directly in the chat.
    10
    13
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that gives AI assistants 23 SEO tools for rank tracking, Google Analytics, site audits, keyword research, competitive analysis, and more, accessible through natural language.
    25
    10
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/grodgers1-ctrl/kinky_link'

If you have feedback or need assistance with the MCP directory API, please join our Discord server