Skip to main content
Glama
kush-coder

io.github.OpenOSINT/openosint

by kush-coder

graph_neighbors

Traverse the FollowTheMoney entity graph from a given entity ID out to a chosen depth, returning connected entities, edges, and per-edge provenance. Optionally surface bridge links into the raw infrastructure graph.

Instructions

Traverse the FollowTheMoney entity graph from one entity id out to a given depth, returning entities, edges, and per-edge provenance (collection method, confidence, run id). Set cross_layer=true to also surface bridge links into the raw infra correlation graph (IPs, domains, hashes). Requires the 'graph' extra: pip install 'openosint[graph]'. [passive] Reads the local graph database only.

Input Schema

NameRequiredDescriptionDefault
depthNoHops to traverse (default 1, capped at 5).
entity_idYes
cross_layerNoInclude bridge links into the raw infra graph.
json_outputNoReturn result as structured JSON.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.36.1

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and largely meets it: it marks the operation as passive, states it reads the local graph database only (no network), discloses the install-time dependency, and enumerates the return shape. It stops short of stating result-size limits, pagination, or what happens when the entity id is absent from the graph.

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 dense sentences, front-loaded with the core traversal behavior before the cross_layer option, dependency note, and safety marker. Every clause carries information, though the closing '[passive]' fragment is terse to the point of being cryptic.

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?

No output schema exists, so the description must cover returns, and it does by naming entities, edges, and the per-edge provenance fields. Combined with the dependency note and the cross_layer explanation, an agent has enough to invoke it correctly; only cardinality/limits are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and entity_id has no schema description, so the description meaningfully compensates by identifying it as a FollowTheMoney entity id. It also enriches cross_layer beyond the schema's one-liner by naming what the bridge links actually are (IPs, domains, hashes), while depth's cap is already documented in the schema.

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?

States a specific verb (traverse), the exact resource (FollowTheMoney entity graph), the entry point (one entity id), the scope (to a given depth), and what comes back (entities, edges, per-edge provenance). This is clearly distinguishable from the search_* siblings, which are external lookups, and from graph_export/graph_review_candidates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one explicit conditional: set cross_layer=true to reach the raw infra correlation graph, and it notes the 'graph' extra prerequisite. However, it never routes the agent among the sibling graph tools (graph_export, graph_review_candidates) or explains when a neighbor traversal beats a fresh external search, leaving the core when-to-use decision to inference.

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