Graphistry MCP
OfficialThis server provides GPU-accelerated graph visualization and network analysis for LLMs through Graphistry's Model Control Protocol (MCP) integration, enabling AI assistants to create, analyze, and manipulate complex network data.
Core Capabilities:
Graph Visualization: Create interactive visualizations of standard graphs and hypergraphs from edge/node lists using Graphistry's GPU-accelerated renderer
Graph Management: List stored graphs, retrieve metadata (node/edge counts, titles, descriptions), and manage multiple graphs with unique IDs
Network Analytics: Run comprehensive pattern detection including centrality metrics (degree, betweenness, closeness), community detection, path finding, and anomaly detection
Layout Algorithms: Apply standard layouts (force-directed, radial, circle, grid, tree) and advanced layouts (group-in-a-box, modularity-weighted, categorical/continuous/time-based rings)
Visual Encoding: Customize node appearance with color, size, icon (FontAwesome, country flags, custom images), and badge encodings based on data attributes
Settings Control: Fine-tune visualization parameters including point size, edge influence, and playback controls
Data Format Support: Accepts various formats including edge lists, node lists, Pandas DataFrames, and NetworkX graphs with flexible column naming and additional attributes
LLM-Friendly API: Simplified interface using a single
graph_datadictionary for easy integration with language models
Provides containerized deployment of the server with Docker, allowing isolated execution with proper credential configuration.
Supports configuration through .env files for credential management, enabling secure storage of Graphistry authentication details.
Hosts the repository for the MCP server at bmorphism/graphistry-mcp, allowing users to clone and install the server from GitHub.
Supports pandas dataframes as an input format for graph visualization, allowing transformation of tabular data into interactive network visualizations.
Supports testing of the server's functionality through pytest, ensuring proper operation of graph visualization features.
Integrates with Ruff for code linting during development, ensuring code quality standards are maintained.
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., "@Graphistry MCPvisualize the social network connections from this dataset"
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.
Graphistry MCP Integration
GPU-accelerated graph visualization and analytics for Large Language Models using Graphistry and MCP.
Overview
This project integrates Graphistry's powerful GPU-accelerated graph visualization platform with the Model Control Protocol (MCP), enabling advanced graph analytics capabilities for AI assistants and LLMs. It allows LLMs to visualize and analyze complex network data through a standardized, LLM-friendly interface.
Key features:
GPU-accelerated graph visualization via Graphistry
Advanced pattern discovery and relationship analysis
Network analytics (community detection, centrality, path finding, anomaly detection)
Support for various data formats (Pandas, NetworkX, edge lists)
LLM-friendly API: single
graph_datadict for graph tools
Related MCP server: Neo4j GraphRAG MCP Server
🚨 Important: Graphistry Registration Required
This MCP server requires a free Graphistry account to use visualization features.
Sign up for a free account at hub.graphistry.com
Set your credentials as environment variables or in a
.envfile before starting the server:export GRAPHISTRY_USERNAME=your_username export GRAPHISTRY_PASSWORD=your_password # or create a .env file with: # GRAPHISTRY_USERNAME=your_username # GRAPHISTRY_PASSWORD=your_passwordSee
.env.examplefor a template.
MCP Configuration (.mcp.json)
To use this project with Cursor or other MCP-compatible tools, you need a .mcp.json file in your project root. A template is provided as .mcp.json.example.
Setup:
cp .mcp.json.example .mcp.jsonEdit .mcp.json to:
Set the correct paths for your environment (e.g., project root, Python executable, server script)
Set your Graphistry credentials (or use environment variables/.env)
Choose between HTTP and stdio modes:
graphistry-http: Connects via HTTP (set theurlto match your server's port)graphistry: Connects via stdio (set thecommand,args, andenvas needed)
Note:
.mcp.json.examplecontains both HTTP and stdio configurations. Enable/disable as needed by setting thedisabledfield.See
.env.examplefor environment variable setup.
Installation
Quick Start with npm (Recommended)
# Install via npx (no installation required)
npx -y @silkspace/graphistry-mcp
# Or install globally
npm install -g @silkspace/graphistry-mcp
graphistry-mcpMCP Client Configuration:
Add to your MCP client settings (.mcp.json, MCP client config, etc.):
{
"graphistry": {
"command": "npx",
"args": ["-y", "@silkspace/graphistry-mcp"],
"env": {
"GRAPHISTRY_USERNAME": "your_username",
"GRAPHISTRY_PASSWORD": "your_password"
}
}
}The npm package automatically:
Creates a Python virtual environment
Installs all Python dependencies (using
uvif available, otherwisepip)Sets up the MCP server
Alternative: Manual Installation (Python venv + pip)
# Clone the repository
git clone https://github.com/graphistry/graphistry-mcp.git
cd graphistry-mcp
# Set up virtual environment and install dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Set up your Graphistry credentials (see above)Or use the setup script:
./setup-graphistry-mcp.shUsage
Starting the Server
# Activate your virtual environment if not already active
source .venv/bin/activate
# Start the server (stdio mode)
python run_graphistry_mcp.py
# Or use the start script for HTTP or stdio mode (recommended, sources .env securely)
./start-graphistry-mcp.sh --http 8080Security & Credential Handling
The server loads credentials from environment variables or
.envusing python-dotenv, so you can safely use a.envfile for local development.The
start-graphistry-mcp.shscript sources.envand is the most robust and secure way to launch the server.
Adding to MCP Clients
Using npm (Recommended):
Add the MCP server to your MCP client config:
{
"graphistry": {
"command": "npx",
"args": ["-y", "@silkspace/graphistry-mcp"],
"env": {
"GRAPHISTRY_USERNAME": "your_username",
"GRAPHISTRY_PASSWORD": "your_password"
}
}
}Using manual installation:
{
"graphistry": {
"command": "/path/to/your/.venv/bin/python",
"args": ["/path/to/your/run_graphistry_mcp.py"],
"env": {
"GRAPHISTRY_USERNAME": "your_username",
"GRAPHISTRY_PASSWORD": "your_password"
}
}
}Notes:
Make sure the virtual environment is used (either by using the full path to the venv's python, or by activating it before launching).
If you see errors about API version or missing credentials, double-check your environment variables and registration.
Example: Visualizing a Graph (LLM-friendly API)
The main tool, visualize_graph, now accepts a single graph_data dictionary. Example:
{
"graph_data": {
"graph_type": "graph",
"edges": [
{"source": "A", "target": "B"},
{"source": "A", "target": "C"},
{"source": "A", "target": "D"},
{"source": "A", "target": "E"},
{"source": "B", "target": "C"},
{"source": "B", "target": "D"},
{"source": "B", "target": "E"},
{"source": "C", "target": "D"},
{"source": "C", "target": "E"},
{"source": "D", "target": "E"}
],
"nodes": [
{"id": "A"}, {"id": "B"}, {"id": "C"}, {"id": "D"}, {"id": "E"}
],
"title": "5-node, 10-edge Complete Graph",
"description": "A complete graph of 5 nodes (K5) where every node is connected to every other node."
}
}Example (hypergraph):
{
"graph_data": {
"graph_type": "hypergraph",
"edges": [
{"source": "A", "target": "B", "group": "G1", "weight": 0.7},
{"source": "A", "target": "C", "group": "G1", "weight": 0.6},
{"source": "B", "target": "C", "group": "G2", "weight": 0.8},
{"source": "A", "target": "D", "group": "G2", "weight": 0.5}
],
"columns": ["source", "target", "group"],
"title": "Test Hypergraph",
"description": "A simple test hypergraph."
}
}Available MCP Tools
The following MCP tools are available for graph visualization, analysis, and manipulation:
visualize_graph: Visualize a graph or hypergraph using Graphistry's GPU-accelerated renderer.
get_graph_ids: List all stored graph IDs in the current session.
get_graph_info: Get metadata (node/edge counts, title, description) for a stored graph.
apply_layout: Apply a standard layout (force_directed, radial, circle, grid) to a graph.
detect_patterns: Run network analysis (centrality, community detection, path finding, anomaly detection).
encode_point_color: Set node color encoding by column (categorical or continuous).
encode_point_size: Set node size encoding by column (categorical or continuous).
encode_point_icon: Set node icon encoding by column (categorical, with icon mapping or binning).
encode_point_badge: Set node badge encoding by column (categorical, with icon mapping or binning).
apply_ring_categorical_layout: Arrange nodes in rings by a categorical column (e.g., group/type).
apply_group_in_a_box_layout: Arrange nodes in group-in-a-box layout (requires igraph).
apply_modularity_weighted_layout: Arrange nodes by modularity-weighted layout (requires igraph).
apply_ring_continuous_layout: Arrange nodes in rings by a continuous column (e.g., score).
apply_time_ring_layout: Arrange nodes in rings by a datetime column (e.g., created_at).
apply_tree_layout: Arrange nodes in a tree (layered hierarchical) layout.
set_graph_settings: Set advanced visualization settings (point size, edge influence, etc.).
Contributing
PRs and issues welcome! This project is evolving rapidly as we learn more about LLM-driven graph analytics and tool integration.
License
MIT
Available Tools
17 toolsapply_group_in_a_box_layoutB
Apply group-in-a-box layout to the graph using Graphistry's group_in_a_box_layout API.
Args:
graph_id (str): The ID of the graph to modify.
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
apply_group_in_a_box_layout(graph_id)
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool modifies a graph and returns an updated URL, but lacks details on permissions, side effects (e.g., overwriting existing layouts), rate limits, or error handling. This is inadequate for a mutation tool with zero annotation coverage.
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 well-structured and front-loaded with the core purpose, followed by Args, Returns, and Example sections. Every sentence adds value without redundancy, making it efficient and easy to parse.
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 annotations, no output schema, and low schema coverage, the description is moderately complete. It covers the purpose, parameter, and return value, but gaps remain in behavioral details (e.g., mutation risks) and usage context. For a tool with one parameter, this is adequate but not comprehensive.
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 0%, but the description compensates by explaining the single parameter 'graph_id' as 'The ID of the graph to modify.' It adds meaning beyond the schema's basic type, clarifying its purpose. With only one parameter, this is sufficient for a high score.
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 verb ('apply') and resource ('group-in-a-box layout to the graph'), specifying it uses Graphistry's API. It distinguishes from siblings by naming the specific layout type, though it doesn't explicitly contrast with other layout tools like 'apply_ring_categorical_layout'.
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 is provided on when to use this tool versus alternatives like other layout tools (e.g., 'apply_tree_layout'). The description implies usage for modifying graphs but lacks context on prerequisites, such as needing an existing graph ID from tools like 'get_graph_ids'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_layoutB
Apply a layout algorithm to a graph.
Args:
graph_id: ID of the graph to apply layout to
layout: Layout algorithm to apply (force_directed, radial, circle, grid)
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| layout | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Apply') but doesn't clarify if this is a destructive mutation (e.g., overwriting existing layout), requires specific permissions, has side effects, or what the expected outcome is (e.g., visual changes only). This leaves critical behavioral traits unspecified for a tool that likely modifies graph state.
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 with a clear opening sentence stating the purpose, followed by a bullet-point-like 'Args' section for parameters. Every sentence adds value, and there's no redundant information. It could be slightly more front-loaded by integrating parameter hints into the main sentence, but overall it's well-organized and concise.
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 complexity of applying layouts (likely a mutation with visual/graph state implications), no annotations, no output schema, and multiple sibling tools, the description is incomplete. It lacks information on behavioral effects, differences from other layout tools, and expected outcomes, making it inadequate for an agent to use this tool confidently in context.
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 adds significant value beyond the input schema, which has 0% description coverage. It explains that 'graph_id' is the 'ID of the graph to apply layout to' and 'layout' is the 'Layout algorithm to apply', listing specific algorithm options (force_directed, radial, circle, grid). This compensates well for the schema's lack of descriptions, though it doesn't detail format constraints (e.g., string patterns for graph_id).
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 ('Apply a layout algorithm') and the resource ('to a graph'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling layout tools (like apply_tree_layout or apply_ring_categorical_layout), which would require specifying what makes this particular layout application distinct.
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 no guidance on when to use this tool versus its many sibling layout tools (e.g., apply_tree_layout, apply_modularity_weighted_layout). It also doesn't mention prerequisites, such as whether the graph must exist or be in a particular state, leaving the agent with insufficient context for appropriate tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_modularity_weighted_layoutB
Apply modularity weighted layout to the graph using Graphistry's modularity_weighted_layout API.
Args:
graph_id (str): The ID of the graph to modify.
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
apply_modularity_weighted_layout(graph_id)
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool modifies the graph and returns a URL, implying a mutation with visual output, but lacks details on permissions, side effects, rate limits, or whether the layout is destructive to existing graph data. This is a significant gap for a mutation tool.
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 well-structured and front-loaded with the core purpose, followed by Args, Returns, and Example sections. Every sentence adds value without redundancy, making it efficient and easy to scan.
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 annotations, no output schema, and low schema coverage, the description is incomplete. It covers the basic operation and return format but misses behavioral context like mutation risks or usage guidelines. For a layout tool among many siblings, more guidance would be beneficial.
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 0%, but the description adds basic semantics by explaining 'graph_id' as 'The ID of the graph to modify.' However, it doesn't elaborate on format, constraints, or examples beyond the schema's title. With one parameter, the baseline is 4, but the minimal added value reduces it to 3.
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 ('apply modularity weighted layout') and resource ('to the graph'), specifying it uses Graphistry's API. It distinguishes from siblings by mentioning 'modularity_weighted_layout' but doesn't explicitly contrast with other layout tools like 'apply_tree_layout' or 'apply_ring_categorical_layout'.
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 is provided on when to use this tool versus alternatives. The description mentions the API but doesn't explain scenarios for choosing modularity weighted layout over other layout tools in the sibling list, such as for community detection or weighted networks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_ring_categorical_layoutA
Apply a categorical ring layout to the graph using Graphistry's ring_categorical_layout API.
Args:
graph_id (str): The ID of the graph to modify.
ring_col (str): The node column to use for determining ring membership (e.g., a categorical attribute like 'type' or 'group').
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
apply_ring_categorical_layout(graph_id, ring_col='type')
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| ring_col | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that this modifies a graph (implied mutation) and returns a visualization URL, but lacks details on permissions, rate limits, side effects, or what 'modify' entails (e.g., whether it overwrites existing layouts). The example adds some context but behavioral traits are incomplete.
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 well-structured and front-loaded with the core purpose. Each section (Args, Returns, Example) earns its place by providing essential information without redundancy. The example is concise and illustrative.
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 2 parameters with 0% schema coverage and no output schema, the description does a good job explaining inputs and the return structure. However, as a mutation tool with no annotations, it could better address behavioral aspects like idempotency or error conditions. The example helps but doesn't fully compensate for missing output schema details.
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 0%, so the description must compensate. It explains both parameters: graph_id identifies the target graph, and ring_col specifies the categorical attribute for ring membership, with an example ('type' or 'group'). This adds meaningful semantics beyond the bare schema, though it doesn't detail format constraints or edge cases.
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 specific action ('Apply a categorical ring layout') and resource ('to the graph'), using the exact API name. It distinguishes from siblings like 'apply_ring_continuous_layout' and 'apply_time_ring_layout' by specifying 'categorical' layout type.
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 through the example showing ring_col='type', suggesting it's for categorical attributes. However, it doesn't explicitly state when to use this vs alternatives like 'apply_ring_continuous_layout' or 'apply_group_in_a_box_layout', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_ring_continuous_layoutA
Apply a continuous ring layout to the graph using Graphistry's ring_continuous_layout API.
Args:
graph_id (str): The ID of the graph to modify.
ring_col (str): The node column to use for determining ring position (should be a continuous/numeric attribute, e.g., 'score').
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
apply_ring_continuous_layout(graph_id, ring_col='score')
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| ring_col | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool modifies a graph and returns an updated visualization URL, indicating a mutation operation. However, it lacks details on permissions, side effects, error handling, or rate limits, which are important for a tool that changes visualizations.
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 well-structured with clear sections (description, args, returns, example), front-loading the purpose. It's concise with no redundant information, though the example could be slightly more detailed. Every sentence adds value, making it efficient.
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 2 parameters with 0% schema coverage and no output schema or annotations, the description provides basic purpose and parameter semantics but lacks behavioral details like error cases or performance implications. For a mutation tool in a set of visualization siblings, it's adequate but incomplete, as it doesn't fully guide the agent on when to choose this over alternatives.
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 0%, so the description must compensate. It adds meaningful context for both parameters: 'graph_id' is described as 'the ID of the graph to modify', and 'ring_col' is explained as 'the node column to use for determining ring position' with an example ('score') and a constraint ('should be a continuous/numeric attribute'). This goes beyond the schema's basic titles.
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 ('apply a continuous ring layout') and the target resource ('the graph'), specifying it uses Graphistry's ring_continuous_layout API. It distinguishes from some siblings like 'apply_tree_layout' by mentioning the 'continuous ring' aspect, though it doesn't explicitly differentiate from 'apply_ring_categorical_layout' or 'apply_time_ring_layout' which are similar ring-based layouts.
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 specifying that 'ring_col' should be a 'continuous/numeric attribute', suggesting when this tool is appropriate versus categorical alternatives. However, it doesn't explicitly state when to use this tool over siblings like 'apply_ring_categorical_layout' or 'apply_time_ring_layout', nor does it mention prerequisites or exclusions, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_time_ring_layoutB
Apply a time ring layout to the graph using Graphistry's time_ring_layout API.
Args:
graph_id (str): The ID of the graph to modify.
time_col (str): The node column to use for determining ring position (should be a datetime or timestamp attribute, e.g., 'created_at').
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
apply_time_ring_layout(graph_id, time_col='created_at')
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| time_col | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It implies a mutation ('apply...to modify') and specifies the return format, but lacks details on permissions, side effects, error conditions, or rate limits. The description adds some context (e.g., API reference and example) but is incomplete for behavioral transparency.
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 well-structured with sections for Args, Returns, and Example, making it easy to scan. It's appropriately sized with no redundant information, though the example could be more concise by omitting the function name repetition.
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 annotations and no output schema, the description provides basic purpose, parameters, and return format, but lacks details on usage context, error handling, or behavioral traits. It's minimally adequate for a 2-parameter tool but could be more complete, especially for a mutation 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 description coverage is 0%, so the description must compensate. It explains both parameters: 'graph_id' as 'The ID of the graph to modify' and 'time_col' as 'The node column to use for determining ring position' with an example ('created_at'), adding meaningful semantics beyond the schema's basic 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?
The description clearly states the action ('apply a time ring layout') and the target resource ('the graph'), specifying it uses Graphistry's API. It distinguishes from some siblings like 'apply_ring_categorical_layout' by mentioning 'time' and 'datetime/timestamp', but doesn't explicitly differentiate from all layout tools like 'apply_layout' or 'apply_tree_layout'.
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 explicit guidance on when to use this tool versus alternatives is provided. The description mentions the tool's function but doesn't indicate scenarios where it's preferred over other layout tools (e.g., 'apply_ring_categorical_layout' or 'apply_tree_layout') or when 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.
apply_tree_layoutC
Apply a tree (layered hierarchical) layout to the graph using Graphistry's tree_layout API.
Args:
graph_id (str): The ID of the graph to modify.
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
apply_tree_layout(graph_id)
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states it modifies the graph and returns a URL. It doesn't disclose behavioral traits like whether this is a destructive operation, requires specific permissions, has rate limits, or how it handles errors. The mention of 'modify' hints at mutation but lacks details.
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 core purpose, followed by structured Args and Returns sections, and an Example. It's appropriately sized with no redundant information, though the example could be more informative (e.g., showing a sample graph_id).
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 1 parameter with 0% schema coverage, no annotations, and no output schema, the description is incomplete. It covers the basic operation and return structure but lacks details on graph modification effects, error handling, or when to choose this over other layouts, making it insufficient for a mutation 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 description coverage is 0%, but the description adds minimal semantics: it names the parameter (graph_id) and states it's 'The ID of the graph to modify.' This provides basic meaning beyond the schema's type and title, but doesn't elaborate on format, constraints, or examples beyond the example call.
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 ('Apply a tree layout') and resource ('to the graph'), specifying it uses Graphistry's tree_layout API. It distinguishes from siblings like 'apply_ring_categorical_layout' by mentioning 'tree (layered hierarchical)', but doesn't explicitly contrast with all layout alternatives.
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 this tool versus other layout tools (e.g., apply_ring_categorical_layout, apply_modularity_weighted_layout) is provided. The description implies it's for hierarchical graphs but doesn't specify prerequisites or exclusions, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_patternsB
Identify patterns, communities, and anomalies within graphs. Runs all supported analyses and returns a combined report.
Args:
graph_id: ID of the graph to analyze
ctx: MCP context for progress reporting
Returns:
Dictionary with results from all analyses that succeeded. Keys may include:
- degree_centrality
- betweenness_centrality
- closeness_centrality
- communities (if community detection is available)
- shortest_path (if path finding is possible)
- path_length
- anomalies (if anomaly detection is available)
- errors (dict of analysis_type -> error message)| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it runs multiple analyses, returns a combined report, and includes error handling. However, it lacks details on performance (e.g., execution time for large graphs), side effects (e.g., whether it modifies the graph), or limitations (e.g., graph size constraints).
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 well-structured and appropriately sized. It starts with a clear purpose statement, then details arguments and returns in separate sections. Every sentence adds value, with no redundancy. However, the 'Returns' section is somewhat lengthy due to listing all possible keys, which could be streamlined or moved to an output schema if available.
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 (running multiple graph analyses) and lack of annotations or output schema, the description is moderately complete. It covers the purpose, parameters, and return structure, but misses contextual details like error conditions, performance implications, or how it integrates with sibling tools. The absence of an output schema means the description must fully explain returns, which it does adequately but not exhaustively.
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 adds significant value beyond the input schema, which has 0% description coverage. It explains that 'graph_id' is the 'ID of the graph to analyze' and 'ctx' is for 'MCP context for progress reporting', clarifying their purposes. Since there are only 2 parameters and the schema provides minimal documentation, this compensation is adequate, though it could elaborate on graph_id format or ctx usage examples.
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: 'Identify patterns, communities, and anomalies within graphs. Runs all supported analyses and returns a combined report.' This specifies the verb ('identify'), resource ('graphs'), and scope ('all supported analyses'). However, it doesn't explicitly differentiate from sibling tools like 'get_graph_info' or 'visualize_graph', which might also analyze graphs but with different approaches.
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 no guidance on when to use this tool versus alternatives. It mentions running 'all supported analyses' but doesn't specify prerequisites (e.g., requires an existing graph), exclusions (e.g., not for simple queries), or when to choose sibling tools like 'get_graph_info' for metadata or 'visualize_graph' for visual output instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_point_badgeA
Set node badge encoding for a graph using Graphistry's encode_point_badge API.
Args:
graph_id (str): The ID of the graph to modify.
column (str): The node column to use for badge encoding (e.g., 'type', 'origin').
position (str, optional): Badge position on the node. Example: 'TopRight', 'BottomLeft', etc.
categorical_mapping (dict, optional): Map of category values to badge icons or images. Example: {'macbook': 'laptop', 'Canada': 'flag-icon-ca'}.
default_mapping (str, optional): Badge to use for values not in categorical_mapping. Example: 'question'.
as_text (bool, optional): If True, use text as the badge (for continuous binning or direct text display).
continuous_binning (list, optional): List of [threshold, badge] pairs for binning continuous values. Example: [[33, None], [66, 'info-circle'], [None, 'exclamation-triangle']].
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
encode_point_badge(graph_id, column='type', position='TopRight', categorical_mapping={'macbook': 'laptop'}, default_mapping='question')
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| column | Yes | ||
| position | No | TopRight | |
| categorical_mapping | No | ||
| default_mapping | No | ||
| as_text | No | ||
| continuous_binning | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the action as modifying a graph and specifies the return format, but lacks details on permissions, side effects (e.g., whether changes are reversible), rate limits, or error handling. The description adds some context (e.g., 'updated visualization URL') but is incomplete for a mutation tool.
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 well-structured with clear sections (purpose, args, returns, example) and uses bullet-like formatting for parameters. However, it includes some redundancy (e.g., repeating 'Example' in the example section) and could be more front-loaded; the core purpose is stated first, but the parameter details are lengthy yet necessary given the low schema coverage.
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 complexity (7 parameters, mutation tool, no annotations, no output schema), the description is fairly complete. It explains all parameters thoroughly, provides an example, and specifies the return format. However, it lacks information on behavioral aspects like error conditions or integration with sibling tools, leaving some gaps in contextual understanding.
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 schema description coverage is 0%, so the description must fully compensate. It provides detailed explanations for all 7 parameters, including examples and optional/default behaviors (e.g., 'position' defaults to 'TopRight', 'categorical_mapping' maps categories to icons). This adds significant meaning beyond the basic schema, clarifying how each parameter influences badge encoding.
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 specific action ('Set node badge encoding for a graph') using the exact API name ('Graphistry's encode_point_badge API'), which distinguishes it from sibling tools like encode_point_color or encode_point_size that handle different visual encodings. The verb 'set' and resource 'graph' are precise and unambiguous.
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 through the example and parameter explanations (e.g., using 'column' for badge encoding), but does not explicitly state when to use this tool versus alternatives like encode_point_icon or encode_point_color. No guidance is provided on prerequisites, such as needing an existing graph, or exclusions for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_point_colorA
Set node color encoding for a graph using Graphistry's encode_point_color API.
Args:
graph_id (str): The ID of the graph to modify (from visualize_graph).
column (str): The node column to use for color encoding (e.g., 'type', 'score').
categorical_mapping (dict, optional): Map of category values to color codes. Example: {'mac': '#F99', 'macbook': '#99F'}. If not provided, Graphistry will auto-assign colors.
default_mapping (str, optional): Color code to use for values not in categorical_mapping. Example: 'silver'.
as_continuous (bool, optional): If True, treat the column as continuous and use a gradient palette. Example: True for numeric columns like 'score'.
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
encode_point_color(graph_id, column='type', categorical_mapping={'mac': '#F99', 'macbook': '#99F'}, default_mapping='silver')
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| column | Yes | ||
| categorical_mapping | No | ||
| default_mapping | No | ||
| as_continuous | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by explaining key behaviors: it modifies an existing graph (implied by 'graph_id' from visualize_graph), describes what happens when categorical_mapping isn't provided (auto-assign colors), and specifies the return format. However, it doesn't mention error conditions, rate limits, or authentication requirements.
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 with a clear purpose statement, organized parameter explanations with examples, return format specification, and a complete usage example. Every sentence adds value without redundancy, and information is appropriately front-loaded with the core functionality stated first.
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?
For a 5-parameter mutation tool with no annotations and no output schema, the description provides substantial context: clear purpose, parameter semantics, return format, and examples. The main gap is lack of explicit error handling or permission requirements, but it covers most essential aspects given the complexity.
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 description coverage, the description fully compensates by providing clear semantic explanations for all 5 parameters: graph_id's source, column's purpose with examples, categorical_mapping's format and default behavior, default_mapping's role, and as_continuous's effect with usage examples. Each parameter's meaning is explained beyond basic type information.
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 specific action ('Set node color encoding for a graph') and identifies the exact resource ('using Graphistry's encode_point_color API'). It distinguishes from sibling tools like encode_point_badge and encode_point_size by focusing specifically on color encoding rather than other visual attributes.
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 context through examples (e.g., 'for numeric columns like 'score'') but doesn't explicitly state when to use this tool versus alternatives like encode_point_badge or encode_point_icon. No explicit exclusions or prerequisites are mentioned, leaving usage guidance at an implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_point_iconA
Set node icon encoding for a graph using Graphistry's encode_point_icon API.
Args:
graph_id (str): The ID of the graph to modify.
column (str): The node column to use for icon encoding (e.g., 'type', 'origin').
categorical_mapping (dict, optional): Map of category values to icon names or URLs. Example: {'macbook': 'laptop', 'Canada': 'flag-icon-ca'}. See FontAwesome 4 or ISO country codes for built-ins.
default_mapping (str, optional): Icon to use for values not in categorical_mapping. Example: 'question'.
as_text (bool, optional): If True, use text as the icon (for continuous binning or direct text display).
continuous_binning (list, optional): List of [threshold, icon] pairs for binning continuous values. Example: [[33, 'low'], [66, 'mid'], [None, 'high']].
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
encode_point_icon(graph_id, column='type', categorical_mapping={'macbook': 'laptop', 'Canada': 'flag-icon-ca'}, default_mapping='question')
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| column | Yes | ||
| categorical_mapping | No | ||
| default_mapping | No | ||
| as_text | No | ||
| continuous_binning | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It clearly indicates this is a mutation operation ('modify'), describes the return format, and provides implementation details about FontAwesome 4 and ISO country codes. However, it doesn't mention permissions needed, whether changes are reversible, rate limits, or error conditions that might occur.
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 well-structured with purpose statement, parameter documentation, return value, and example. While comprehensive, it's appropriately sized for a 6-parameter tool with complex options. Every section earns its place, though the example could be slightly more concise.
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?
For a mutation tool with 6 parameters, 0% schema coverage, and no output schema, the description provides excellent coverage of parameters and return values. It explains the transformation behavior, provides concrete examples, and documents the response format. The main gap is lack of behavioral context around permissions, side effects, or error handling.
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 description coverage, the description fully compensates by providing detailed semantic explanations for all 6 parameters. Each parameter gets clear documentation with examples (categorical_mapping, continuous_binning), usage guidance (column examples), and optional behavior explanations (default_mapping, as_text). The description adds substantial value beyond the bare 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 the specific action ('Set node icon encoding'), target resource ('for a graph using Graphistry's encode_point_icon API'), and distinguishes from siblings like encode_point_color and encode_point_size by focusing specifically on icon encoding. The first sentence provides a complete purpose statement.
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 clear context about when to use this tool (for setting icon encoding on graph nodes) and includes an example showing typical usage. However, it doesn't explicitly state when NOT to use it or mention alternatives like encode_point_badge for different encoding types, though the sibling tool names provide some implicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_point_sizeB
Set node size encoding for a graph using Graphistry's encode_point_size API.
Args:
graph_id (str): The ID of the graph to modify.
column (str): The node column to use for size encoding (e.g., 'score', 'type').
categorical_mapping (dict, optional): Map of category values to sizes. Example: {'mac': 50, 'macbook': 100}. If not provided, Graphistry will auto-assign sizes.
default_mapping (float, optional): Size to use for values not in categorical_mapping. Example: 20.
as_continuous (bool, optional): If True, treat the column as continuous and use a size gradient. Example: True for numeric columns like 'score'.
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
encode_point_size(graph_id, column='score', as_continuous=True)
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| column | Yes | ||
| categorical_mapping | No | ||
| default_mapping | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the action ('Set node size encoding') and mentions the API, but lacks details on permissions, rate limits, side effects, or error handling. It does specify the return format ('dict: { 'graph_id': ..., 'url': ... }'), which adds some behavioral context beyond the basic action.
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 well-structured with clear sections (purpose, args, returns, example) and uses bullet points effectively. It's appropriately sized for a 4-parameter tool. Some minor verbosity exists (e.g., repeating 'Example:' in the example section), but overall it's efficient and front-loaded with the core purpose.
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 4 parameters with 0% schema coverage and no annotations, the description does a decent job explaining parameters and returns. However, it lacks context about when to use this tool versus siblings, doesn't mention authentication or rate limits, and provides minimal error handling information. For a mutation tool (implied by 'Set'), more behavioral context would be beneficial.
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 0%, so the description must compensate. It provides clear semantics for all 4 parameters: 'graph_id' as 'The ID of the graph to modify', 'column' as 'The node column to use for size encoding', 'categorical_mapping' with examples and auto-assign behavior, 'default_mapping' with examples, and 'as_continuous' with usage context. The description adds meaningful context beyond the bare schema titles.
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: 'Set node size encoding for a graph using Graphistry's encode_point_size API.' It specifies the verb ('Set'), resource ('node size encoding for a graph'), and technology context ('Graphistry's encode_point_size API'). However, it doesn't explicitly differentiate from sibling tools like 'encode_point_color' or 'encode_point_icon' beyond the 'size' aspect.
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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'encode_point_color' or 'encode_point_icon' for other encoding types, nor does it explain when size encoding is appropriate compared to other visual properties. The example shows usage but lacks contextual decision-making advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_graph_idsB
Get a list of all stored graph IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get a list' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns paginated results, or what format the list comes in. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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 a single, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information.
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?
For a zero-parameter tool that simply retrieves IDs, the description is adequate but has clear gaps. Without annotations or output schema, it doesn't specify what format the list returns (e.g., array of strings/numbers), whether it's paginated, or any authentication requirements. The description is minimally viable but incomplete for full contextual understanding.
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 tool has zero parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description appropriately doesn't discuss parameters since none exist, which is correct for this case. Baseline for zero parameters is 4.
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 with a specific verb ('Get') and resource ('list of all stored graph IDs'), making it immediately understandable. However, it doesn't differentiate from sibling tools like 'get_graph_info' which might retrieve different graph-related information, preventing a perfect score.
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 no guidance on when to use this tool versus alternatives. With sibling tools like 'get_graph_info' that likely retrieve different graph data, there's no indication of when this tool is appropriate or what distinguishes it from similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_graph_infoC
Get information about a stored graph visualization.
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets information,' implying a read-only operation, but doesn't specify what information is returned (e.g., metadata, structure), whether it requires authentication, has rate limits, or any side effects. For a tool with zero annotation coverage, this is a significant gap in transparency.
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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place, achieving optimal 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 (1 parameter, no annotations, no output schema), the description is incomplete. It doesn't explain the return values, error conditions, or behavioral nuances. For a tool that likely returns structured graph information, the lack of output details and minimal parameter guidance makes it inadequate for full contextual understanding.
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 has 1 parameter with 0% description coverage, and the tool description adds no parameter information beyond what the schema provides. It doesn't explain what 'graph_id' represents (e.g., format, source, validity), leaving the semantics unclear. With low schema coverage, the description fails to compensate, resulting in poor parameter understanding.
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 verb 'Get' and the resource 'information about a stored graph visualization', which is specific and understandable. It distinguishes from siblings like 'get_graph_ids' (which lists IDs) and 'visualize_graph' (which creates visualizations), though not explicitly. However, it lacks explicit sibling differentiation, preventing a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid graph_id), exclusions, or comparisons to siblings like 'get_graph_ids' for listing IDs or 'visualize_graph' for rendering. This leaves the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingB
Health check for Graphistry MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a 'Health check' which implies a read-only diagnostic operation, but doesn't specify what constitutes a successful check, what response to expect, whether it has side effects, or any performance/rate limiting considerations. The description is too minimal for a tool that presumably returns server status information.
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 a single, efficient sentence that immediately communicates the core purpose. There's no wasted verbiage or unnecessary elaboration. It's appropriately sized for a simple diagnostic 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?
For a health check tool with no annotations and no output schema, the description is insufficient. It doesn't explain what constitutes a health check, what information is returned, what success/failure looks like, or how to interpret results. Given the lack of structured metadata, the description should provide more operational context.
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 tool has one optional parameter 'ctx' with 0% schema description coverage. The description doesn't mention parameters at all, but since there's only one optional parameter (context injection for MCP capabilities), this is acceptable. The baseline for 0 parameters would be 4, and having one optional parameter with clear schema documentation (even if not in the description) keeps this at 4.
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 as a 'Health check for Graphistry MCP server' - it specifies the verb ('Health check') and target resource ('Graphistry MCP server'). This distinguishes it from all sibling tools which are graph manipulation/visualization tools, though it doesn't explicitly contrast with them.
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 no guidance on when to use this tool versus alternatives. It doesn't mention typical use cases (e.g., verifying server connectivity, troubleshooting), prerequisites, or relationships to other tools. The agent must infer usage from the purpose statement alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_graph_settingsB
Set visualization settings for a graph using Graphistry's settings API.
Args:
graph_id (str): The ID of the graph to modify.
url_params (dict): Dictionary of Graphistry URL parameters to control visualization. Example: {'pointSize': 0.5, 'edgeInfluence': 2, 'play': 0}.
Returns:
dict: { 'graph_id': ..., 'url': ... } with the updated visualization URL.
Example:
set_graph_settings(graph_id, url_params={'pointSize': 0.5, 'play': 0})
| Name | Required | Description | Default |
|---|---|---|---|
| graph_id | Yes | ||
| url_params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states this is a mutation tool ('Set', 'modify'), implying it changes graph settings, but doesn't disclose behavioral traits like required permissions, whether changes are persistent or reversible, rate limits, or error handling. The description adds minimal context beyond the basic action, leaving significant gaps in understanding the tool's behavior.
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 appropriately sized and front-loaded, starting with a clear purpose statement. It follows with structured sections for Args, Returns, and Example, each adding value without redundancy. Every sentence serves a purpose, making it efficient and easy to scan.
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 (2 parameters with nested objects, no annotations, no output schema), the description is moderately complete. It covers the purpose, parameters, and return format adequately, but lacks behavioral context and usage guidelines. For a mutation tool without annotations, it should do more to explain side effects, permissions, or error cases to be fully comprehensive.
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 adds substantial meaning beyond the input schema, which has 0% description coverage. It explains that 'graph_id' identifies the graph to modify and 'url_params' is a dictionary of Graphistry URL parameters for visualization control, providing an example with specific keys like 'pointSize'. This compensates well for the schema's lack of documentation, though it doesn't detail all possible parameters or constraints.
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 ('Set visualization settings') and target resource ('for a graph using Graphistry's settings API'), which is specific and unambiguous. However, it doesn't explicitly differentiate this tool from its sibling tools like 'visualize_graph' or 'apply_layout', which might also involve graph visualization aspects, leaving some room for confusion about when to choose this specific tool.
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 no guidance on when to use this tool versus alternatives. With multiple sibling tools related to graph visualization and layout (e.g., 'visualize_graph', 'apply_layout', 'apply_group_in_a_box_layout'), there is no mention of prerequisites, specific use cases, or exclusions. The example shows usage but doesn't explain context or trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_graphA
Visualize a graph using Graphistry's GPU-accelerated renderer.
Args:
graph_type (str, optional): Type of graph to visualize. Must be one of "graph" (two-way edges, default), "hypergraph" (many-to-many edges).
graph_data (dict): Dictionary describing the graph to visualize. Fields:
- edges (list, required): List of edges, each as a dict with at least 'source' and 'target' keys (e.g., [{"source": "A", "target": "B"}, ...]) and any other columns you want to include in the edge table
- nodes (list, optional): List of nodes, each as a dict with at least 'id' key (e.g., [{"id": "A"}, ...]) and any other columns you want to include in the node table
- node_id (str, optional): Column name for node IDs, if nodes are provided, must be provided.
- source (str, optional): Column name for edge source (default: "source")
- destination (str, optional): Column name for edge destination (default: "target")
- columns (list, optional): List of column names for hypergraph edge table, use if graph_type is hypergraph.
- title (str, optional): Title for the visualization
- description (str, optional): Description for the visualization
ctx: MCP context for progress reporting
Example (graph):
graph_data = {
"graph_type": "graph",
"edges": [
{"source": "A", "target": "B", "weight": 1},
{"source": "A", "target": "C", "weight": 2},
...
],
"nodes": [
{"id": "A", "label": "Node A"},
{"id": "B", "label": "Node B"},
...
],
"node_id": "id",
"source": "source",
"destination": "target",
"title": "My Graph",
"description": "A simple example graph."
}
Example (hypergraph):
graph_data = {
"graph_type": "hypergraph",
"edges": [
{"source": "A", "target": "B", "group": "G1", "weight": 1},
{"source": "A", "target": "C", "group": "G1", "weight": 1},
...
],
"columns": ["source", "target", "group"],
"title": "My Hypergraph",
"description": "A simple example hypergraph."
}
| Name | Required | Description | Default |
|---|---|---|---|
| graph_data | Yes | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the tool creates visualizations and provides detailed parameter requirements, but doesn't mention performance characteristics (despite referencing GPU acceleration), output format (what kind of visualization is produced), whether it's interactive or static, or any limitations. The description adds value but leaves significant behavioral aspects unspecified.
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 well-structured with clear sections: purpose statement, parameter documentation, and examples. While comprehensive, it's appropriately sized for a complex tool with detailed parameter requirements. The front-loaded purpose statement is clear, and every section adds value, though some information could be more concise.
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 (2 parameters with nested objects, no annotations, no output schema), the description provides strong parameter documentation but lacks important context. It doesn't explain what the visualization output looks like (image, URL, interactive viewer), how to access or use the result, or any limitations/requirements. The examples help but don't fully compensate for missing output information.
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 description coverage, the description fully compensates by providing extensive parameter documentation. It explains both parameters (graph_type and graph_data), their data types, optional/required status, valid values with enums, and detailed field-level documentation for the complex graph_data object including examples for both graph types. This goes far beyond what the minimal schema provides.
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: 'Visualize a graph using Graphistry's GPU-accelerated renderer.' It specifies the exact action (visualize) and resource (graph) with technology details (Graphistry's GPU-accelerated renderer). This distinguishes it from sibling tools that focus on layout, encoding, or analysis rather than visualization.
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 no guidance on when to use this tool versus alternatives. While it explains how to use the tool with examples, it doesn't mention when visualization is appropriate, what types of graphs are best suited, or how this differs from other visualization approaches. No sibling tools are referenced for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, with clear separation between layout, encoding, and management functions. However, some layout tools like 'apply_layout' (general) and specific ones like 'apply_group_in_a_box_layout' could cause confusion due to overlapping functionality, though descriptions help clarify their differences.
Tool names follow a highly consistent verb_noun pattern throughout, such as 'apply_group_in_a_box_layout', 'encode_point_color', and 'get_graph_ids'. All tools use snake_case and start with a verb, making the naming predictable and easy to understand.
With 17 tools, the count is slightly high but reasonable for a graph visualization server covering layout, encoding, analysis, and management. It's well-scoped for the domain, though some tools could potentially be consolidated to reduce complexity.
The toolset provides comprehensive coverage for graph visualization workflows, including creation (visualize_graph), layout (multiple apply_* tools), encoding (encode_point_*), analysis (detect_patterns), settings (set_graph_settings), and management (get_graph_ids, get_graph_info). No obvious gaps are present for the server's purpose.
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
Persistent, portable memory for AI assistants — your private memory graph, from any MCP client.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA graph-based MCP server that provides AI coding agents with persistent memory to store patterns, track complex relationships, and retrieve knowledge across sessions. It leverages graph structures to handle temporal queries and relational paths that traditional vector stores often miss.241MIT
- AlicenseAqualityCmaintenanceAn MCP server that enables LLMs to perform semantic and fulltext searches within Neo4j while executing complex, search-augmented Cypher queries for GraphRAG applications. It provides tools for database schema discovery and supports multi-provider embeddings to facilitate advanced graph traversals.52MIT
- AlicenseNot gradedqualityCmaintenanceA graph database MCP server that lets AI assistants build, analyze, and visualize relationship graphs with algorithms like PageRank and cycle detection.6MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that connects AI assistants to the Data Graphs knowledge graph platform, enabling natural language search, exploration, and querying of graph data.18-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/graphistry/graphistry-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server