Graphistry MCP
OfficialGraphistry MCP 통합
Graphistry와 MCP를 사용하여 대규모 언어 모델을 위한 GPU 가속 그래프 시각화 및 분석.
개요
이 프로젝트는 Graphistry의 강력한 GPU 가속 그래프 시각화 플랫폼과 모델 제어 프로토콜(MCP)을 통합하여 AI 어시스턴트와 LLM(모델 관리)을 위한 고급 그래프 분석 기능을 제공합니다. LLM은 표준화되고 LLM 친화적인 인터페이스를 통해 복잡한 네트워크 데이터를 시각화하고 분석할 수 있습니다.
주요 특징:
Graphistry를 통한 GPU 가속 그래프 시각화
고급 패턴 발견 및 관계 분석
네트워크 분석(커뮤니티 감지, 중심성, 경로 찾기, 이상 감지)
다양한 데이터 형식 지원(Pandas, NetworkX, edge 리스트)
LLM 친화적 API: 그래프 도구를 위한 단일
graph_data사전
Related MCP server: Neo4j GraphRAG MCP Server
🚨 중요: 그래픽 디자인 등록이 필요합니다
이 MCP 서버에서 시각화 기능을 사용하려면 무료 Graphistry 계정이 필요합니다.
hub.graphistry.com 에서 무료 계정에 가입하세요
서버를 시작하기 전에 자격 증명을 환경 변수나
.env파일로 설정하세요.지엑스피1
템플릿은
.env.example참조하세요.
MCP 구성(.mcp.json)
이 프로젝트를 Cursor 또는 다른 MCP 호환 도구와 함께 사용하려면 프로젝트 루트에 .mcp.json 파일이 필요합니다. 템플릿은 .mcp.json.example 형식으로 제공됩니다.
설정:
cp .mcp.json.example .mcp.json.mcp.json 다음과 같이 편집합니다.
환경에 맞는 올바른 경로를 설정하세요(예: 프로젝트 루트, Python 실행 파일, 서버 스크립트)
Graphistry 자격 증명을 설정하세요(또는 환경 변수/.env를 사용하세요)
HTTP와 stdio 모드 중에서 선택하세요:
graphistry-http: HTTP를 통해 연결합니다(url을 서버 포트와 일치하도록 설정하세요)graphistry: stdio를 통해 연결합니다(필요에 따라command,args및env설정합니다)
메모:
.mcp.json.example에는 HTTP 및 stdio 구성이 모두 포함되어 있습니다. 필요에 따라disabled필드를 설정하여 활성화/비활성화할 수 있습니다.환경 변수 설정에 대한 내용은
.env.example참조하세요.
설치
권장 설치(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)또는 다음 설정 스크립트를 사용하세요.
./setup-graphistry-mcp.sh용법
서버 시작
# 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 8080보안 및 자격 증명 처리
서버는 python-dotenv를 사용하여 환경 변수 또는
.env에서 자격 증명을 로드하므로 로컬 개발에.env파일을 안전하게 사용할 수 있습니다.start-graphistry-mcp.sh스크립트는.env소스로 사용하며 서버를 시작하는 가장 강력하고 안전한 방법입니다.
커서(또는 다른 LLM 도구)에 추가
.cursor/mcp.json또는 이와 동등한 구성에 MCP 서버를 추가합니다.{ "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" }, "type": "stdio" } }가상 환경이 사용되었는지 확인하세요(venv의 Python에 대한 전체 경로를 사용하거나 실행하기 전에 활성화).
API 버전이나 자격 증명 누락에 대한 오류가 표시되면 환경 변수와 등록을 다시 한번 확인하세요.
예: 그래프 시각화(LLM 친화적 API)
기본 도구인 visualize_graph 는 이제 단일 graph_data 사전을 허용합니다. 예:
{
"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."
}
}예시(하이퍼그래프):
{
"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."
}
}사용 가능한 MCP 도구
그래프 시각화, 분석 및 조작에 사용할 수 있는 MCP 도구는 다음과 같습니다.
visualize_graph : Graphistry의 GPU 가속 렌더러를 사용하여 그래프나 하이퍼그래프를 시각화합니다.
get_graph_ids : 현재 세션에 저장된 모든 그래프 ID를 나열합니다.
get_graph_info : 저장된 그래프의 메타데이터(노드/에지 수, 제목, 설명)를 가져옵니다.
apply_layout : 그래프에 표준 레이아웃(force_directed, radial, circle, grid)을 적용합니다.
detect_patterns : 네트워크 분석(중심성, 커뮤니티 감지, 경로 찾기, 이상 감지)을 실행합니다.
encode_point_color : 열(범주형 또는 연속형)별로 노드 색상 인코딩을 설정합니다.
encode_point_size : 열(범주형 또는 연속형)별로 노드 크기 인코딩을 설정합니다.
encode_point_icon : 열별로 노드 아이콘 인코딩을 설정합니다(범주형, 아이콘 매핑 또는 비닝 포함).
encode_point_badge : 열(범주형, 아이콘 매핑 또는 비닝)별로 노드 배지 인코딩을 설정합니다.
apply_ring_categorical_layout : 범주형 열(예: 그룹/유형)을 기준으로 노드를 링 형태로 배열합니다.
apply_group_in_a_box_layout : 노드를 그룹형 상자 레이아웃으로 배열합니다(igraph 필요).
apply_modularity_weighted_layout : 모듈성 가중치 레이아웃에 따라 노드를 정렬합니다(igraph 필요).
apply_ring_continuous_layout : 노드를 연속된 열(예: 점수)을 기준으로 링 형태로 배열합니다.
apply_time_ring_layout : datetime 열(예: created_at)을 기준으로 노드를 링 형태로 배열합니다.
apply_tree_layout : 노드를 트리(계층적) 레이아웃으로 배열합니다.
set_graph_settings : 고급 시각화 설정(포인트 크기, 모서리 영향 등)을 설정합니다.
기여하다
PR 및 이슈 공유를 환영합니다! LLM 기반 그래프 분석 및 도구 통합에 대한 지식이 더 많아짐에 따라 이 프로젝트는 빠르게 발전하고 있습니다.
특허
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- Added
ping
16 tool updates
- First observed
apply_group_in_a_box_layout - First observed
apply_layout - First observed
apply_modularity_weighted_layout - First observed
apply_ring_categorical_layout - First observed
apply_ring_continuous_layout - First observed
apply_time_ring_layout - First observed
apply_tree_layout - First observed
detect_patterns - First observed
encode_point_badge - First observed
encode_point_color - First observed
encode_point_icon - First observed
encode_point_size - First observed
get_graph_ids - First observed
get_graph_info - First observed
set_graph_settings - First observed
visualize_graph
TDQS
Scored across 17 tools
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
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.
Repository knowledge graph MCP server for codebase understanding and debugging.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
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.247MIT
- 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.53MIT
- 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.4 npm-