Skip to main content
Glama

explore_graph

Read-onlyIdempotent

Explore document graph relations: traverse one document's neighbors without a query, or rank relations from multiple seed document IDs with optional query text to find related content.

Instructions

Explore graph relations from readable seed documents. mode=neighbors traverses one document without a query; mode=search ranks relations from one or more seed IDs with optional query text.

Input Schema

NameRequiredDescriptionDefault
modeNo
limitNoMaximum results to return, up to 100.
queryNoOptional graph relevance query, at most 2000 characters.
docIdsNoOne to 50 authorized seed document UUIDs.
documentIdNoUUID returned by the corresponding list or read operation.
workspaceIdNoWorkspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv2.1.1
    • removedInput schema / properties / limit / anyOf
      Removed value: -[
      -  {
      -    "description": "Maximum results to return, up to 100.",
      -    "maximum": 100,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "description": "Maximum results to return, up to 100.",
      -    "maximum": 100,
      -    "minimum": 1,
      -    "type": "integer"
      -  }
      -]
    • addedInput schema / properties / limit / description
      Added value: +"Maximum results to return, up to 100."
    • addedInput schema / properties / limit / maximum
      Added value: +100
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • addedInput schema / properties / limit / type
      Added value: +"integer"
  2. Changed2 schema fields changedv2.0.4
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "docIds"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "query"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "documentId": {
      -        "description": "UUID returned by the corresponding list or read operation.",
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "limit": {
      -        "description": "Maximum results to return, up to 100.",
      -        "maximum": 100,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "mode": {
      -        "const": "neighbors",
      -        "description": "Select the neighbors operation explicitly.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "documentId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "documentId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "docIds": {
      -        "description": "One to 50 authorized seed document UUIDs.",
      -        "items": {
      -          "description": "UUID returned by the corresponding list or read operation.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 50,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "limit": {
      -        "description": "Maximum results to return, up to 100.",
      -        "maximum": 100,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "mode": {
      -        "const": "search",
      -        "description": "Select the search operation explicitly.",
      -        "type": "string"
      -      },
      -      "query": {
      -        "description": "Optional graph relevance query, at most 2000 characters.",
      -        "maxLength": 2000,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "docIds"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "docIds"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "query"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "documentId": {
      +        "description": "UUID returned by the corresponding list or read operation.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "description": "Maximum results to return, up to 100.",
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "mode": {
      +        "const": "neighbors",
      +        "description": "Select the neighbors operation explicitly.",
      +        "type": "string"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "documentId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "documentId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "docIds": {
      +        "description": "One to 50 authorized seed document UUIDs.",
      +        "items": {
      +          "description": "UUID returned by the corresponding list or read operation.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 50,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "limit": {
      +        "description": "Maximum results to return, up to 100.",
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "mode": {
      +        "const": "search",
      +        "description": "Select the search operation explicitly.",
      +        "type": "string"
      +      },
      +      "query": {
      +        "description": "Optional graph relevance query, at most 2000 characters.",
      +        "maxLength": 2000,
      +        "type": "string"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "docIds"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / workspaceId
      Added value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
  3. Changed3 schema fields changedv1.0.3
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "documentId": {
      -        "description": "UUID returned by the corresponding list or read operation.",
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "limit": {
      -        "description": "Maximum results to return, up to 100.",
      -        "maximum": 100,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "mode": {
      -        "const": "neighbors",
      -        "description": "Select the neighbors operation explicitly.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "documentId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "docIds": {
      -        "description": "One to 50 authorized seed document UUIDs.",
      -        "items": {
      -          "description": "UUID returned by the corresponding list or read operation.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 50,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "limit": {
      -        "description": "Maximum results to return, up to 100.",
      -        "maximum": 100,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "mode": {
      -        "const": "search",
      -        "description": "Select the search operation explicitly.",
      -        "type": "string"
      -      },
      -      "query": {
      -        "description": "Optional graph relevance query, at most 2000 characters.",
      -        "maxLength": 2000,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "mode",
      -      "docIds"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "docIds"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "query"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "documentId": {
      +        "description": "UUID returned by the corresponding list or read operation.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "description": "Maximum results to return, up to 100.",
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "mode": {
      +        "const": "neighbors",
      +        "description": "Select the neighbors operation explicitly.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "documentId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "documentId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "docIds": {
      +        "description": "One to 50 authorized seed document UUIDs.",
      +        "items": {
      +          "description": "UUID returned by the corresponding list or read operation.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 50,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "limit": {
      +        "description": "Maximum results to return, up to 100.",
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "mode": {
      +        "const": "search",
      +        "description": "Select the search operation explicitly.",
      +        "type": "string"
      +      },
      +      "query": {
      +        "description": "Optional graph relevance query, at most 2000 characters.",
      +        "maxLength": 2000,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "docIds"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties
      Added value: +{
      +  "docIds": {
      +    "description": "One to 50 authorized seed document UUIDs.",
      +    "items": {
      +      "description": "UUID returned by the corresponding list or read operation.",
      +      "format": "uuid",
      +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +      "type": "string"
      +    },
      +    "maxItems": 50,
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  "documentId": {
      +    "description": "UUID returned by the corresponding list or read operation.",
      +    "format": "uuid",
      +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +    "type": "string"
      +  },
      +  "limit": {
      +    "anyOf": [
      +      {
      +        "description": "Maximum results to return, up to 100.",
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      {
      +        "description": "Maximum results to return, up to 100.",
      +        "maximum": 100,
      +        "minimum": 1,
      +        "type": "integer"
      +      }
      +    ]
      +  },
      +  "mode": {
      +    "anyOf": [
      +      {
      +        "const": "neighbors",
      +        "description": "Select the neighbors operation explicitly.",
      +        "type": "string"
      +      },
      +      {
      +        "const": "search",
      +        "description": "Select the search operation explicitly.",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  "query": {
      +    "description": "Optional graph relevance query, at most 2000 characters.",
      +    "maxLength": 2000,
      +    "type": "string"
      +  }
      +}
  4. Addedv0.1.2

TDQS

A4.3/5.0
Behavior4/5

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

While annotations provide safety hints like 'readOnlyHint: true,' the description adds critical behavioral detail about the differing internal operations of the two modes, outlining how each mode functions.

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 a single, information-dense sentence that effectively covers the tool's core functionality and its primary behavioral split between modes without any filler.

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?

The description successfully simplifies the complex `oneOf` schema structure by framing the tool around its two distinct behavioral modes (neighbors and search), making it highly actionable for an agent.

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?

Given the high schema description coverage (83%), the baseline score applies. The description adds semantic value by explaining the functional difference between the `mode` arguments (neighbors vs search) rather than redundant parameter definitions.

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 clearly identifies the tool's purpose as exploring graph relations from readable seed documents. It distinguishes between two operational modes: traversal (neighbors) and ranked search (search).

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?

It specifies the functional criteria for selecting either mode: 'neighbors traverses one document without a query,' versus 'search ranks relations... with optional query text.' This guides the agent on when to use which specific configuration.

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