Skip to main content
Glama

list_entities

Read-only

Entities with their frontmatter's short facts, in address order or newest first. Use to browse, or for what runs on a date, came last or has a value; to find by words use search. Input: optional type, owner, order, on, by, where, fields, limit, cursor. Returns entities with fields, and page; follow page.nextCursor while page.hasMore.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
byNoA date field, such as start or decided, to order by in the direction order names
onNoA date, YYYY, YYYY-MM or YYYY-MM-DD: keep the entities whose period, start to end, holds it; an absent end is still running
typeNoA type, to keep its entities; leave it out to list every type
limitNoEntries per page: 50 by default, clamped to 1–200, so 0 returns one entry and 1000 returns 200.
orderNoaddress, where the pages sit, by default; newest or oldest, by when each entity came into the model, or by the date `by` names
ownerNoAn owner's id or address, to keep its entities
whereNoField values to keep, ignoring case, by field name; a reference matches by the name its page writes
cursorNo`page.nextCursor` from the previous answer, sent with the same arguments; omit it for the first page.
fieldsNoFields to add by name beside the short ones every entity carries, such as an array

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageYes
typeYes
modelYes
entitiesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / by
      Added value: +{
      +  "description": "A date field, such as start or decided, to order by in the direction order names",
      +  "type": "string"
      +}
    • addedInput schema / properties / fields
      Added value: +{
      +  "description": "Fields to add by name beside the short ones every entity carries, such as an array",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / on
      Added value: +{
      +  "description": "A date, YYYY, YYYY-MM or YYYY-MM-DD: keep the entities whose period, start to end, holds it; an absent end is still running",
      +  "type": "string"
      +}
    • changedInput schema / properties / order / description
      Previous value: -"address, where the pages sit, by default; newest or oldest, by when each entity came into the model"New value: +"address, where the pages sit, by default; newest or oldest, by when each entity came into the model, or by the date `by` names"
    • addedInput schema / properties / where
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "Field values to keep, ignoring case, by field name; a reference matches by the name its page writes",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / entities / items / properties / fields
      Added value: +{
      +  "additionalProperties": {
      +    "anyOf": [
      +      {
      +        "type": [
      +          "string",
      +          "number",
      +          "boolean"
      +        ]
      +      },
      +      {
      +        "items": {
      +          "type": [
      +            "string",
      +            "number",
      +            "boolean"
      +          ]
      +        },
      +        "type": "array"
      +      }
      +    ]
      +  },
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / properties / entities / items / required
      Previous value: -[
      -  "id",
      -  "type",
      -  "name",
      -  "tagline",
      -  "owner"
      -]New value: +[
      +  "id",
      +  "type",
      +  "name",
      +  "tagline",
      +  "owner",
      +  "fields"
      +]
  2. Changed5 schema fields changed
    • addedInput schema / properties / order
      Added value: +{
      +  "description": "address, where the pages sit, by default; newest or oldest, by when each entity came into the model",
      +  "enum": [
      +    "address",
      +    "newest",
      +    "oldest"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / type / description
      Added value: +"A type, to keep its entities; leave it out to list every type"
    • removedInput schema / required
      Removed value: -[
      -  "type"
      -]
    • addedOutput schema / properties / entities / items / properties / created
      Added value: +{
      +  "format": "date-time",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +  "type": "string"
      +}
    • changedOutput schema / properties / type / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / owner / description
      Previous value: -"An owner's id, to keep its entities"New value: +"An owner's id or address, to keep its entities"
  4. Changed2 schema fields changed
    • addedInput schema / properties / cursor / description
      Added value: +"`page.nextCursor` from the previous answer, sent with the same arguments; omit it for the first page."
    • addedInput schema / properties / limit / description
      Added value: +"Entries per page: 50 by default, clamped to 1–200, so 0 returns one entry and 1000 returns 200."
  5. Changed8 schema fields changed
    • addedInput schema / properties / cursor
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / owner
      Added value: +{
      +  "description": "An owner's id, to keep its entities",
      +  "type": "string"
      +}
    • changedOutput schema / additionalProperties
      Previous value: -{}New value: +false
    • addedOutput schema / properties / entities
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "owner": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "tagline": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "name",
      +      "tagline",
      +      "owner"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / page
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "hasMore": {
      +      "type": "boolean"
      +    },
      +    "nextCursor": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "returned": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "total": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "returned",
      +    "hasMore",
      +    "nextCursor"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / type
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "model"
      -]New value: +[
      +  "type",
      +  "entities",
      +  "page",
      +  "model"
      +]
  6. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: the return contains `entities` with `fields` and a `page`, and the caller should loop on `page.nextCursor` while `page.hasMore` — a pagination contract not implied by the annotations. It says nothing about auth needs or rate limits, which are low-stakes for a read.

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?

Three tightly packed sentences with no filler, and the core behavior plus pagination contract are front-loaded. The telegraphic, fragment-heavy style occasionally costs clarity, but nothing is wasted and it is appropriately sized for a 9-parameter tool.

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?

With an output schema present, the description need not explain return values, yet it still summarizes the response and the pagination loop, and all 9 parameters are fully documented in the schema. It covers sibling routing ('use search'), ordering defaults, and cursor usage; only permission scope and ties to specific siblings like get_entity are unaddressed.

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 already explains every parameter (on, by, order, where, limit, cursor, fields) in detail. The description merely re-lists the parameter names without adding format, defaults, or interaction rules beyond what the schema states, so the baseline 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?

States the specific resource (entities) and the shape of the return (short facts from frontmatter, in a defined order), so the agent knows this is a listing/browse operation rather than a lookup. It also implicitly distinguishes itself from `search` by directing word-based retrieval elsewhere, though it does not name other list siblings (list_types, list_rules, list_checks).

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?

Gives concrete conditions: use to browse, use for what runs on a date, what came last, or what has a value. It explicitly names the alternative for a different need ('to find by words use search'), which is real routing guidance. It stops short of stating exclusions or prerequisites (e.g., permission scope, when get_entity is preferable for a single item).

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