{"name":"PageGun MCP Server","description":"Organic ops control plane for PageGun projects: content inventory, SEO/GEO audits, draft creation, safe updates, launch checks, and publishing.","transport":"streamable-http","endpoint":"https://mcp.pagegun.com","docs":"https://pagegun.com/docs/api-reference/mcp","auth":{"header":"Authorization: Bearer <api_key>","env_var":"PAGEGUN_API_KEY","recommendation":"Use a project-scoped API key when possible. If the key is not project-scoped, pass project_id explicitly."},"tool_surface":{"full_tool_count":134,"default_profile":"seo-agent","discovery_tool":"get_tool_profiles","select_profile":"Use ?profile=full|seo-agent|readonly|cms|publisher on the MCP URL or send x-pagegun-mcp-profile.","profiles":[{"name":"full","label":"Full","description":"Every PageGun MCP tool. Use this for internal operator work and one-off maintenance.","tool_count":134},{"name":"seo-agent","label":"SEO Agent","description":"Default profile for organic growth agents: strategy, research, keyword targets, internal links, article drafting/updates, media, and publishing. Hides page/doc mutation, project creation, route/homepage/item wrappers, destructive deletes, and broad project settings tools.","tool_count":96},{"name":"readonly","label":"Read Only","description":"Audit and research surface only. No content, media, category, route, project, publish, or delete mutations are exposed.","tool_count":91},{"name":"cms","label":"CMS","description":"Content-management surface for pages, articles, docs, media, authors, categories, routes, and publishing. SEO research and costed external intelligence are hidden.","tool_count":79},{"name":"publisher","label":"Publisher","description":"Minimal publish/release surface: inspect content, run readiness/launch checks, then publish. Unpublishing still requires explicit approval.","tool_count":36}],"mutating_tools":["create_author","update_author","create_category","update_category","delete_category","merge_category","reorder_categories","create_page","set_page_schema","patch_page_config","update_page","publish_page","unpublish_page","create_article","update_article","create_doc","update_doc","create_project","keyword_targets_upsert","keyword_targets_update","keyword_targets_delete","linking_start_crawl","update_project","update_project_settings","create_subroute","update_subroute","bind_subroute_schema_set","delete_subroute","upload_media_from_url","upload_media_from_file","delete_media","update_item","collection_create","collection_update_schema","collection_update_item","collection_update_ops_config","collection_bulk_upsert_items","collection_publish_snapshot","route_ownership_upsert","indexing_configure_indexnow","indexing_submit_indexnow","update_homepage","automation_trigger"],"dangerous_tools":["create_project","update_project","update_project_settings","publish_page","collection_publish_snapshot","unpublish_page","bind_subroute_schema_set","delete_category","delete_subroute","delete_media"]},"what_this_mcp_can_do":["Read project, brand, route, inventory, site-surface, URL snapshot, and content context.","Search a curated, versioned SEO/GEO/CRO/operator tactic library through canonical English queries supplied by a multilingual agent, inspect complete tactic prompts, and rank candidates without auto-executing them.","Prioritize commercial SEO work from GSC URL queries, domain authority/backlink trends, internal links, conversion/CTA signals, canonical groups, indexing state, and product capability evidence.","Generate backlink outreach opportunity lists and email-writing prompts from 1-3 competitor domains without writing or sending email.","Create projects through a homepage onboarding and two-step confirmation flow.","Audit SEO/GEO readiness from persisted PageGun data and optional cached research data.","Compare one exact tenant-owned PageGun page with organic competitors through a bounded, cache-first on-page optimization audit.","Find keyword owners, content gaps, cannibalization risks, internal-link issues, and launch blockers.","Configure IndexNow and submit guarded URL batches after publish/bulk changes.","Persist project keyword targets and reuse shared keyword metrics without turning every agent run into a fresh vendor call.","Explain the Data Mode renderer read path: content key, CDN artifacts, encrypted snapshots, and static build wiring.","Manage structured Collection CMS records for directory/tool/local SEO sites, including schema validation, bulk upsert, export, route ownership, and Data Mode collection snapshots.","Create draft landing pages, articles, docs, schemas, routes, authors, categories, and media.","Patch JSON page configs safely with dry-run diffs, schema/link validation, and publish guards; full config replacement remains available for intentional rewrites.","Publish content the user asked for once readiness blockers are clear. Unpublish only after explicit user approval."],"available_tool_categories":[{"category":"tactic library","tools":["seo_tactics"],"safety":"Read-only decision support. Only capability.available_tool is callable; planned capabilities are labels, not tools. Reference-only grey knowledge requires explicit disclosure and never returns an execution prompt. Retrieval never authorizes execution, publishing, outreach, paid spend, or another external side effect."},{"category":"read-only audit","tools":["context_get_project_brief","context_get_brand_profile","context_get_product_capabilities","content_get_inventory","content_list_site_surface","content_site_search","content_get_url_snapshot","content_get_coverage_map","content_search","content_get_summary","seo_get_overview","seo_get_growth_brief","seo_export_audit","seo_get_canonical_groups","seo_plan_bulk_repairs","seo_audit_page","seo_find_keyword_owner","seo_find_cannibalization","seo_find_content_gaps","gsc_get_ranked_keywords_by_url","analytics_get_domain_metrics","analytics_get_url_conversions","indexing_get_status","indexing_get_indexnow_setup","publishing_get_readiness","publishing_get_launch_audit","adapter_get_static_site_plan","adapter_get_static_collection_plan","get_data_mode_renderer_guide"],"safety":"No writes. Default cache-only behavior spends no live research quota."},{"category":"indexing actions","tools":["indexing_get_indexnow_setup","indexing_configure_indexnow","indexing_submit_indexnow"],"safety":"Setup/configure writes only project.settings.indexnow. Submit defaults to preview and requires confirm_submit=true for the live external IndexNow request."},{"category":"keyword target management","tools":["keyword_targets_list","keyword_targets_upsert","keyword_targets_update","keyword_targets_delete"],"safety":"Scoped to project keyword-target rows. Upsert/update/delete do not create content or publish. Delete preserves the shared global keyword row."},{"category":"collection CMS","tools":["get_collection_guide","collection_list","collection_create","collection_get_schema","collection_update_schema","collection_list_items","collection_get_item","collection_validate_item","collection_get_ops_config","collection_update_ops_config","collection_query_items","collection_get_qa_queue","collection_preview_snapshot","relation_validate","collection_update_item","collection_bulk_upsert_items","collection_diff_items","collection_export_items","collection_publish_snapshot","adapter_get_static_collection_plan","route_ownership_list","route_ownership_suggest_from_crawl","route_ownership_upsert"],"safety":"Collections are structured source-of-truth records. Bulk writes should use dry_run first. Publishing collection snapshots requires explicit approval."},{"category":"draft/create","tools":["create_project","create_page","create_article","create_doc","create_author","create_category","create_subroute"],"safety":"create_project runs homepage onboarding, asks for missing required data, then requires a preview token plus explicit confirmation. Other tools create drafts or metadata only. Does not publish."},{"category":"update draft","tools":["patch_page_config","update_page","update_article","update_doc","set_page_schema","update_project_settings","update_subroute","upload_media_from_url","upload_media_from_file"],"safety":"patch_page_config dry-runs by default and never publishes. update_page config is a full overwrite escape hatch."},{"category":"drafting automations","tools":["automation_list","automation_get","automation_trigger","job_get_status"],"safety":"automation_trigger starts a research + drafting run for an enabled todo_research automation. It creates drafts only and never publishes; poll job_get_status, then review before publish_page."},{"category":"publish","tools":["publish_page"],"safety":"Requires publishing_get_readiness with blockers cleared. Publishing content the user asked for is authorised by that request; ask first only when they framed it as a draft or readiness returns requires_explicit_publish_approval=true."},{"category":"destructive/unpublish","tools":["unpublish_page","delete_media","delete_category","delete_subroute"],"safety":"Requires explicit user approval and a clear target."},{"category":"external/costed research","tools":["research_fetch_serp","research_get_serp_snapshot","research_keyword_metrics","seo_get_content_brief","seo_get_onpage_optimization","competitor_research_get_overlap","backlink_outreach_generate_pitches","geo_get_entity_profile","seo_get_overview","gsc_get_page_query_metrics","analytics_get_domain_metrics"],"safety":"cache_only is free. analytics_get_domain_metrics defaults to refresh_if_missing; other paid research tools default cache_only. seo_get_onpage_optimization uses a 30-day competitor-corpus TTL; other provider rows use the documented tool TTL (normally 14 days). force_refresh always refreshes. Live calls must return freshness/cost status without upstream vendor details."}],"recommended_paths":{"tactic_selection":["seo_tactics with action=recommend","seo_tactics with action=get for the selected stable tactic IDs","read project/page evidence with the relevant audit and context tools","use the returned selection/experiment prompt to choose use|test|defer|reject","call only the registered MCP tool named in the capability mapping; planned capabilities are not callable","follow the normal write, publish, outreach, and paid-spend approval boundaries"],"seo_audit":["context_get_project_brief","content_get_inventory","seo_get_overview","seo_audit_page"],"commercial_growth":["seo_get_growth_brief","analytics_get_domain_metrics","gsc_get_ranked_keywords_by_url","analytics_get_url_conversions","content_get_url_snapshot","content_get_coverage_map","linking_find_opportunities"],"backlink_outreach":["backlink_outreach_generate_pitches with 1-3 competitor domains","pass returned email prompt values to the email-writing agent","review generated email drafts before any send step"],"new_content":["context_get_project_brief","content_list_site_surface","keyword_targets_list","seo_find_keyword_owner","content_site_search","seo_get_content_brief","content_get_coverage_map","get_workflow_guide","get_json_page_guide|get_article_guide|get_docs_guide","create_page|create_article|create_doc"],"existing_content_refresh":["content_get_url_snapshot","gsc_get_ranked_keywords_by_url","seo_get_content_brief","seo_get_onpage_optimization for the exact stored page using its stable ID and the free cache read","allow paid live refresh only when the user explicitly asks for fresh competitor research","revise the existing owner without mechanically targeting phrase counts"],"publish":["publishing_get_readiness","publish_page","indexing_submit_indexnow with confirm_submit=false","indexing_submit_indexnow with confirm_submit=true if the user wants IndexNow notification"],"automated_drafting":["automation_list","automation_get for the config that shapes the drafts","automation_trigger","job_get_status until status is completed","list_pages with status=draft to review what was drafted"],"launch_audit":["publishing_get_launch_audit","linking_start_crawl if no recent crawl exists","publishing_get_launch_audit again"],"static_site_adapter":["get_data_mode_renderer_guide","content_get_inventory|content_search","adapter_get_static_site_plan","apply JSON/Markdown/route plan in the target repo","rerun target repo sitemap checks"]},"minimal_config":{"codex_cli":"codex mcp add pagegun --url https://mcp.pagegun.com --bearer-token-env-var PAGEGUN_API_KEY","mcp_json":{"mcpServers":{"pagegun":{"type":"http","url":"https://mcp.pagegun.com","headers":{"Authorization":"Bearer ${PAGEGUN_API_KEY}"}}}}},"warnings":["Publishing pushes a CDN snapshot. Run publishing_get_readiness first and clear its blockers; ask the user only when readiness returns requires_explicit_publish_approval=true.","Unpublish and delete tools are destructive and also require explicit approval.","Strategy and research tools are cache-first. Do not run live research unless the user asked for fresh research.","backlink_outreach_generate_pitches only returns opportunities and email-writing prompts; it does not write emails, send emails, or create approval state.","For JSON pages, define or inspect the effective content_schema before creating, updating, or publishing.","Renderer/build jobs should use PAGEGUN_CONTENT_KEY plus Data Mode CDN snapshots, not PAGEGUN_API_KEY, unless the job is intentionally mutating PageGun state.","Project creation runs homepage onboarding and is a two-step write. Call create_project once for a preview token, ask for explicit user approval, then call it again with confirm_create=true."]}