Skip to main content
Glama
AgentSEO MCP Server

AgentSEO MCP Server

AgentSEO Backlinks Page Intersection

agentseo_backlinks_page_intersection
Destructive

Find source pages that link to competitor targets but not your own or excluded targets, then prioritize link-gap outreach and quality review.

Instructions

Find source pages that link to competitor targets but not excluded/user targets, then prioritize link-gap outreach and quality review. Uses AgentSEO credits; repeating the call can create new charged work.

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": {
      "targets": "<targets>"
    },
    "name": "agentseo_backlinks_page_intersection"
  }
}

Input Schema

NameRequiredDescriptionDefault
syncNoRequest a bounded wait for completion when true. The API can still return a pending job; retain its job ID and poll agentseo_job_status instead of repeating this charged call. False returns a queued job without waiting. Type: Boolean. Default: true.
limitNoMaximum number of source-page backlink intersection records to return. Type: Safe integer. Minimum: 1. Maximum: 100. Default: 25.
offsetNoZero-based result offset measured in rows; use with limit for pagination. Type: Safe integer. Minimum: 0. Maximum: 20000. Default: 0.
sort_byNoMetric used to order returned results; choose one of this tool’s accepted enum values. Type: String. Accepted values: "rank", "domain_rank", "page_rank", "first_seen", "last_seen". Default: "rank".rank
targetsYesDomains, subdomains or URLs to compare; provide the target formats supported by this workflow. Type: Array. Minimum: 1 items. Maximum: 5 items. Required.
min_rankNoMinimum provider backlink authority score, not a Google search position; use the supported score scale and stated input bounds. Type: Safe integer. Minimum: 0. Maximum: 1000. Optional; no client default.
rank_scaleNoRequested provider authority-score scale: one_hundred is 0-100; one_thousand is 0-1000. Individual filter input bounds still apply. Type: String. Accepted values: "one_hundred", "one_thousand". Default: "one_hundred".one_hundred
broken_onlyNoRestrict results to backlinks associated with broken target pages when true. Type: Boolean. Default: false.
dofollow_onlyNoRestrict results to followed backlinks when true; false does not apply that filter. Type: Boolean. Default: false.
min_page_rankNoMinimum referring-page authority score on the provider score scale, not a search position. Type: Safe integer. Minimum: 0. Maximum: 1000. Optional; no client default.
max_spam_scoreNoMaximum tolerated provider backlink spam score on a 0-100 scale; lower values are stricter. Type: Safe integer. Minimum: 0. Maximum: 100. Optional; no client default.
exclude_targetsNoTargets whose existing backlinks should be excluded from the candidate intersection set. Type: Array. Maximum: 5 items. Default: [].
min_domain_rankNoMinimum referring-domain authority score on the provider score scale, not a search position. Type: Safe integer. Minimum: 0. Maximum: 1000. Optional; no client default.
include_subdomainsNoInclude links or ranking data for subdomains of the target when true. Type: Boolean. Default: true.
internal_list_limitNoMaximum embedded sample rows per aggregate record; this does not cap the aggregate backlink totals. Type: Safe integer. Minimum: 1. Maximum: 100. Default: 10.
backlinks_status_typeNoBacklink lifecycle filter: live links only, lost links only, or all supported links. Type: String. Accepted values: "live", "all", "lost". Default: "live".live
include_indirect_linksNoInclude backlinks that reach the target through supported indirect/redirect link relationships when true. Type: Boolean. Default: true.
exclude_internal_backlinksNoExclude links originating within the target’s own site when true. Type: Boolean. Default: true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changedv0.1.5
    • addedInput schema / properties / backlinks_status_type / description
      Added value: +"Backlink lifecycle filter: live links only, lost links only, or all supported links. Type: String. Accepted values: \"live\", \"all\", \"lost\". Default: \"live\"."
    • addedInput schema / properties / broken_only / description
      Added value: +"Restrict results to backlinks associated with broken target pages when true. Type: Boolean. Default: false."
    • addedInput schema / properties / dofollow_only / description
      Added value: +"Restrict results to followed backlinks when true; false does not apply that filter. Type: Boolean. Default: false."
    • addedInput schema / properties / exclude_internal_backlinks / description
      Added value: +"Exclude links originating within the target’s own site when true. Type: Boolean. Default: true."
    • addedInput schema / properties / exclude_targets / description
      Added value: +"Targets whose existing backlinks should be excluded from the candidate intersection set. Type: Array. Maximum: 5 items. Default: []."
    • addedInput schema / properties / exclude_targets / items / description
      Added value: +"One target whose existing link relationships should be excluded. Type: String. Minimum: 1 characters. Required."
    • addedInput schema / properties / include_indirect_links / description
      Added value: +"Include backlinks that reach the target through supported indirect/redirect link relationships when true. Type: Boolean. Default: true."
    • addedInput schema / properties / include_subdomains / description
      Added value: +"Include links or ranking data for subdomains of the target when true. Type: Boolean. Default: true."
    • addedInput schema / properties / internal_list_limit / description
      Added value: +"Maximum embedded sample rows per aggregate record; this does not cap the aggregate backlink totals. Type: Safe integer. Minimum: 1. Maximum: 100. Default: 10."
    • addedInput schema / properties / limit / description
      Added value: +"Maximum number of source-page backlink intersection records to return. Type: Safe integer. Minimum: 1. Maximum: 100. Default: 25."
    • addedInput schema / properties / max_spam_score / description
      Added value: +"Maximum tolerated provider backlink spam score on a 0-100 scale; lower values are stricter. Type: Safe integer. Minimum: 0. Maximum: 100. Optional; no client default."
    • addedInput schema / properties / min_domain_rank / description
      Added value: +"Minimum referring-domain authority score on the provider score scale, not a search position. Type: Safe integer. Minimum: 0. Maximum: 1000. Optional; no client default."
    • addedInput schema / properties / min_page_rank / description
      Added value: +"Minimum referring-page authority score on the provider score scale, not a search position. Type: Safe integer. Minimum: 0. Maximum: 1000. Optional; no client default."
    • addedInput schema / properties / min_rank / description
      Added value: +"Minimum provider backlink authority score, not a Google search position; use the supported score scale and stated input bounds. Type: Safe integer. Minimum: 0. Maximum: 1000. Optional; no client default."
    • addedInput schema / properties / offset / description
      Added value: +"Zero-based result offset measured in rows; use with limit for pagination. Type: Safe integer. Minimum: 0. Maximum: 20000. Default: 0."
    • addedInput schema / properties / rank_scale / description
      Added value: +"Requested provider authority-score scale: one_hundred is 0-100; one_thousand is 0-1000. Individual filter input bounds still apply. Type: String. Accepted values: \"one_hundred\", \"one_thousand\". Default: \"one_hundred\"."
    • addedInput schema / properties / sort_by / description
      Added value: +"Metric used to order returned results; choose one of this tool’s accepted enum values. Type: String. Accepted values: \"rank\", \"domain_rank\", \"page_rank\", \"first_seen\", \"last_seen\". Default: \"rank\"."
    • addedInput schema / properties / sync / description
      Added value: +"Request a bounded wait for completion when true. The API can still return a pending job; retain its job ID and poll agentseo_job_status instead of repeating this charged call. False returns a queued job without waiting. Type: Boolean. Default: true."
    • addedInput schema / properties / targets / description
      Added value: +"Domains, subdomains or URLs to compare; provide the target formats supported by this workflow. Type: Array. Minimum: 1 items. Maximum: 5 items. Required."
    • addedInput schema / properties / targets / items / description
      Added value: +"One domain, subdomain or absolute page URL included in the comparison. Type: String. Minimum: 1 characters. Required."
  2. First observedv0.1.4

TDQS

A3.6/5.0
Behavior4/5

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

The annotations already declare that this tool is non-read-only, destructive, non-idempotent, and open-world. The description goes further by disclosing that the tool consumes AgentSEO credits and that repeating the call can create new charged work; this is costly behavioral context not covered by the annotations. It does not contradict the annotations. However, it remains silent on why the operation is destructive, on retention or overwrite behavior for the data involved, and on what the returned records contain.

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?

Two sentences carry the purpose and the cost warning, with the core function front-loaded. There is no filler or repetition. The second sentence about charged work is slightly abrupt, but every sentence 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?

This is a complex tool: 18 parameters, filter semantics, and a credit cost model, with no output schema. The description covers purpose and cost but does not explain the return shape, such as source-page rows versus embedded samples, or how pagination interacts with the 20,000 offset cap. As a result, the description is adequate but leaves gaps for a tool of this complexity.

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 100%, so every one of the 18 parameters is already documented, including enums, bounds, and defaults; the baseline of 3 therefore applies. The description adds only a loose mapping of 'competitor targets' to targets and 'excluded/user targets' to exclude_targets. It provides no extra guidance on parameter interactions, such as how rank_scale affects min_rank or how internal_list_limit relates to limit/offset.

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 uses a specific verb and resource: it finds source pages that link to competitor targets but not to excluded/user targets, effectively describing a backlink link-gap intersection. This is distinguishable from related tools such as backlinks_competitors or page_intersection by its emphasis on 'source pages' and 'excluded/user targets'. However, it does not explicitly name those siblings, so the distinction must be inferred.

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 phrase 'then prioritize link-gap outreach and quality review' implies the intended use case: identifying missing-link opportunities. The warning that 'repeating the call can create new charged work' provides a practical constraint on repeated invocation. However, there is no explicit guidance on when to use this tool instead of alternatives such as page_intersection or backlinks_opportunity_finder, and there are no stated preconditions.

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