noodlbox

Cypher Query

Execute graph queries against the knowledge graph

Query your code knowledge graph using Cypher. Read-only operations only.

Parameters

ParameterTypeRequiredDescription
repositorystringYesRepository name (e.g., "owner/repo")
cypherstringYesCypher query (read-only)
max_resultsnumberNoSafety limit for results (default: 10000, 0 = unlimited)

Supported Operations

SupportedNot Supported
MATCH, RETURN, WHERE, WITHCREATE, DELETE, SET
ORDER BY, LIMIT, SKIPMERGE, DROP, ALTER
=, <>, <, >, <=, >=STARTS WITH, ENDS WITH
AND, OR, NOT, CONTAINSIN, =~ (regex), IS NULL

Write operations (CREATE, DELETE, SET, MERGE) are blocked for safety.

Common Queries

Find functions by name

MATCH (s:CODE_SYMBOL)
WHERE s.kind = "Function"
  AND s.name CONTAINS "user"
RETURN s.name, s.file_path
LIMIT 20

Find callers of a function

MATCH (caller:CODE_SYMBOL)-[:CALLS]->(target:CODE_SYMBOL)
WHERE target.name = "authenticateUser"
RETURN caller.name, caller.file_path

Trace call chains

MATCH path = (start:CODE_SYMBOL)-[:CALLS*1..3]->(end:CODE_SYMBOL)
WHERE start.name = "handleRequest"
RETURN path
LIMIT 10

Find cross-community calls

MATCH (s1:CODE_SYMBOL)-[:MEMBER_OF]->(c1:COMMUNITY),
      (s2:CODE_SYMBOL)-[:MEMBER_OF]->(c2:COMMUNITY),
      (s1)-[:CALLS]->(s2)
WHERE c1 <> c2
RETURN c1.label, c2.label, count(*) as calls
ORDER BY calls DESC

List communities by size

MATCH (c:COMMUNITY)
RETURN c.label, c.size
ORDER BY c.size DESC
LIMIT 20

Find symbols in a file

MATCH (s:CODE_SYMBOL)
WHERE s.file_path CONTAINS "/auth/"
RETURN s.name, s.kind, s.file_path

Workarounds for Unsupported Operators

Instead of...Use...
WHERE s.name STARTS WITH "get"WHERE s.name CONTAINS "get"
WHERE s.kind IN ["Function", "Class"]WHERE s.kind = "Function" OR s.kind = "Class"
WHERE s.name =~ ".*User.*"WHERE s.name CONTAINS "User"

Query Patterns

To get...Query pattern
Symbols onlyMATCH (s:CODE_SYMBOL) RETURN s.name, s.content
Symbols + callersMATCH (caller)-[:CALLS]->(s:CODE_SYMBOL) RETURN s, caller
Symbols + calleesMATCH (s:CODE_SYMBOL)-[:CALLS]->(callee) RETURN s, callee
Full relationshipsMATCH (s:CODE_SYMBOL)-[r]->(target) RETURN s, r, target

Tips

  • Always use LIMIT to avoid large result sets
  • Filter early with WHERE for better performance
  • Specify node labels: CODE_SYMBOL, FILE, COMMUNITY, PROCESS
  • Use max_results as a safety net (the query's LIMIT takes precedence)

On this page