Skip to main content
Glama

Get page

get_page
Read-onlyIdempotent

One Content Studio page: its question, interview questions, plan and sections, the draft's checks, the draft as Markdown (in parts when long), and results once live. Read it after create_page to see the interview and plan, and before draft_page; to find pages use list_pages.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
brandYesBrand or study: its ID from list_brands, or its name (exact or a unique prefix).
cursorNomarkdown_next_cursor from the previous call, for the next part of a long draft.
page_idYesPage ID from list_pages.
include_preflightNoAlso run the publish preflight checks, which fetch the live page.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
generated_atYesRFC 3339 time the response was made.
schema_versionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / brand / minLength
      Added value: +1
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "markdown_next_cursor from the previous call, for the next part of a long draft.",
      +  "type": "string"
      +}
    • addedInput schema / properties / page_id / minLength
      Added value: +1
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "app_url": {
      +          "type": "string"
      +        },
      +        "brand": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "description": "The brand's website, or empty when none is set.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "name",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "content_type": {
      +          "type": "string"
      +        },
      +        "draft": {
      +          "additionalProperties": false,
      +          "description": "Set once drafting starts.",
      +          "properties": {
      +            "busy": {
      +              "description": "Sections are still being written; poll get_page.",
      +              "type": "boolean"
      +            },
      +            "failing_checks": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "type": "string"
      +                  },
      +                  "reason": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "label",
      +                  "reason"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "grade": {
      +              "description": "The draft's quality grade, A-F; empty until graded.",
      +              "type": "string"
      +            },
      +            "status": {
      +              "type": "string"
      +            },
      +            "summary": {
      +              "type": "string"
      +            },
      +            "unsupported_claims": {
      +              "description": "Sentences with no evidence behind them.",
      +              "type": "integer"
      +            },
      +            "version": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "version",
      +            "busy",
      +            "grade",
      +            "summary",
      +            "unsupported_claims",
      +            "failing_checks"
      +          ],
      +          "type": [
      +            "null",
      +            "object"
      +          ]
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "interview": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "questions": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "answer": {
      +                    "type": "string"
      +                  },
      +                  "kind": {
      +                    "description": "number, process, or example.",
      +                    "type": "string"
      +                  },
      +                  "question": {
      +                    "type": "string"
      +                  },
      +                  "question_id": {
      +                    "description": "Pass to answer_page_questions.",
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "description": "pending, answered, or skipped.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "question_id",
      +                  "kind",
      +                  "question",
      +                  "status",
      +                  "answer"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "status": {
      +              "description": "generating_questions (poll get_page), waiting_for_answers, or done.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "questions"
      +          ],
      +          "type": "object"
      +        },
      +        "markdown": {
      +          "description": "The draft as Markdown, or one part of it when markdown_next_cursor is set.",
      +          "type": "string"
      +        },
      +        "markdown_next_cursor": {
      +          "description": "Pass as cursor for the next part of the Markdown; empty when complete.",
      +          "type": "string"
      +        },
      +        "plan": {
      +          "additionalProperties": false,
      +          "description": "Set once the plan is ready.",
      +          "properties": {
      +            "angle": {
      +              "type": "string"
      +            },
      +            "format": {
      +              "type": "string"
      +            },
      +            "sections": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "error": {
      +                    "type": "string"
      +                  },
      +                  "heading": {
      +                    "type": "string"
      +                  },
      +                  "section_id": {
      +                    "description": "Pass to redraft_page_section.",
      +                    "type": "string"
      +                  },
      +                  "shape": {
      +                    "description": "prose, table, or list.",
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "description": "pending, drafting, drafted, or failed.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "section_id",
      +                  "heading",
      +                  "shape",
      +                  "status",
      +                  "error"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "angle",
      +            "format",
      +            "sections"
      +          ],
      +          "type": [
      +            "null",
      +            "object"
      +          ]
      +        },
      +        "plan_status": {
      +          "description": "none, interview (answer its questions), planning (the plan is being built), or ready (draft_page can write it).",
      +          "type": "string"
      +        },
      +        "poll_after_seconds": {
      +          "description": "While questions, the plan or the draft are being written, how long to wait before reading again; 0 otherwise.",
      +          "type": "integer"
      +        },
      +        "preflight": {
      +          "additionalProperties": false,
      +          "description": "Set when include_preflight was true.",
      +          "properties": {
      +            "checks": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "type": "string"
      +                  },
      +                  "reason": {
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "description": "pass, fail, or pending.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "label",
      +                  "status",
      +                  "reason"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "failing": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "failing",
      +            "checks"
      +          ],
      +          "type": [
      +            "null",
      +            "object"
      +          ]
      +        },
      +        "question": {
      +          "type": "string"
      +        },
      +        "results": {
      +          "additionalProperties": false,
      +          "description": "Set once the page is live.",
      +          "properties": {
      +            "answers": {
      +              "type": "integer"
      +            },
      +            "cited": {
      +              "type": "integer"
      +            },
      +            "day": {
      +              "description": "Days since it went live.",
      +              "type": "integer"
      +            },
      +            "first_citation_at": {
      +              "type": "string"
      +            },
      +            "live_at": {
      +              "type": "string"
      +            },
      +            "named": {
      +              "type": "integer"
      +            },
      +            "refresh_due_at": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "url",
      +            "live_at",
      +            "day",
      +            "answers",
      +            "named",
      +            "cited",
      +            "first_citation_at",
      +            "refresh_due_at"
      +          ],
      +          "type": [
      +            "null",
      +            "object"
      +          ]
      +        },
      +        "status": {
      +          "description": "draft, generating, generated, failed, published, or archived.",
      +          "type": "string"
      +        },
      +        "title": {
      +          "type": "string"
      +        },
      +        "tone": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "brand",
      +        "id",
      +        "title",
      +        "question",
      +        "content_type",
      +        "status",
      +        "plan_status",
      +        "tone",
      +        "interview",
      +        "plan",
      +        "draft",
      +        "markdown",
      +        "markdown_next_cursor",
      +        "results",
      +        "preflight",
      +        "app_url",
      +        "poll_after_seconds"
      +      ],
      +      "type": "object"
      +    },
      +    "generated_at": {
      +      "description": "RFC 3339 time the response was made.",
      +      "type": "string"
      +    },
      +    "schema_version": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "schema_version",
      +    "generated_at",
      +    "data"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds useful context beyond that: the draft is returned as Markdown 'in parts when long' (explaining the cursor pattern) and include_preflight notes that checks 'fetch the live page', which is a meaningful side effect. It stops short of detailing rate limits or auth, hence not a 5.

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, front-loaded with the returned payload before the workflow routing. The field enumeration is dense but earns its place by telling the agent what to expect, though it borders on a run-on list.

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 read tool with an output schema, the description correctly avoids re-explaining return values and instead covers when to call it and the pagination/branching behavior. Only minor gaps remain (e.g., no note on preflight cost or live-vs-draft behavior), but nothing critical is missing.

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 the schema fully documents brand, page_id, cursor, and include_preflight. The description echoes the long-draft pagination idea ('in parts when long') but adds no syntax or format detail beyond the schema. Baseline 3 is correct.

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?

States a specific verb+resource ('One Content Studio page') and then enumerates the fields it returns (question, interview questions, plan/sections, checks, Markdown draft, results), so an agent knows exactly what it retrieves. It is clearly distinguishable from list_pages, which it names as the discovery tool.

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

Usage Guidelines5/5

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

Explicit workflow routing: 'Read it after create_page to see the interview and plan, and before draft_page; to find pages use list_pages.' This gives when-to-use and names the alternative for the find case, leaving little to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources