Raw schema
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1,
"description": "Project id from init/list_projects. Omit for the active project."
},
"repository": {
"type": "string",
"minLength": 1,
"description": "Repository full name, e.g. \"owner/repo\". Omit when the project has one repository."
},
"commitSha": {
"description": "Pin reads to one indexed revision (7-40 hex). Graph tools error with revision_not_indexed when it is not an indexed revision of the scoped repository, or revision_not_servable when that revision's graph was superseded by a later reindex, and echo the revision served back as commitSha; source ops read git objects, so any commit works there. Exception: a kept revision (revisions rows flagged architectureSnapshot) still serves map view:\"architecture\" as a preserved snapshot.",
"type": "string",
"pattern": "^[0-9a-fA-F]{7,40}$"
},
"kind": {
"default": "callers",
"description": "Relationship to traverse. See the tool description for each kind.",
"type": "string",
"enum": [
"callers",
"dependencies",
"blast_radius",
"implementers",
"heritage",
"chain",
"path"
]
},
"selectors": {
"description": "Symbols to traverse from (1-10). heritage uses selectors[0]; chain: OR nodeId.",
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"nodeId": {
"description": "Graph node id from a prior result.",
"type": "string",
"minLength": 1
},
"symbol": {
"description": "Symbol name, e.g. a function or class name.",
"type": "string",
"minLength": 1
},
"symbolPath": {
"description": "Full symbolPath as find_node/locate returns.",
"type": "string",
"minLength": 1
},
"filePath": {
"description": "Repo-relative file path holding the symbol.",
"type": "string",
"minLength": 1
}
}
}
},
"limit": {
"description": "Per-selector candidate cap (not heritage/chain).",
"default": 5,
"type": "integer",
"minimum": 1,
"maximum": 20
},
"includeCrossRepo": {
"description": "Walk cross-repo edges. Default true for blast_radius, false otherwise.",
"type": "boolean"
},
"expansionLimit": {
"description": "Caps returned count (not heritage/chain). Default 15.",
"default": 15,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"intent": {
"description": "Rerank by trigram similarity (not heritage/chain).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"granularity": {
"description": "callers/blast_radius. 'file' one row/file, 'site' one row/node.",
"default": "file",
"type": "string",
"enum": [
"file",
"site"
]
},
"minimal": {
"description": "{id,name,filePath,startLine}-only, ~50% cheaper; not heritage/chain.",
"default": false,
"type": "boolean"
},
"minimalImplementers": {
"description": "Alias of minimal for implementers.",
"default": false,
"type": "boolean"
},
"maxDepth": {
"description": "Max depth for heritage; also caps the kind:path walk (clamped to <=6).",
"type": "integer",
"minimum": 1,
"maximum": 10
},
"nodeId": {
"description": "Start node for chain (OR selectors[0]).",
"type": "string",
"minLength": 1
},
"direction": {
"description": "chain. 'downstream' leaves, 'upstream' entry points, 'both' (default).",
"default": "both",
"type": "string",
"enum": [
"upstream",
"downstream",
"both"
]
},
"depth": {
"description": "chain. Chain length.",
"type": "integer",
"minimum": 1,
"maximum": 6
},
"edgeFilter": {
"description": "chain. 'calls' | 'imports' | 'calls_imports' (default).",
"default": "calls_imports",
"type": "string",
"enum": [
"calls",
"imports",
"calls_imports"
]
},
"terminalFilter": {
"description": "chain. Restrict to paths ending at a node matching this.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"maxPaths": {
"description": "chain. Cap on returned paths.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"followPolymorphism": {
"description": "chain. Walk polymorphic dispatch edges (default false; untraversed hops in polymorphicBranchPoints).",
"type": "boolean"
},
"landmarkFilter": {
"description": "chain. Keep only paths through a node matching this.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"pruneSetupMethods": {
"description": "chain. Drop framework bootstrap steps.",
"type": "boolean"
},
"staysWithinClass": {
"description": "chain. Surface intra-class dispatch order.",
"type": "boolean"
},
"feedback": {
"description": "Optional: report how a previous answer worked out; piggybacks on any call.",
"type": "object",
"properties": {
"answerId": {
"type": "string",
"minLength": 36,
"maxLength": 36,
"description": "answer_id from a previous ask_codebase response"
},
"outcome": {
"type": "string",
"enum": [
"useful",
"dead_end",
"corrected"
],
"description": "How the answer worked out."
},
"correction": {
"description": "Only when the user corrected the answer",
"type": "string",
"maxLength": 2000
}
},
"required": [
"answerId",
"outcome"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}