Skip to main content
Glama
AgentSEO MCP Server

AgentSEO MCP Server

AgentSEO Programmatic SEO Template

agentseo_content_programmatic_template
Destructive

Plan safe programmatic SEO templates with uniqueness rules, indexation gates, internal links, schema guidance, and launch QA. Validate keyword/URL patterns and data sources before scaling.

Instructions

Plan safe programmatic SEO templates with uniqueness rules, indexation gates, internal links, schema guidance, and launch QA. 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": {
      "keyword_pattern": "<keyword_pattern>",
      "url_pattern": "<url_pattern>",
      "data_sources": "<data_sources>",
      "variables": "<variables>"
    },
    "name": "agentseo_content_programmatic_template"
  }
}

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.
targetNoYour target brand, domain or URL used to scope this workflow; supply the entity you want assessed. Type: String. Optional; no client default.
audienceNoIntended reader or buyer group in plain language; do not include unnecessary personal data. Type: String. Maximum: 180 characters. Optional; no client default.
playbookNoProgrammatic SEO template strategy to plan; custom allows a caller-defined pattern. Type: String. Accepted values: "templates", "curation", "conversions", "comparisons", "examples", "locations", "personas", "integrations", "glossary", "translations", "directory", "profiles", "custom". Default: "custom".custom
page_goalNoPrimary outcome the proposed programmatic pages should support. Type: String. Accepted values: "traffic", "lead_generation", "trial_signup", "demo_request", "purchase", "authority", "support". Default: "lead_generation".lead_generation
variablesYesVariable names available for substitution into keyword and URL patterns. Type: Array. Minimum: 1 items. Maximum: 30 items. Required.
competitorsNoCompeting brands or domains to compare using the data supplied to this workflow. Type: Array. Maximum: 20 items. Default: [].
url_patternYesProposed URL/path template using the supplied variables, for example /{category}/{city}; no URL is published. Type: String. Minimum: 1 characters. Maximum: 180 characters. Required.
data_sourcesYesDescriptions of the datasets available for the proposed template; no credentials or live dataset connection. Type: Array. Minimum: 1 items. Maximum: 20 items. Required.
unique_fieldsNoDataset column names that provide distinct evidence or value across generated pages. Type: Array. Maximum: 80 items. Default: [].
conversion_ctaNoProposed conversion call-to-action text for the template; no transaction is initiated. Type: String. Maximum: 120 characters. Optional; no client default.
include_schemaNoInclude structured-data guidance in the generated plan when true. Type: Boolean. Default: true.
sample_recordsNoExample dataset rows keyed by column name. Values may be strings, numbers, booleans or null, not nested arrays or objects. Type: Array. Maximum: 10 items. Default: [].
keyword_patternYesKeyword template with named variables, for example best {category} in {city}. Type: String. Minimum: 1 characters. Maximum: 180 characters. Required.
publishing_cadenceNoProposed rollout pattern for the plan; does not schedule or publish pages. Type: String. Accepted values: "pilot", "weekly_batch", "monthly_batch", "bulk_import". Default: "pilot".pilot
page_count_estimateNoEstimated number of pages in the proposed rollout, not a request to create that many pages. Type: Safe integer. Minimum: 1. Maximum: 1000000. Default: 100.
include_internal_linkingNoInclude internal-linking guidance in the plan when true. Type: Boolean. Default: true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed29 schema fields changedv0.1.5
    • addedInput schema / properties / audience / description
      Added value: +"Intended reader or buyer group in plain language; do not include unnecessary personal data. Type: String. Maximum: 180 characters. Optional; no client default."
    • addedInput schema / properties / competitors / description
      Added value: +"Competing brands or domains to compare using the data supplied to this workflow. Type: Array. Maximum: 20 items. Default: []."
    • addedInput schema / properties / competitors / items / description
      Added value: +"One competing brand or domain name used in the comparison. Type: String. Minimum: 1 characters. Maximum: 160 characters. Required."
    • addedInput schema / properties / conversion_cta / description
      Added value: +"Proposed conversion call-to-action text for the template; no transaction is initiated. Type: String. Maximum: 120 characters. Optional; no client default."
    • addedInput schema / properties / data_sources / description
      Added value: +"Descriptions of the datasets available for the proposed template; no credentials or live dataset connection. Type: Array. Minimum: 1 items. Maximum: 20 items. Required."
    • addedInput schema / properties / data_sources / items / description
      Added value: +"One dataset description with its provenance, freshness and available columns. Type: Object. Required."
    • addedInput schema / properties / data_sources / items / properties / fields / description
      Added value: +"Column names available in this supplied data source. Type: Array. Maximum: 80 items. Default: []."
    • addedInput schema / properties / data_sources / items / properties / fields / items / description
      Added value: +"One available dataset column name. Type: String. Minimum: 1 characters. Maximum: 80 characters. Required."
    • addedInput schema / properties / data_sources / items / properties / freshness / description
      Added value: +"Update frequency of the supplied dataset; this does not configure a refresh job. Type: String. Accepted values: \"real_time\", \"daily\", \"weekly\", \"monthly\", \"quarterly\", \"static\", \"unknown\". Default: \"unknown\"."
    • addedInput schema / properties / data_sources / items / properties / name / description
      Added value: +"Human-readable name of the supplied dataset or source. Type: String. Minimum: 1 characters. Maximum: 120 characters. Required."
    • addedInput schema / properties / data_sources / items / properties / type / description
      Added value: +"Provenance category of the supplied dataset. Type: String. Accepted values: \"first_party\", \"product\", \"user_generated\", \"licensed\", \"public\", \"manual\", \"unknown\". Default: \"unknown\"."
    • addedInput schema / properties / include_internal_linking / description
      Added value: +"Include internal-linking guidance in the plan when true. Type: Boolean. Default: true."
    • addedInput schema / properties / include_schema / description
      Added value: +"Include structured-data guidance in the generated plan when true. Type: Boolean. Default: true."
    • addedInput schema / properties / keyword_pattern / description
      Added value: +"Keyword template with named variables, for example best {category} in {city}. Type: String. Minimum: 1 characters. Maximum: 180 characters. Required."
    • addedInput schema / properties / page_count_estimate / description
      Added value: +"Estimated number of pages in the proposed rollout, not a request to create that many pages. Type: Safe integer. Minimum: 1. Maximum: 1000000. Default: 100."
    • addedInput schema / properties / page_goal / description
      Added value: +"Primary outcome the proposed programmatic pages should support. Type: String. Accepted values: \"traffic\", \"lead_generation\", \"trial_signup\", \"demo_request\", \"purchase\", \"authority\", \"support\". Default: \"lead_generation\"."
    • addedInput schema / properties / playbook / description
      Added value: +"Programmatic SEO template strategy to plan; custom allows a caller-defined pattern. Type: String. Accepted values: \"templates\", \"curation\", \"conversions\", \"comparisons\", \"examples\", \"locations\", \"personas\", \"integrations\", \"glossary\", \"translations\", \"directory\", \"profiles\", \"custom\". Default: \"custom\"."
    • addedInput schema / properties / publishing_cadence / description
      Added value: +"Proposed rollout pattern for the plan; does not schedule or publish pages. Type: String. Accepted values: \"pilot\", \"weekly_batch\", \"monthly_batch\", \"bulk_import\". Default: \"pilot\"."
    • addedInput schema / properties / sample_records / description
      Added value: +"Example dataset rows keyed by column name. Values may be strings, numbers, booleans or null, not nested arrays or objects. Type: Array. Maximum: 10 items. Default: []."
    • addedInput schema / properties / sample_records / items / additionalProperties / description
      Added value: +"Value for the named sample-record column; nested arrays and objects are not accepted. Type: String, number, boolean or null. Required."
    • addedInput schema / properties / sample_records / items / description
      Added value: +"One sample data row keyed by column name; values must be scalar strings, numbers, booleans or null. Type: Object. Required."
    • addedInput schema / properties / sample_records / items / propertyNames / description
      Added value: +"Column name for a supplied sample record. Type: String. Required."
    • 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 / target / description
      Added value: +"Your target brand, domain or URL used to scope this workflow; supply the entity you want assessed. Type: String. Optional; no client default."
    • addedInput schema / properties / unique_fields / description
      Added value: +"Dataset column names that provide distinct evidence or value across generated pages. Type: Array. Maximum: 80 items. Default: []."
    • addedInput schema / properties / unique_fields / items / description
      Added value: +"One dataset column that provides distinctive page content or evidence. Type: String. Minimum: 1 characters. Maximum: 80 characters. Required."
    • addedInput schema / properties / url_pattern / description
      Added value: +"Proposed URL/path template using the supplied variables, for example /{category}/{city}; no URL is published. Type: String. Minimum: 1 characters. Maximum: 180 characters. Required."
    • addedInput schema / properties / variables / description
      Added value: +"Variable names available for substitution into keyword and URL patterns. Type: Array. Minimum: 1 items. Maximum: 30 items. Required."
    • addedInput schema / properties / variables / items / description
      Added value: +"One variable name available in the template patterns. Type: String. Minimum: 1 characters. Maximum: 80 characters. Required."
  2. First observedv0.1.4

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, and the description corroborates that profile by warning about consumed credits and repeat calls creating new charged work. It does not, however, explain that the call is asynchronous, that a pending job may be returned, or that agentseo_job_status should be polled instead — behavior that matters for a tool flagged non-idempotent and destructive.

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, zero filler, with the purpose and deliverables front-loaded and the cost caveat placed where it will be read before invocation. The enumeration of outputs earns its place because no output schema exists.

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 17-parameter planning tool with no output schema, the deliverable list effectively stands in for a description of what comes back, and the credit warning covers the main operational risk. Remaining gap: nothing here signals the sync/pending-job flow or the shape of the returned plan, though the schema's sync parameter documents the former.

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%, and the schema itself is unusually rich (per-field provenance, freshness, pattern examples, and explicit no-side-effect notes on url_pattern, publishing_cadence and page_count_estimate). The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

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 gives a specific verb-plus-resource ('Plan safe programmatic SEO templates') and enumerates the deliverables (uniqueness rules, indexation gates, internal links, schema guidance, launch QA), which clearly separates it from one-off siblings like agentseo_content_brief or agentseo_content_schema_plan. It stops short of naming an alternative tool, so an agent must infer the boundary between programmatic template planning and per-page briefs.

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?

Usage is implied by the 'programmatic SEO templates' framing, and the credit warning discourages blind repetition, which is a useful guardrail. However, there is no explicit statement of when to pick this over agentseo_content_action_plan or agentseo_content_schema_plan, and no prerequisites are described beyond what the schema requires.

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