Skip to main content
Glama

List pages in a project

seo_rows_list
Read-onlyIdempotent

Returns a page of rows (individual generated pages) with slug, target keyword and status. Statuses are PENDING (no content yet), GENERATING, GENERATED (draft), REVIEWED (approved), PUBLISHED (live), FAILED, FLAGGED_DUPLICATE. Content bodies are NOT included — this is a listing, not an export. Use sort:'risk' to get the review queue ordered by risk score (duplicates and pages with QA findings first) so a human reviews the riskiest pages before bulk-approving the safe ones. Costs 3c per call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sortNo'risk' returns pages ordered by review risk (highest first), each with a score, band and human-readable reasons. Omit for creation order.
limitNoHow many rows to return, 1-200. Defaults to 50. Values above 200 are rejected — page through instead of asking for everything.
statusNoOptional exact status filter. Omit for all statuses. Must be one of the listed values, uppercase.
projectIdYesThe project id, exactly as returned by seo_project_list (a cuid such as 'cmtjyi1q20000l204octn48ai'). Not the slug, not the display name. If you do not have one, call seo_project_list first.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsYes
limitYes
returnedYesHow many rows came back; compare with limit to detect more pages.
projectIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / sort
      Added value: +{
      +  "description": "'risk' returns pages ordered by review risk (highest first), each with a score, band and human-readable reasons. Omit for creation order.",
      +  "enum": [
      +    "createdAt",
      +    "risk"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / rows / items / properties / risk
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present only when sort:'risk'.",
      +  "properties": {
      +    "band": {
      +      "enum": [
      +        "high",
      +        "medium",
      +        "low"
      +      ],
      +      "type": "string"
      +    },
      +    "reasons": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "score": {
      +      "maximum": 100,
      +      "minimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "score",
      +    "band",
      +    "reasons"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive; the description adds the cost of 3c per call, which is not present in the annotations, and clarifies that content bodies are excluded. It also explains status semantics and the risk sort behavior, all beyond structured fields. No contradiction with annotations.

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?

The description is three sentences, front-loads the core function, and each sentence adds distinct value – outcome, status semantics, exclusion of content, the risk-sort workflow, and cost. No filler or repetition; structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with an output schema and full parameter descriptions, the description is remarkably complete: it covers cost, status domain, sort behavior, and what is not returned. It even gives a practical review workflow. No important operational aspect an agent needs is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters are already described in the schema (100% coverage), so the baseline is 3. The description adds meaning by interpreting the status enum values ('PENDING (no content yet), GENERATING, GENERATED (draft)...') and by explaining the purpose of sort:'risk' as a review queue. This goes beyond the schema's bare enum listing.

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?

The description opens with 'Returns a page of rows (individual generated pages) with slug, target keyword and status', naming the specific resource and output fields. It further distinguishes itself from an export by saying 'Content bodies are NOT included — this is a listing, not an export.' This clearly differentiates it from sibling tools like seo_content_generate or seo_publish.

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

Usage Guidelines4/5

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

The description gives concrete guidance for its main niche: 'Use sort:''risk'' to get the review queue ordered by risk score... so a human reviews the riskiest pages before bulk-approving the safe ones.' It also states what it does not do ('not an export'), but it never names a specific alternative tool for content export or other actions, so the routing is clear but not exhaustive.

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