list_nodes
List entities with filtering, edge inclusion, count-only mode, and pagination. For graph-wide edge enumeration, prefer `export_edges` (flat) or `query` (traversal). `list_nodes(include_edges:true)` is for entity-scoped reads.
Arguments
typestringoptionalFilter by entity type
statusstringoptionalFilter by status value
tagsarrayoptionalFilter by tags (matches any)
parent_idstringoptionalFilter to children of this node (connected by outgoing edge from parent)
include_edgesbooleanoptionalInclude compact edge data (id, type, source, target) per node
count_onlybooleanoptionalReturn only the total count, no node data
offsetnumberoptionalSkip N results (default 0)
limitnumberoptionalMax results (default 50, max 200)
if_changed_sincestringoptionalHash from a previous response. Returns { changed: false } if graph unchanged.
Returns
{ nodes, total, offset, limit, _hash }count_only: true, returns { total, _hash } only.degraded block when the response was auto-trimmed to fit.Examples
Live call against the Notion example graph.
Output
{
"nodes": [
{
"id": "ec3d5479-4947-4bd9-9e77-b5ee01beb851",
"type": "product",
"title": "Notion (SATURATED test graph)"
},
{
"id": "1c051617-6cb7-4a59-b0a1-7779f404145b",
"type": "capability",
"title": "Real-time multi-cursor collaboration"
},
{
"id": "478852b7-ca46-4bdd-85fa-cd2334b9565d",
"type": "capability",
"title": "Block-based composable editing"
},
{
"id": "0904ef52-cc7e-4bcd-9c9d-0072beb28878",
"type": "capability",
"title": "Tree-inherited permissions"
},
{
"id": "f8ce72c1-af1a-48ba-945e-72e08c5aeeb5",
"type": "capability",
"title": "Permission-aware AI grounding"
},
{
"id": "4dffea49-4122-4599-858c-f3c2f0c3e5c4",
"type": "value_stream",
"title": "Personal → Team conversion stream"
},
{
"id": "9d03304e-8beb-4734-845b-1bc3c07ce20c",
"type": "decision",
"title": "Build Frankfurt region (not partner)"
},
{
"id": "6ea52729-4462-4fc0-b2a1-0c7e2c0362b2",
"type": "evidence",
"title": "Self-hostable waitlist: 1.2k signups, 0% paid intent"
},
{
"id": "3f1c1804-b33b-4b1f-9094-c91cc8957912",
"type": "assumption",
"title": "Teams prefer one tool over a stack of four"
},
{
"id": "6719fce7-61e7-44df-b6cf-92f7c7312554",
"type":
… (truncated)Warnings
Pre-flight payload guardrail: refuses with a steering error when the estimated response exceeds `UPG_MCP_PAYLOAD_HARD_LIMIT` (default 150 KB), and attaches a `_warning` field above `UPG_MCP_PAYLOAD_SOFT_LIMIT` (default 50 KB). For graph-wide reads, prefer `query` with a tight projection.
Auto-degrade: between the soft and hard limits, the response is automatically truncated. Surfaced as `degraded.applied: ['truncate_at_count_auto']` on the response.