KumoRFM MCP Server
OfficialEnables CrewAI agents to query KumoRFM for predictive analytics, graph management, and natural language queries on relational data.
Allows LangGraph agents to interact with KumoRFM for executing predictive queries, evaluating models, and managing graph metadata.
Lets OpenAI Agents SDK agents use KumoRFM to perform predictive analysis, imputation, and forecasting on multi-table data.
Allows Snowflake Native Apps to connect to KumoRFM over HTTP for predictive queries and graph management in the Snowflake ecosystem.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KumoRFM MCP ServerPredict next month's sales from my customer data"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ฌ MCP server to query KumoRFM in your agentic flows
๐ Introduction
KumoRFM is a pre-trained Relational Foundation Model (RFM) that generates training-free predictions on any relational multi-table data by interpreting the data as a (temporal) heterogeneous graph. It can be queried via the Predictive Query Language (PQL).
This repository hosts a full-featured MCP (Model Context Protocol) server that empowers AI assistants with KumoRFM intelligence. This server enables:
๐ธ๏ธ Build, manage, and visualize graphs directly from CSV or Parquet files
๐ฌ Convert natural language into PQL queries for seamless interaction
๐ค Query, analyze, and evaluate predictions from KumoRFM (missing value imputation, temporal forecasting, etc) all without any training required
Related MCP server: GraphJin
๐ Installation
๐ Traditional MCP Server
The KumoRFM MCP server is available for Python 3.10 and above. To install, simply run:
pip install kumo-rfm-mcpAdd to your MCP configuration file (e.g., Claude Desktop's mcp_config.json):
{
"mcpServers": {
"kumo-rfm": {
"command": "python",
"args": ["-m", "kumo_rfm_mcp.server"],
"env": {
"KUMO_API_KEY": "your_api_key_here"
}
}
}
}HTTP Transport
For HTTP-native MCP clients such as a Snowflake Native App, run the server with
streamable-http instead of stdio:
KUMO_API_KEY=<YOUR-KUMO-API-KEY> \
MCP_BEARER_TOKEN=<SHARED-MCP-TOKEN> \
python -m kumo_rfm_mcp.server \
--transport streamable-http \
--host 0.0.0.0 \
--port 8000 \
--path /mcpNotes:
Set
KUMO_API_KEYup front for headless deployments. This avoids the browser-based OAuth flow.If your MCP client cannot inject environment variables, call the
authenticatetool with anapi_keyargument once at session start.If
MCP_BEARER_TOKENis set, the HTTP endpoint requiresAuthorization: Bearer <SHARED-MCP-TOKEN>.
โก MCP Bundle
We provide a single-click installation via our MCP Bundle (MCPB) (e.g., for integration into Claude Desktop):
Download the
dxtfile from hereDouble click to install
The MCP Bundle supports Linux, macOS and Windows, but requires a Python executable to be found in order to create a separate new virtual environment.
Claude code
To include the server in claude code use:
claude mcp add --transport stdio kumo-rfm-mcp --env KUMO_API_KEY=<YOUR-API-KEY> -- python -m kumo_rfm_mcp.server --port 8000๐ฌ Claude Desktop Demo
See here for the transcript.
https://github.com/user-attachments/assets/56192b0b-d9df-425f-9c10-8517c754420f
๐ฌ Agentic Workflows
You can use the KumoRFM MCP directly in your agentic workflows:
Browse our examples to get started with agentic workflows powered by KumoRFM.
๐ Available Tools
I/O Operations
๐
find_table_files- Searching for tabular files: Find all table-like files (e.g., CSV, Parquet) in a directory.๐ง
inspect_table_files- Analyzing table structure: Inspect the first rows of table-like files.
Graph Management
๐๏ธ
inspect_graph_metadata- Reviewing graph schema: Inspect the current graph metadata.๐
update_graph_metadata- Updating graph schema: Partially update the current graph metadata.๐ผ๏ธ
get_mermaid- Creating graph diagram: Return the graph as a Mermaid entity relationship diagram.๐ธ๏ธ
materialize_graph- Assembling graph: Materialize the graph based on the current state of the graph metadata to make it available for inference operations.๐
lookup_table_rows- Retrieving table entries: Lookup rows in the raw data frame of a table for a list of primary keys.
Model Execution
๐ค
predict- Running predictive query: Execute a predictive query and return model predictions.๐
evaluate- Evaluating predictive query: Evaluate a predictive query and return performance metrics which compares predictions against known ground-truth labels from historical examples.๐ง
explain- Explaining prediction: Execute a predictive query and explain the model prediction.
๐ง Configuration
Environment Variables
KUMO_API_KEY: Authentication is needed once before predicting or evaluating with the KumoRFM model. You can generate your KumoRFM API key for free here. If not set, you can also authenticate on-the-fly in individual session via an OAuth2 flow.
We love your feedback! :heart:
As you work with KumoRFM, if you encounter any problems or things that are confusing or don't work quite right, please open a new :octocat:issue. You can also submit general feedback and suggestions here. Join our Slack!
Available Tools
12 toolsauthenticate๐ Signing in to KumoRFMโฆA
Authenticate the current KumoRFM session.
Authentication is needed once before predicting or evaluating with the KumoRFM model. If an API key is provided directly, it is used immediately. Otherwise, if the 'KUMO_API_KEY' environment variable is not set, this initiates an OAuth2 authentication flow by opening a browser window for user login. Sets the 'KUMO_API_KEY' environment variable upon successful authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| api_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: sets environment variable, initiates OAuth2 flow if needed, and takes direct API key. Annotations are neutral, so description adds value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at four sentences, front-loaded with purpose, and efficiently covers the process without extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description provides adequate behavioral and usage context. It could mention output details if schema is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates partially by explaining the api_key parameter's role. However, it omits any mention of api_url, leaving its purpose unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool authenticates a KumoRFM session, which is distinct from sibling tools like evaluate or predict. It uses a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use: needed once before predicting or evaluating. It explains two authentication modes (API key or OAuth2) but does not explicitly list circumstances where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate๐ Evaluating predictive queryโฆARead-onlyIdempotent
Evaluate a predictive query and return performance metrics which compares predictions against known ground-truth labels from historical examples.
The graph needs to be materialized and the session needs to be authenticated before the KumoRFM model can start evaluating.
Take the label distribution of the predictive query in the output logs into account when analyzing the returned metrics.
Important: Before executing or suggesting any predictive queries, read the documentation first at 'kumo://docs/predictive-query'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The predictive query string, e.g., 'PREDICT COUNT(orders.*, 0, 30, days)>0 FOR EACH users.user_id' or 'PREDICT users.age FOR EACH users.user_id' | |
| metrics | No | The metrics to use for evaluation. If `None`, will use a pre-selection of metrics depending on the given predictive query. The following metricsare supported: Binary classification: 'acc', 'precision', 'recall', 'f1', 'auroc', 'auprc', 'ap' Multi-class classification: 'acc', 'precision', 'recall', 'f1', 'mrr' Regression: 'mae', 'mape', 'mse', 'rmse', 'smape', 'r2' Temporal link prediction: 'map@k', 'ndcg@k', 'mrr@k', 'precision@k', 'recall@k', 'f1@k', 'hit_ratio@k' where 'k' needs to be an integer between 1 and 100 | |
| anchor_time | No | The anchor time for which we are making a prediction for the the future. If `None`, will use the maximum timestamp in the data as anchor time. If 'entity', will use the timestamp of the entity's time column as anchor time (only valid for static predictive queries for which the entity table contains a time column), which is useful to prevent future data leakage when imputing missing values on facts, e.g., predicting whether a transaction is fraudulent should happen at the point in time the transaction was created. | |
| run_mode | No | The run mode for the query. Trades runtime with model performance. The run mode dictates how many training/in-context examples are sampled to make a prediction, i.e. 1000 for 'fast', 5000 for 'normal', and 10000 for 'best'. | fast |
| num_neighbors | No | The number of neighbors to sample for each hop to create subgraphs. For example, `[24, 12]` samples 24 neighbors in the first hop and 12 neighbors in the second hop. If `None` (recommended), will use two-hop sampling with 32 neighbors in 'fast' mode, and 64 neighbors otherwise in each hop. Up to 6-hop subgraphs are supported. Decreasing the number of neighbors per hop can prevent oversmoothing. Increasing the number of neighbors per hop allows the model to look at a larger historical time window. Increasing the number of hops can improve performance in case important signal is far away from the entity table, but can result in massive subgraphs. We advise to let the number of neighbors gradually shrink down in later hops to prevent recursive neighbor explosion, e.g., `num_neighbors=[32, 32, 4, 4, 2, 2]`, if more hops are required. | |
| max_pq_iterations | No | The maximum number of iterations to perform to collect valid training/in-context examples. It is advised to increase the number of iterations in case the model fails to find the upper bound of supported training examples w.r.t. the run mode, *i.e.* 1000 for 'fast', 5000 for 'normal' and 10000 for 'best'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| metrics | No | The metric value for every metric |
| logs | No | Evaluation-specific log messages such as number of context and test examples, the underlying task type and the label distribution |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds valuable context about prerequisites (graph materialization, authentication) and a tip to consider label distribution, further guiding agent behavior without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in 4 sentences with the main purpose upfront. It is concise but could be slightly tighter; the 'Important' line is relevant but somewhat separate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, output schema exists), the description covers prerequisites and a usage tip. Return values are not detailed but output schema exists, so this is acceptable. Minor gaps in describing output format are compensated by schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% parameter description coverage, so description adds no extra parameter details beyond the schema. Baseline score of 3 is appropriate as the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool evaluates a predictive query and returns performance metrics comparing predictions to ground truth. It distinguishes from sibling tools like 'predict' and 'explain' by focusing on post-hoc evaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides important prerequisites (materialized graph, authenticated session) and advises reading documentation. It does not explicitly exclude alternatives or specify when not to use, but context is clear for evaluation tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain๐ง Explaining predictionโฆARead-onlyIdempotent
Execute a predictive query and explain the model prediction.
The graph needs to be materialized and the session needs to be authenticated before the KumoRFM model can start generating an explanation for a prediction.
Only a single entity prediction can be explained at a time.
The run_mode will be fixed to 'fast' mode for explainability.
Note that the model prediction returned by the explanation might differ
slightly from the result of the predict tool due to floating-point
precision. Ignore such small differences.
Important: Before executing or suggesting any predictive queries, read the documentation first at 'kumo://docs/predictive-query'.
Important: Before analyzing the explanation output, read the documentation first at 'kumo://docs/explainability'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The predictive query string, e.g., 'PREDICT COUNT(orders.*, 0, 30, days)>0 FOR EACH users.user_id' or 'PREDICT users.age FOR EACH users.user_id' | |
| index | Yes | The primary key (entity index) of the prediction to explain | |
| anchor_time | No | The anchor time for which we are making a prediction for the the future. If `None`, will use the maximum timestamp in the data as anchor time. If 'entity', will use the timestamp of the entity's time column as anchor time (only valid for static predictive queries for which the entity table contains a time column), which is useful to prevent future data leakage when imputing missing values on facts, e.g., predicting whether a transaction is fraudulent should happen at the point in time the transaction was created. | |
| num_neighbors | No | The number of neighbors to sample for each hop to create subgraphs. For example, `[24, 12]` samples 24 neighbors in the first hop and 12 neighbors in the second hop. If `None` (recommended), will use two-hop sampling with 32 neighbors in 'fast' mode, and 64 neighbors otherwise in each hop. Up to 6-hop subgraphs are supported. Decreasing the number of neighbors per hop can prevent oversmoothing. Increasing the number of neighbors per hop allows the model to look at a larger historical time window. Increasing the number of hops can improve performance in case important signal is far away from the entity table, but can result in massive subgraphs. We advise to let the number of neighbors gradually shrink down in later hops to prevent recursive neighbor explosion, e.g., `num_neighbors=[32, 32, 4, 4, 2, 2]`, if more hops are required. | |
| max_pq_iterations | No | The maximum number of iterations to perform to collect valid training/in-context examples. It is advised to increase the number of iterations in case the model fails to find the upper bound of supported training examples w.r.t. the run mode, *i.e.* 1000 for 'fast', 5000 for 'normal' and 10000 for 'best'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| prediction | Yes | |
| explanation | Yes | |
| logs | No | Prediction-specific log messages such as number of context examples, the underlying task type and the label distribution |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds value by disclosing that the returned prediction may differ from `predict` due to floating-point precision, and that the run mode is fixed. This provides context beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized but includes repetitive directives (two 'Important:' notes) that could be merged. It is front-loaded with the main purpose, but could be streamlined for better conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description effectively covers prerequisites, limitations (single entity, fixed run_mode, precision differences), and provides documentation links. It fairly well equips the AI agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minimal extra parameter information (e.g., fixed run_mode) but mostly reiterates constraints already documented in the schema. No significant additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's action: 'Execute a predictive query and explain the model prediction.' It clearly distinguishes from the sibling `predict` tool by noting that the explanation may differ due to floating-point precision and that only a single entity can be explained at a time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit preconditions: graph must be materialized and session authenticated. It specifies that only a single entity is supported and that `run_mode` is fixed to 'fast'. It also directs users to documentation before executing or analyzing, offering clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_table_files๐ Searching for tabular filesโฆARead-onlyIdempotent
Finds all table-like files (e.g., CSV, Parquet) in a directory.
This tool is for local directories only. It cannot search, e.g., in S3 buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local root directory to scan | |
| recursive | No | Whether to scan subdirectories recursively. Use with caution in large directories such as home folders or system directories. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds behavioral context by specifying it searches locally and cannot access remote storage, which complements the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the core purpose, the second clarifies scope. No redundant words, and the information is front-loaded for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, 1 required), the presence of an output schema, and the annotations, the description fully covers purpose, scope, and parameter hints without needing to explain return values or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters with descriptions. The description adds value by providing concrete file type examples (CSV, Parquet), which helps users understand what 'table-like' means, going beyond the schema's formal definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function ('Finds all table-like files') with specific examples (CSV, Parquet), and distinguishes it from siblings like 'inspect_table_files' by focusing on discovery rather than inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly limits usage to local directories and warns against using it for remote storage like S3. This provides clear when-to-use and when-not-to-use guidance, though it does not directly suggest alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docs๐ ReadingโฆARead-only
Get documentation on how to use KumoRFM.
KumoRFM is a pre-trained Relational Foundation Model (RFM) that generates training-free predictions on any relational multi-table data by interpreting the data as a (temporal) heterogeneous graph. It can be queried via the Predictive Query Language (PQL).
Internal note: It is NOT related to "Recency, Frequency, Monetary" analysis.
Internally, KumoRFM utilizes in-context learning to transfer patterns from historical examples to new unseen examples. Specifically, it constructs training/in-context subgraphs with known ground-truth labels and relates them to unseen subgraphs.
See the 'kumo://docs/overview' resource for more information.
KumoRFM can discover table-like files (e.g., CSV, Parquet), inspect them, and structure them into a graph via foreign key-primary key relationships. A time column in a table dictates the create time of a row, which is used downstream to receive and order historical interactions and prevent temporal leakage. Each column within a table is assigned a semantic type (numerical, categorical, multi-categorical, ID, text, timestamp, sequence, etc) that denotes the semantic meaning of the column and how it should be processed within the model.
Important: Before creating and updating graphs, read the documentation first at 'kumo://docs/graph-setup'.
After a graph is set up and materialized, KumoRFM can generate
predictions (e.g., missing value imputation, temporal forecasts) and
evaluations by querying the graph via the Predictive Query Language
(PQL), a declarative language to formulate machine learning tasks.
Understanding PQL and how it maps to a machine learning task is
critical to achieve good model predictions. Besides PQL, various other
options exist to tune model output, e.g., optimizing the run_mode of
the model, specifying how subgraphs are formed via num_neighbors, or
adjusting the anchor_time to denote the point in time for when a
prediction should be made.
Important: Before executing or suggesting any predictive queries, read the documentation first at 'kumo://docs/predictive-query'.
KumoRFM can additionally generate explanations for predictions, providing both a global column-level analysis and a local, cell-level attribution view. Together, these views enable comprehensive interpretation.
Important: Before analyzing the explanation output, read the documentation first at 'kumo://docs/explainability'.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_uri | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully aligns with the annotations (readOnlyHint=true, destructiveHint=false). It adds context such as the tool being purely informational, the importance of reading specific docs before certain actions, and internal notes. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thorough but somewhat lengthy. It is well-structured with sections and highlighted important points, which is appropriate for a documentation tool. However, it could be slightly more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: what the tool does, when to use it, parameter details, and additional context like the internal note and prerequisite readings. With an output schema present (indicated by context signals), the lack of return value description is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly lists the four possible resource URIs from the enum and explains what each documentation resource covers (e.g., 'kumo://docs/overview' for overview, 'kumo://docs/graph-setup' for graph setup). With schema description coverage at 0%, the description compensates fully by adding meaning to the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get documentation on how to use KumoRFM.' It uses a specific verb ('Get') and resource ('documentation'), and distinguishes itself from sibling tools, none of which are documentation-focused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool, including 'Important: Before creating and updating graphs, read the documentation first at ...', 'Before executing or suggesting any predictive queries, read ...', and 'Before analyzing the explanation output, read ...'. It also includes an internal note to avoid confusion with other meanings of RFM.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mermaid๐ผ๏ธ Creating graph diagramโฆARead-onlyIdempotent
Return the graph as a Mermaid entity relationship diagram.
Important: The returned Mermaid markup can be used to input into an artifact to render it visually on the client side.
| Name | Required | Description | Default |
|---|---|---|---|
| show_columns | No | Controls whether all columns of a table are shown. If `False`, only the primary key, foreign keys and time column are displayed. Setting this to `False` is recommended for feature-rich tables to avoid cluttering the diagram with less relevant details. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds that the output is Mermaid markup for visualization, which is consistent but does not disclose additional behavioral traits like caching or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence states the core purpose, and the second adds valuable context about using the output. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple interface with one parameter and output schema. The description covers the output format and usage hint. However, it lacks mention of prerequisites or assumptions (e.g., that a graph must exist), which would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description for the single parameter (show_columns) is detailed. The tool description does not add any extra meaning to the parameter beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a Mermaid entity relationship diagram, which is a specific verb+resource. It distinguishes itself from siblings like materialize_graph and inspect_graph_metadata by focusing on visual representation via Mermaid markup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning the returned markup can be used in an artifact, but it does not explicitly state when to use this tool versus alternatives like materialize_graph or explain. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_graph_metadata๐๏ธ Reviewing graph schemaโฆARead-onlyIdempotent
Inspect the current graph metadata.
Confirming that the metadata is set up correctly is crucial for the RFM model to work properly. In particular,
primary keys and time columns need to be correctly specified for each table in case they exist;
columns need to point to a valid semantic type that describe their semantic meaning, or
Noneif they have been discarded;links need to point to valid foreign key-primary key relationships.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tables | Yes | |
| links | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, etc. The description adds context about what to verify (PKs, time columns, semantic types) but does not disclose any behavior beyond what annotations imply. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and provides a bullet list of items inspected. It is clear but slightly wordy (~90 words for a zero-parameter tool).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero parameters, clear annotations, and presence of output schema, the description covers all necessary aspects: what the tool does, why it matters, and what it inspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. With zero parameters, the baseline is 4, and the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Inspect the current graph metadata' and details what is inspected (primary keys, time columns, columns semantic types, links). This clearly distinguishes it from siblings like 'update_graph_metadata' or 'materialize_graph'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage before running the RFM model by stating 'Confirming that the metadata is set up correctly is crucial for the RFM model'. However, it does not explicitly say when not to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_table_files๐ง Analyzing table structureโฆBRead-onlyIdempotent
Inspect the first rows of table-like files.
Each row in a file is represented as a dictionary mapping column names to their corresponding values.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | File paths to inspect. Can be a mix of local file paths, S3 URIs (s3://...), or HTTP/HTTPS URLs. | |
| num_rows | No | Number of rows to read per file |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds that rows are represented as dict mappings, which is useful but not critical. It does not disclose any behavioral quirks like file size limits or format restrictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (two sentences) and front-loaded with the core action. The second sentence details output format, which is optional but acceptable. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) so return format is handled. The description explains the core functionality and row representation. However, it does not specify supported file formats or error handling, which could be relevant for a 'table-like' tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions for both parameters. The description does not add additional parameter meaning; the second sentence about row representation is about the output, not parameters. A 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Inspect the first rows') and the resource ('table-like files'), and explains the data representation. However, it does not contrast with sibling tools like lookup_table_rows which could cause confusion about whether this tool retrieves arbitrary or only first rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use inspect_table_files versus alternatives (e.g., find_table_files for searching, lookup_table_rows for specific rows). The description lacks any usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_table_rows๐ Retrieving table entriesโฆARead-onlyIdempotent
Lookup rows in the raw data frame of a table for a list of primary keys.
In contrast to the 'inspect_table_files' tool, this tool can be used to query specific rows in a registered table in the graph. It should not be used to understand and analyze table schema.
Use this tool to look up detailed information about recommended items to provide richer, more meaningful recommendations to users.
The table to read from needs to have a primary key, and the graph has to be materialized.
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | Table name | |
| ids | Yes | Primary keys to read |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | Each row in the table source is represented as a dictionary mapping column names to their corresponding values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent. Description adds operational context: reads raw data frame, requires primary key and materialized graph. No contradictions; adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six sentences, each serving a purpose: main action, differentiation, anti-pattern, usage advice, prerequisites. No fluff, information is front-loaded and well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given presence of output schema and full parameter coverage, description provides all necessary contextual completeness: prerequisites, usage restrictions, differentiation, and a concrete use case. Sibling tools are referenced appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description clarifies that 'ids' are primary keys and that the table must have a primary key, adding meaning beyond the schema's parameter types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'lookup' and resource 'rows in the raw data frame of a table for primary keys'. Distinguishes from 'inspect_table_files' by contrasting row query vs schema analysis. Purpose is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly contrasts with 'inspect_table_files', states when to use (look up detailed info about recommended items) and when not to (schema analysis). Also lists prerequisites: table must have a primary key and graph must be materialized.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
materialize_graph๐ธ๏ธ Assembling graphโฆAIdempotent
Materialize the graph based on the current state of the graph metadata
to make it available for inference operations (e.g., predict and
evaluate).
Any updates to the graph metadata require re-materializing the graph before the KumoRFM model can start making predictions again.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| num_nodes | Yes | |
| num_edges | Yes | |
| time_ranges | No | Earliest to latest timestamp for each table in the graph that contains a time column |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotency and non-destructiveness. The description adds important context about the dependency chain (needs re-materialization after metadata updates). However, it doesn't discuss performance or additional side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences with no redundant information. Purpose and dependency are clearly stated upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, an output schema exists, and annotations cover idempotency, the description provides complete guidance: prerequisite (metadata updates), purpose (enable inference), and the need for re-materialization. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters are present, so schema coverage is 100%. The baseline for 0 parameters is 4, and the description adequately explains the tool's action without needing parameter-level details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool materializes the graph to make it available for inference operations (predict and evaluate). It distinguishes from siblings like update_graph_metadata (which updates metadata) and predict/evaluate (which use the graph).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains that materialization is required after graph metadata updates before inference. It implicitly tells when to use it, but doesn't explicitly state when not to use it or mention alternatives, though siblings provide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict๐ค Running predictive queryโฆARead-onlyIdempotent
Execute a predictive query and return model predictions.
The graph needs to be materialized and the session needs to be authenticated before the KumoRFM model can start generating predictions.
The output prediction format depends on the given task type.
Binary classification: | ENTITY | ANCHOR_TIMESTAMP | TARGET_PRED | False_PROB | True_PROB | where 'ENTITY' holds the entity ID, 'ANCHOR_TIMESTAMP' holds the anchor time of the prediction in unix format, 'TARGET_PRED' holds the final prediction based on a threshold of 0.5, and 'False_PROB' and 'True_PROB' hold the probabilities.
Multi-class classification: | ENTITY | ANCHOR_TIMESTAMP | CLASS | SCORE | PREDICTED | where 'ENTITY' holds the entity ID, 'ANCHOR_TIMESTAMP' holds the anchor time of the prediction in unix format. Each row corresponds to an (ENTITY, CLASS) pair (up to 10 classes are reported), where 'CLASS' holds the predicted value, 'SCORE' holds its probability, and 'PREDICTED' denotes whether the (ENTITY, CLASS) pair has the highest likelihood.
Regression: | ENTITY | ANCHOR_TIMESTAMP | TARGET_PRED | where 'ENTITY' holds the entity ID, 'ANCHOR_TIMESTAMP' holds the anchor time of the prediction in unix format, and 'TARGET_PRED' holds the predicted numerical value.
Temporal link prediction: | ENTITY | ANCHOR_TIMESTAMP | CLASS | SCORE | where 'ENTITY' holds the entity ID, 'ANCHOR_TIMESTAMP' holds the anchor time of the prediction in unix format. Each row corresponds to an (ENTITY, CLASS) pair, where 'CLASS' holds the recommended item and 'SCORE' holds its likelihood.
Important: Before executing or suggesting any predictive queries, read the documentation first at 'kumo://docs/predictive-query'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The predictive query string, e.g., 'PREDICT COUNT(orders.*, 0, 30, days)>0 FOR EACH users.user_id' or 'PREDICT users.age FOR EACH users.user_id' | |
| indices | Yes | The primary keys (entity indices) to generate predictions for. Up to 1000 entities are supported for an individual query. Predictions will be generated for all indices, regardless of whether they match any entity filter constraints. | |
| anchor_time | No | The anchor time for which we are making a prediction for the the future. If `None`, will use the maximum timestamp in the data as anchor time. If 'entity', will use the timestamp of the entity's time column as anchor time (only valid for static predictive queries for which the entity table contains a time column), which is useful to prevent future data leakage when imputing missing values on facts, e.g., predicting whether a transaction is fraudulent should happen at the point in time the transaction was created. | |
| run_mode | No | The run mode for the query. Trades runtime with model performance. The run mode dictates how many training/in-context examples are sampled to make a prediction, i.e. 1000 for 'fast', 5000 for 'normal', and 10000 for 'best'. | fast |
| num_neighbors | No | The number of neighbors to sample for each hop to create subgraphs. For example, `[24, 12]` samples 24 neighbors in the first hop and 12 neighbors in the second hop. If `None` (recommended), will use two-hop sampling with 32 neighbors in 'fast' mode, and 64 neighbors otherwise in each hop. Up to 6-hop subgraphs are supported. Decreasing the number of neighbors per hop can prevent oversmoothing. Increasing the number of neighbors per hop allows the model to look at a larger historical time window. Increasing the number of hops can improve performance in case important signal is far away from the entity table, but can result in massive subgraphs. We advise to let the number of neighbors gradually shrink down in later hops to prevent recursive neighbor explosion, e.g., `num_neighbors=[32, 32, 4, 4, 2, 2]`, if more hops are required. | |
| max_pq_iterations | No | The maximum number of iterations to perform to collect valid training/in-context examples. It is advised to increase the number of iterations in case the model fails to find the upper bound of supported training examples w.r.t. the run mode, *i.e.* 1000 for 'fast', 5000 for 'normal' and 10000 for 'best'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| predictions | No | The predictions, where each row holds information about the entity, the anchor time, and the prediction scores |
| logs | No | Prediction-specific log messages such as number of context examples, the underlying task type and the label distribution |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false. The description confirms the read-only, non-destructive nature by discussing predictions and output formats. It adds value by detailing output formats per task type, which is beyond what annotations provide, and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear first sentence stating purpose, followed by prerequisites and detailed output format tables. It is somewhat long but the tables are necessary for clarity and well-organized. Front-loading the purpose and prerequisite is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, 2 required, multiple task types) and the existence of an output schema, the description provides complete context: prerequisites, output formats for all task types, and a pointer to further documentation. It sets clear expectations for the user without relying solely on structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The tool description does not add additional meaning beyond what the schema provides; it only mentions prerequisites and output formats. Baseline 3 is appropriate when schema covers all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute a predictive query and return model predictions', specifying the verb 'execute' and the resource 'predictive query' and 'model predictions'. It distinguishes from sibling tools like 'explain' or 'evaluate' by detailing output formats for different task types (binary classification, multi-class, regression, temporal link prediction), making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states prerequisites: 'The graph needs to be materialized and the session needs to be authenticated before the KumoRFM model can start generating predictions.' It also instructs users to 'read the documentation first at kumo://docs/predictive-query' before use. While it doesn't explicitly list when not to use this tool or alternatives, the prerequisites and doc reference provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_graph_metadata๐ Updating graph schemaโฆAIdempotent
Partially update the current graph metadata.
Setting up the metadata is crucial for the RFM model to work properly. In particular,
primary keys and time columns need to be correctly specified for each table in case they exist;
columns need to point to a valid semantic type that describe their semantic meaning, or
Noneif they should be discarded;links need to point to valid foreign key-primary key relationships.
Omitted fields will be untouched.
For newly added tables, it is advised to double-check semantic types and modify in a follow-up step if necessary.
Make sure that tables are correctly linked before proceeding.
Note that all operations can be performed in a batch at once, e.g., one can add new tables and directly link them to together.
Important: Before creating and updating graphs, read the documentation first at 'kumo://docs/graph-setup'.
| Name | Required | Description | Default |
|---|---|---|---|
| update | Yes | Metadata updates to perform for a graph holding multiple tables connected via foreign key-primary key relationships. |
Output Schema
| Name | Required | Description |
|---|---|---|
| graph | Yes | Metadata of a graph holding multiple tables connected via foreign key-primary key relationships. |
| errors | No | Any errors encountered during the update process |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, and the description's 'partial update' and 'omitted fields untouched' align with this. However, the description adds little beyond annotationsโno mention of destructive potential or rate limits. Since annotations cover idempotency, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with bullet points and sections, front-loading the core action. It is somewhat lengthy but each sentence adds information. Could be trimmed slightly without loss, but overall well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested objects, multiple operations), the description covers all aspects: adding/updating/removing tables and links, semantic types, and references to documentation. Output schema exists, so return values need not be detailed. The description is thorough and leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining the significance of metadata (RFM model), the role of semantic types, and procedural advice (batch operations, follow-up steps). It supplements the schema's detailed property descriptions with contextual meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Partially update the current graph metadata.' It lists key operations like updating primary keys, time columns, semantic types, and links. However, it does not explicitly distinguish from sibling tools like inspect_graph_metadata or materialize_graph, though the action is inherently different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes guidance: metadata is crucial for RFM model, advises double-checking semantic types, ensuring tables are linked, and references documentation. But it lacks explicit instructions on when not to use this tool or what alternatives exist (e.g., using inspect first). The advice is useful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.1.0- First observed
authenticate - First observed
evaluate - First observed
explain - First observed
find_table_files - First observed
get_docs - First observed
get_mermaid - First observed
inspect_graph_metadata - First observed
inspect_table_files - First observed
lookup_table_rows - First observed
materialize_graph - First observed
predict - First observed
update_graph_metadata
TDQS
Scored across 12 tools
Every tool addresses a distinct aspect of the workflow: authentication, file discovery, metadata inspection/update, graph materialization, prediction, evaluation, explanation, and documentation. There is no functional overlap that would cause confusion.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., authenticate, find_table_files, inspect_graph_metadata). This makes the expected action and target clear and predictable.
12 tools cover the necessary stages of the KumoRFM pipeline without being excessive. Each tool earns its place, and the count is well-suited for a domain-specific ML server.
The tool set provides end-to-end coverage: data discovery, graph setup, materialization, prediction, evaluation, and explanation. Supporting tools like get_docs and get_mermaid enhance usability. No critical gaps are evident.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
Bring Kubit into your AI workflow โ query your warehouse with natural language
Shared semantic graph for AI reviews, classification and structured memory across AI assistants.
Ask questions in plain language, get answers from your business database. No SQL required.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to build and query temporally-aware knowledge graphs from conversations and data, maintaining persistent memory of entities, relationships, and facts across interactions.-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to query databases using natural language, with automatic schema discovery and SQL compilation.9953,162Apache 2.0
- FlicenseAqualityDmaintenanceEnables AI assistants to query and analyze user behavior data from the Sensors Analytics platform using natural language.7-
- AlicenseAqualityCmaintenanceProvides AI assistants with semantic layer visibility and multi-dimensional querying capabilities over Cube.js data.2331MIT