Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/davide-desio-eleva/kirograph/llms.txt

Use this file to discover all available pages before exploring further.

KiroGraph’s data module indexes structured data files alongside your source code so the agent can query rows, compute aggregations, join datasets, and detect quality issues — all without loading raw data into the context window. Every computation runs in SQLite; only the result enters the model’s context. All tools require enableData: true in .kirograph/config.json.
Supported file formats: CSV, JSON (array-of-objects), Excel (.xlsx/.xls), Parquet, and PDF (table extraction). Files are discovered automatically during kirograph index. Re-run kirograph data reindex after adding or updating data files.
The hard row cap for kirograph_data_query and kirograph_data_join is 500 rows. If you need summary statistics over millions of rows, use kirograph_data_aggregate instead — all computation stays in SQLite and only the group results enter the context.

kirograph_data_list

List all indexed datasets with their file paths, formats, row counts, column counts, and sizes. Use this as your first call to discover what data is available and to obtain dataset IDs for subsequent tools.
projectPath
string
Project root path. Defaults to the current working directory.
Example
{
  "tool": "kirograph_data_list",
  "arguments": {}
}
Example output
orders (csv)
  File: data/orders.csv
  Rows: 142,500 | Columns: 12 | Size: 8.34 MB

users (csv)
  File: data/users.csv
  Rows: 28,000 | Columns: 7 | Size: 1.21 MB

kirograph_data_describe

Return a full schema profile for a dataset: column names, inferred types, cardinality, null percentages, min/max values, sample values, and any inferred validation rules. Pass column for a deep-dive on a single column.
dataset
string
required
Dataset ID from kirograph_data_list.
column
string
Column name for a single-column deep-dive (type, cardinality, null rate, min, max, mean, samples).
projectPath
string
Project root path. Defaults to the current working directory.
{
  "tool": "kirograph_data_describe",
  "arguments": { "dataset": "orders" }
}

kirograph_data_query

Retrieve filtered rows from a dataset. Multiple filters are ANDed together. Supports a rich set of operators and column projection to minimise context usage.
dataset
string
required
Dataset ID from kirograph_data_list.
filters
array
Array of filter objects: { "column": "status", "op": "eq", "value": "active" }.Available operators: eq, neq, gt, gte, lt, lte, contains, in, is_null, between.
columns
string[]
Column projection — only these columns are returned. Defaults to all columns.
limit
number
Maximum rows to return. Defaults to 100; hard-capped at 500.
offset
number
Pagination offset. Defaults to 0.
projectPath
string
Project root path. Defaults to the current working directory.
Example: recent high-value orders
{
  "tool": "kirograph_data_query",
  "arguments": {
    "dataset": "orders",
    "filters": [
      { "column": "status", "op": "eq", "value": "completed" },
      { "column": "amount", "op": "gte", "value": 1000 }
    ],
    "columns": ["order_id", "user_id", "amount", "created_at"],
    "limit": 50
  }
}

kirograph_data_aggregate

Server-side GROUP BY aggregation entirely within SQLite — only the group results enter the context window. Essential for summarising large datasets without pagination.
dataset
string
required
Dataset ID from kirograph_data_list.
groupBy
string[]
required
Columns to group by.
metrics
array
required
Array of metric objects: { "column": "amount", "op": "sum" }.Available ops: count, sum, avg, min, max, count_distinct.
filters
array
Pre-aggregation row filters (same format as kirograph_data_query).
projectPath
string
Project root path. Defaults to the current working directory.
Example: total revenue per status
{
  "tool": "kirograph_data_aggregate",
  "arguments": {
    "dataset": "orders",
    "groupBy": ["status"],
    "metrics": [
      { "column": "amount", "op": "sum" },
      { "column": "order_id", "op": "count" }
    ]
  }
}
Example output
status | sum(amount) | count(order_id)
--- | --- | ---
completed | 4821300.00 | 98200
refunded | 43200.00 | 720
pending | 182000.00 | 3580

Search column names and sample values within a dataset by keyword. Useful for discovering which columns hold a particular type of data when you don’t know the schema upfront.
dataset
string
required
Dataset ID from kirograph_data_list.
query
string
required
Search keyword to match against column names and sample values.
projectPath
string
Project root path. Defaults to the current working directory.
Example: find columns related to email
{
  "tool": "kirograph_data_search",
  "arguments": { "dataset": "users", "query": "email" }
}

kirograph_data_join

SQL JOIN across two indexed datasets using a shared key column. Results are capped at 500 rows; use columns projection to control context size.
left
string
required
Left dataset ID.
right
string
required
Right dataset ID.
leftColumn
string
required
Join column from the left dataset.
rightColumn
string
required
Join column from the right dataset.
type
string
Join type: inner (default), left, or right.
columns
string[]
Column projection. Prefix column names with the dataset ID to disambiguate (e.g. orders.amount).
limit
number
Maximum rows. Hard-capped at 500.
projectPath
string
Project root path. Defaults to the current working directory.
Example: join orders with users
{
  "tool": "kirograph_data_join",
  "arguments": {
    "left": "orders",
    "right": "users",
    "leftColumn": "user_id",
    "rightColumn": "id",
    "type": "inner",
    "columns": ["orders.order_id", "users.email", "orders.amount"],
    "limit": 100
  }
}

kirograph_data_correlations

Compute pairwise Pearson correlations between all numeric columns in a dataset. Only pairs with an absolute correlation above threshold are returned.
dataset
string
required
Dataset ID from kirograph_data_list.
threshold
number
Minimum absolute correlation to include. Defaults to 0.3.
projectPath
string
Project root path. Defaults to the current working directory.
Example: strong correlations in orders
{
  "tool": "kirograph_data_correlations",
  "arguments": { "dataset": "orders", "threshold": 0.5 }
}
Example output
Correlations for "orders" (threshold: 0.5):

amount ↔ item_count: +0.7812 (strong)
discount ↔ amount: -0.5234 (moderate)

kirograph_data_quality

Data quality triage: ranks columns by a composite risk score derived from null rates, cardinality anomalies, and type mismatches. Returns only the columns with issues.
dataset
string
required
Dataset ID from kirograph_data_list.
projectPath
string
Project root path. Defaults to the current working directory.
Example
{
  "tool": "kirograph_data_quality",
  "arguments": { "dataset": "orders" }
}
Example output
Quality report for "orders" (3 columns with issues):

shipping_address (risk: 42%): 42% null values; low cardinality anomaly
promo_code (risk: 28%): 28% null values
discount (risk: 15%): type mismatch — mixed integer and float values

kirograph_data_drift

Detect schema drift by comparing the current dataset profile against the most recently recorded snapshot. Reports added/removed columns, type changes, and row count deltas.
dataset
string
required
Dataset ID from kirograph_data_list.
projectPath
string
Project root path. Defaults to the current working directory.
Example
{
  "tool": "kirograph_data_drift",
  "arguments": { "dataset": "orders" }
}

kirograph_data_history

Return a chronological list of schema snapshots for a dataset. Each snapshot records the column schema, row count, and the timestamp when it was captured during indexing. Use this to understand how a dataset has evolved over time.
dataset
string
required
Dataset ID from kirograph_data_list.
limit
number
Maximum number of snapshots to return. Defaults to 10, capped at 50.
projectPath
string
Project root path. Defaults to the current working directory.
Example
{
  "tool": "kirograph_data_history",
  "arguments": { "dataset": "orders", "limit": 5 }
}
Example output
Schema history for "orders" (3 snapshot(s)):

2025-06-15 09:14:02  rows: 142,500  cols: 12  schema: order_id, user_id, amount, status, ...
2025-05-01 08:30:11  rows: 118,200  cols: 11  schema: order_id, user_id, amount, status, ...
2025-03-10 07:55:44  rows: 92,000   cols: 11  schema: order_id, user_id, amount, status, ...

Complete Data Exploration Example

A typical workflow to understand a new dataset before writing analysis code:
1

Discover available datasets

{ "tool": "kirograph_data_list", "arguments": {} }
2

Profile the schema

{
  "tool": "kirograph_data_describe",
  "arguments": { "dataset": "orders" }
}
Review column types, null rates, and cardinality to spot anomalies before querying.
3

Check data quality

{
  "tool": "kirograph_data_quality",
  "arguments": { "dataset": "orders" }
}
Address high-risk columns before building aggregations that depend on them.
4

Aggregate instead of paginating

{
  "tool": "kirograph_data_aggregate",
  "arguments": {
    "dataset": "orders",
    "groupBy": ["status", "region"],
    "metrics": [
      { "column": "amount", "op": "sum" },
      { "column": "order_id", "op": "count" }
    ]
  }
}
All computation happens in SQLite — only the summary rows reach the model.
If you find yourself calling kirograph_data_query with incrementing offset values, switch to kirograph_data_aggregate. KiroGraph will warn you automatically when it detects a pagination loop.

Build docs developers (and LLMs) love