get_content_map

get_content_map MCP tool: the content plan's pages by theme, pillar first then satellites, with their state, and the internal links the plan calls for, placed or missing at the latest crawl.

Updated 2026-10-19

get_content_map returns the map of the content plan, the same one the Themes tab of the Action plan draws. Each business theme lists its pages, pillar first, then its satellites, with the state of each: already doing its job, to rework, to create, or done. Next to the pages, the internal links the plan calls for between them, each checked against the latest crawl of the site.

When to use

When an agent needs the structure rather than the to-do: "which pages hang under this pillar?", "which internal links are still missing?". For the order of work, use list_content_plan.

Input

Field Type Default Description
projectId string (CUID) required Project scope.

Response

{
  "success": true,
  "themes": [
    {
      "theme": "CRM for freelancers",
      "pages": [
        {
          "id": "page:example.com/crm-pricing",
          "role": "pillar",
          "parent": null,
          "state": "rework",
          "action": "rework",
          "format": "offer_page",
          "url": "https://example.com/crm-pricing",
          "slug": null,
          "mainQuery": "crm for freelancers",
          "score": 61.3
        },
        {
          "id": "content:best-crm-for-freelancers",
          "role": "satellite",
          "parent": "page:example.com/crm-pricing",
          "state": "create",
          "action": "create",
          "format": "listicle",
          "url": null,
          "slug": "best-crm-for-freelancers",
          "mainQuery": "best crm for freelancers",
          "score": 42.7
        }
      ]
    }
  ],
  "links": [
    { "from": "content:best-crm-for-freelancers", "to": "page:example.com/crm-pricing", "state": "planned" }
  ],
  "crawledAt": "2026-10-01T04:00:00.000Z"
}
  • Themes come in business order, the order the strategist chose them in.
  • state: exists (the page already does its job, nothing to do), rework (rework, merge or split), create, done. Excluded pages are left out.
  • links[].state: placed (the link is on the site at the latest crawl), missing (both pages exist, the link does not), planned (one of the two pages is still to create), unknown (no readable crawl).
  • crawledAt: date of the crawl the links were checked against, null without a crawl.
  • Anchors stay on the server, like the rest of the writing brief.
  • No strategy computed yet: { "success": false, "error": "no_content_plan" }.

Tips and patterns

  • Quick internal linking wins. missing links join two existing pages: adding them takes minutes and needs no new content.
  • Read a mission's place. A page id here is the same as in list_content_plan: pass it to get_content_mission for its reason.

Related tools

You can see where you stand today.

Free trial. Start tracking your AI visibility, no credit card.