Skip to main content
Glama
tigergraph

tigergraph-mcp

Official
by tigergraph

tigergraph-mcp

Model Context Protocol (MCP) server for TigerGraph — lets AI agents interact with TigerGraph through the MCP standard. All tools use pyTigerGraph's async APIs for optimal performance.

Table of Contents

Related MCP server: Memgraph MCP Server

Requirements

Recommended: TigerGraph 4.2+ to enable TigerVector and advanced hybrid retrieval features.

Installation

Install with pip:

pip install tigergraph-mcp

Or with conda (from the tigergraph channel):

conda install -c tigergraph tigergraph-mcp

This installs:

  • pyTigerGraph>=2.0.4 — the TigerGraph Python SDK

  • mcp>=1.0.0 — the MCP SDK

  • pydantic>=2.0.0 — for data validation

  • click — for the CLI entry point

  • python-dotenv>=1.0.0 — for loading .env files

To serve over HTTP (--transport streamable-http or sse), also install a web stack:

pip install uvicorn starlette

To enable the tigergraph__generate_gsql and tigergraph__generate_cypher tools (LLM-powered query generation), install the optional [llm] extras (pip only):

pip install "tigergraph-mcp[llm]"

Getting Started

TigerGraph-MCP supports multiple AI agent frameworks. Choose the one that fits your workflow:

LangGraph is ideal for building stateful, agent-based workflows with complex tool chaining. Setup guide and full chatbot example:

CrewAI

CrewAI provides a simpler starting point for basic agentic workflows with a web-based UI:

GitHub Copilot Chat (VS Code)

For quick tasks or straightforward tool invocations directly in your editor:

Usage

Running the MCP Server

stdio (default — single user, one IDE/agent)

tigergraph-mcp

The server talks MCP over its own stdin and stdout: it reads JSON-RPC messages from standard input and writes replies to standard output, then exits when standard input closes. Run it in a terminal and it simply waits for messages — there is no prompt and no human-facing console. You normally never start it this way; the MCP client (Claude Code, Cursor, GitHub Copilot Chat, a LangChain agent) spawns it as a subprocess and owns the pipes. Running it by hand is mainly useful for checking that it starts:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"manual","version":"1"}}}' \
  | tigergraph-mcp

Because the client owns the process, credentials must reach it as environment variables — from a .env file, or from the client's own env mapping. This is the right mode for any single-user IDE integration.

With a custom .env file:

tigergraph-mcp --env-file /path/to/.env

With verbose logging:

tigergraph-mcp -v    # INFO level
tigergraph-mcp -vv   # DEBUG level

Or programmatically:

from tigergraph_mcp import serve
import asyncio

asyncio.run(serve())

Streamable HTTP / SSE (multi-user, shared server)

tigergraph-mcp --transport streamable-http --host 0.0.0.0 --port 8000
# legacy SSE shape:
tigergraph-mcp --transport sse --host 0.0.0.0 --port 8000

Here the server binds the chosen port and serves MCP over HTTP, staying up until you stop it — a long-lived service you start once, not a process a client spawns. Many clients connect to it concurrently, each getting its own isolated TigerGraph connections, and it does not read standard input at all. Requires uvicorn and starlette.

HTTP Mode End-to-End walks through configuring, starting, and connecting to one.

Configuration

The MCP server reads connection configuration from environment variables. You can set these either directly or in a .env file.

Create a .env file in your project directory:

# .env — Username/Password authentication
TG_HOST=http://localhost
TG_GRAPHNAME=MyGraph  # Optional — can be omitted if the database has multiple graphs
TG_USERNAME=tigergraph
TG_PASSWORD=tigergraph
TG_RESTPP_PORT=9000
TG_GS_PORT=14240

Or use an API token instead of username/password:

# .env — API Token authentication
TG_HOST=http://localhost
TG_GRAPHNAME=MyGraph
TG_API_TOKEN=your_api_token_here

When TG_API_TOKEN (or TG_JWT_TOKEN) is set, the server uses token-based authentication (Authorization: Bearer <token>) and ignores username/password. You can obtain a token via pyTigerGraph's getToken() method or by directly calling TigerGraph's token generation endpoint.

When only username/password are provided and the TigerGraph instance requires a token for RESTPP endpoints, pyTigerGraph auto-mints one on the first 401 response and transparently retries the request — no manual token setup needed.

The server loads the .env file automatically. Environment variables take precedence over .env values.

Environment Variables

Variable

Default

Description

TG_HOST

http://127.0.0.1

TigerGraph host

TG_GRAPHNAME

(empty)

Graph name (optional)

TG_USERNAME

tigergraph

Username

TG_PASSWORD

tigergraph

Password

TG_SECRET

(empty)

GSQL secret (optional)

TG_API_TOKEN

(empty)

API token (optional)

TG_JWT_TOKEN

(empty)

JWT token (optional)

TG_RESTPP_PORT

9000

REST++ port

TG_GS_PORT

14240

GSQL port

TG_SSL_PORT

443

SSL port

TG_TGCLOUD

false

Whether using TigerGraph Cloud

TG_CERT_PATH

(empty)

Path to certificate (optional)

TG_LOG_TOOL_CALLS

false

Log one line per tool call

TG_LOG_CALLER_IDENTITY

none

Caller identity in those lines: none, profile, or username

Multiple Connection Profiles

Define named profiles in your .env to work with multiple TigerGraph environments without changing any code.

Defining profiles

Each named profile uses a <PROFILE>_ prefix on the standard TG_* variables. Only variables that differ from the default need to be set.

# .env

# Default profile (no prefix) — password auth
TG_HOST=http://localhost
TG_USERNAME=tigergraph
TG_PASSWORD=tigergraph
TG_GRAPHNAME=MyGraph

# Staging profile — token auth
STAGING_TG_HOST=https://staging.example.com
STAGING_TG_API_TOKEN=staging_token_here
STAGING_TG_TGCLOUD=true

# Production profile — password auth
PROD_TG_HOST=https://prod.example.com
PROD_TG_USERNAME=admin
PROD_TG_PASSWORD=prod_secret
PROD_TG_GRAPHNAME=ProdGraph
PROD_TG_TGCLOUD=true

Profiles are discovered automatically at startup. Any variable matching <PROFILE>_TG_HOST registers a new profile. Values not set for a named profile fall back to the default profile's values.

Selecting the default profile

# Switch to staging for this run
TG_DEFAULT_PROFILE=staging tigergraph-mcp

# Or set permanently in .env
TG_DEFAULT_PROFILE=prod

TG_DEFAULT_PROFILE names the profile used when a call does not specify one. If it is not set, the unprefixed TG_* variables are the default profile. TG_PROFILE is accepted as an alias.

Omitting the profile argument and passing profile="default" mean the same thing — the default profile — in both stdio and HTTP mode.

Switching profiles per call

Every tool accepts an optional profile argument, so an agent can route individual calls to different environments without restarting the server. Connections are pooled per profile and reused across calls. list_connections reports the configured profiles, which one is the default, and which are currently connected — in HTTP mode scoped to the calling session.

User: Compare the vertex count of MyGraph between staging and prod.

Agent:
  → get_vertex_count(profile="staging", graph_name="MyGraph")
  → get_vertex_count(profile="prod",    graph_name="MyGraph")

User: Show me the schema on staging, then run this GSQL on prod:
      SHOW VERTEX Person

Agent:
  → get_graph_schema(profile="staging", graph_name="MyGraph")
  → gsql(profile="prod", command="SHOW VERTEX Person")

Helping the agent pick the right environment

Users normally name an environment the way it is configured — "staging", "the prod cluster". list_connections reports each profile's name and its host, so the agent can also resolve the occasional bare hostname or URL to the profile that reaches it:

{
  "default_profile": "dev",
  "profiles": [
    {"profile": "dev",     "host": "http://localhost",                "username": "tigergraph", "is_default": true,  "connected": true},
    {"profile": "prod",    "host": "https://mycompany.i.tgcloud.io",  "username": "analyst",    "is_default": false, "connected": false},
    {"profile": "staging", "host": "https://tg-staging.example.com",  "username": "analyst",    "is_default": false, "connected": false}
  ]
}

Note that prod's host carries no hint of the profile name, so a user who names that host cannot be served by guessing from profile names alone.

A system prompt that puts that to work:

You are a TigerGraph assistant. The tigergraph-mcp server may be configured
with several environments, each identified by a profile name.

Discovering profiles
- Call `list_connections` before your first data access, and again whenever
  the user mentions an environment you have not seen.
- Each profile reports its name, host, and username, which one is the
  default, and which are already connected.
- Never invent or hardcode a profile name.

Choosing one
- Users normally name an environment, not a machine. If the user names a
  profile ("use staging", "on the prod cluster"), use that profile.
- If the user names a host or URL instead, match it against the `host`
  field. Several profiles may share one host, differing only in the user
  they connect as. In that case run the request against every matching
  profile and report the results per profile, rather than asking which
  one was meant.
- If nothing matches what the user named, say so and list the configured
  profiles with their hosts. Do not guess.
- If the user says nothing about an environment, use the default profile
  and mention which one you used.

Using one
- Pass `profile="<name>"` on every tool call meant for that environment.
- A single turn may use different profiles when the user compares
  environments.

Reporting
- Answer about the environments the user asked about. Do not list the
  profiles you considered and skipped, and do not narrate the lookup.
- Name the environment alongside each answer, so the user knows which
  one it came from — especially when reporting more than one.

With that prompt, a site named in plain language resolves to a profile:

User: How many vertices does MyGraph have on staging?

Agent:
  → get_vertex_count(profile="staging", graph_name="MyGraph")
  "On staging: 1,204 vertices."

User: And on mycompany.i.tgcloud.io?          # a host, not an environment

Agent:                                        # tool calls, not shown to the user
  → list_connections()                        # prod and prod_ro share that host
  → get_vertex_count(profile="prod",    graph_name="MyGraph")
  → get_vertex_count(profile="prod_ro", graph_name="MyGraph")

Agent replies:
  "Two profiles reach that host:
     prod (as analyst):     1,204 vertices
     prod_ro (as readonly): 1,204 vertices"

The reply names the environment behind each number and says nothing about dev or staging, which the user did not ask about.

Omitting profile, or passing "default", uses the default profile — TG_DEFAULT_PROFILE if set (or its alias TG_PROFILE), otherwise the unprefixed TG_* variables.

HTTP Mode End-to-End

Run one shared server that several people or services connect to. Five steps.

1. Install with the web stack

pip install tigergraph-mcp uvicorn starlette

2. Describe your TigerGraph sites

Put the environments in an env file. The unprefixed TG_* variables are the default profile; each <NAME>_TG_* group adds another. Credentials here are optional — include them for a shared or demo deployment, omit them to require every client to send its own:

# /etc/tigergraph-mcp/.env
TG_DEFAULT_PROFILE=prod

PROD_TG_HOST=https://mycompany.i.tgcloud.io
PROD_TG_USERNAME=analyst
PROD_TG_PASSWORD=...

STAGING_TG_HOST=https://tg-staging.example.com
STAGING_TG_USERNAME=analyst
STAGING_TG_PASSWORD=...

3. Start the server

tigergraph-mcp --transport streamable-http \
  --host 0.0.0.0 --port 8000 \
  --env-file /etc/tigergraph-mcp/.env

It binds the port and serves until stopped, so run it under systemd, a container, or whatever supervises your services. Put a reverse proxy or API gateway in front for TLS and to control who may reach the URL.

4. Check that it is up

curl -s -o /dev/null -w '%{http_code}\n' -X POST http://localhost:8000/mcp/ \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

Response

Meaning

200

Up, and the default profile's credentials work

400

Up, but the request does not name a reachable site (e.g. an unknown profile)

401

Up, but no usable credentials — the client must send them

502

Up, but TigerGraph itself could not be reached

307

You omitted the trailing slash on /mcp/

connection refused

The server is not running

5. Point a client at it

The URL is http://<host>:<port>/mcp/ — keep the trailing slash. Credentials, when the client supplies them, travel as X-TG-* headers; omit them to use the server's default profile as configured.

Cursor, VS Code, or any editor using mcp.json:

{
  "servers": {
    "tigergraph-mcp-server": {
      "type": "http",
      "url": "http://localhost:8000/mcp/",
      "headers": {
        "X-TG-Profile": "staging"
      }
    }
  }
}

The scheme is whatever the server is reachable on. tigergraph-mcp itself serves plain HTTP and does not terminate TLS, so use http:// when connecting to it directly. A deployed instance normally sits behind a reverse proxy that adds TLS, in which case the URL is the proxy's — https://my-tg-mcp.internal/mcp/. Credentials travel in headers, so anything beyond localhost should be https://.

To connect as yourself rather than as the profile's configured user, add your own credentials — keeping secrets out of the file by referencing the environment:

      "headers": {
        "X-TG-Host": "https://mycompany.i.tgcloud.io",
        "X-TG-Api-Token": "${env:TG_API_TOKEN}"
      }

Python, LangChain, or any MCP SDK client: see Client Examples for runnable versions of both. The HTTP client API differs between MCP SDK generations, so check which one you have with pip show mcp:

# MCP SDK 2.x
import httpx2
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client

async with httpx2.AsyncClient(headers={"X-TG-Profile": "staging"}) as http_client:
    async with streamable_http_client(
        "http://localhost:8000/mcp/", http_client=http_client
    ) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            await session.call_tool("tigergraph__list_graphs", {})
# MCP SDK 1.x
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client(
    "http://localhost:8000/mcp/", headers={"X-TG-Profile": "staging"}
) as (read, write, _):
    async with ClientSession(read, write) as session:
        await session.initialize()
        await session.call_tool("tigergraph__list_graphs", {})

Which connection a request gets

Profiles come from the server's env file, exactly as in Multiple Connection Profiles above. A request picks one with X-TG-Profile, and any other X-TG-* header overrides that profile's value for that session only:

Headers sent

Connection used

X-TG-Profile only

that profile's topology and its configured credentials

X-TG-Profile + credential headers

that profile's topology, the caller's identity

Credential headers only

the default profile's topology, the caller's identity

No headers

the default profile exactly as configured

Whether profiles carry credentials at all is your decision when writing the env file. Credentials there are a shared identity usable by anyone who can reach the server, which suits a demo or single-user deployment; an env file with topology only forces every caller to identify itself, which is what you want when several people share the server.

Recognised headers mirror the TG_* variables used in stdio mode:

Header

Env-var equivalent

X-TG-Profile

selects a server-side profile (<PROFILE>_TG_*)

X-TG-Host

TG_HOST

X-TG-Graphname

TG_GRAPHNAME

X-TG-Username + X-TG-Password

TG_USERNAME + TG_PASSWORD

X-TG-Secret

TG_SECRET

X-TG-Api-Token

TG_API_TOKEN

X-TG-Jwt-Token

TG_JWT_TOKEN

X-TG-Restpp-Port, X-TG-Gs-Port, X-TG-Ssl-Port

TG_RESTPP_PORT, TG_GS_PORT, TG_SSL_PORT

X-TG-Tgcloud (true/false)

TG_TGCLOUD

X-TG-Cert-Path

TG_CERT_PATH

Once connected, a tool call may still name any configured profile with its profile argument; that connection opens in the calling session and is never shared with another.

Serving several users

Each session gets its own connections, so concurrent users never share state or credentials. Two patterns work:

  • Each person's editor connects directly, with their own profile or credentials in mcp.json — the configuration shown above.

  • An application connects on its users' behalf, opening one session per logged-in user with that user's credentials in the headers, held for their lifetime so the LLM never sees credentials. A working reference is in examples/multi_user_backend/.

Two settings matter for a long-running server: TG_HTTP_SESSION_IDLE_TIMEOUT (default 900s) reclaims connections from sessions that have gone quiet, and TG_HTTP_ALLOWED_PROFILES=demo,staging narrows which profiles clients may name.

Access control to the endpoint itself is the deployment's responsibility — the server checks TigerGraph credentials, not who may reach the URL. Put a reverse proxy or API gateway in front, which is also where TLS belongs.

The authenticate tool can re-point a live session mid-conversation, which is not needed when credentials arrive as headers.

Serving a Subset of the Tools

All 69 tools are offered by default. An agent carries every tool it is given on every request, so a deployment that only needs some of them can say so:

# only the tools that read
tigergraph-mcp --allowed-tools read-only

# a task-shaped subset
tigergraph-mcp --allowed-tools schema,query

# everything except the ones that remove data
tigergraph-mcp --blocked-tools destructive

TG_ALLOWED_TOOLS and TG_BLOCKED_TOOLS do the same from the environment or an env file; the flags win where both are set.

A selector is a comma-separated list of:

Selector

Meaning

schema, data, query, vector, loading, utility, discovery

a category

read-only

the tools that change nothing

destructive

the tools that may remove or overwrite something

list_graphs, tigergraph__list_graphs

one tool, with or without the prefix

--blocked-tools is applied after --allowed-tools, so --allowed-tools schema --blocked-tools drop_graph serves the schema tools without that one. An unrecognised selector stops the server at startup rather than quietly serving a short list, and a selection that leaves nothing to serve is likewise an error.

Roughly what each choice costs an agent:

Served

Tools

~Tokens

everything

69

29,100

read-only

37

12,400

schema,query

21

9,100

Note that discovery and utility are not added automatically. If you narrow by category, include them where the agent needs to discover tools or route calls by profile: --allowed-tools schema,query,discovery,utility.

Per-session narrowing over HTTP

A client may restrict its own session with an X-TG-Tools header, using the same selectors:

{
  "servers": {
    "tigergraph-mcp-server": {
      "type": "http",
      "url": "http://localhost:8000/mcp/",
      "headers": {
        "X-TG-Profile": "prod",
        "X-TG-Tools": "read-only"
      }
    }
  }
}

This only ever narrows. A session cannot reach a tool the deployment withheld, so asking for destructive on a server started with --blocked-tools destructive yields no tools rather than the blocked ones.

What a tool declares about itself

Every tool carries the MCP behavioural hints, which is how an editor decides whether to run something silently or ask first:

"annotations": {
  "title": "Drop graph",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true,
  "openWorldHint": false
}

These reach the client, not the model, so they cost nothing in context. read-only and destructive selectors resolve from the same classification. Tools that execute caller-supplied query text — gsql, run_query, run_installed_query — are marked destructive, because what they do depends on the text they are given.

Logging Tool Calls

Nothing is logged about tool calls by default. A shared deployment usually wants a record of what has been run against an instance:

tigergraph-mcp --transport streamable-http --log-tool-calls

One line per call goes to stderr:

tool call tool=tigergraph__drop_graph session=b1f2c3 host=https://mycompany.i.tgcloud.io

Who made the call is a separate opt-in, because a TigerGraph account name generally identifies a person. It requires --log-tool-calls — on its own it does nothing, and the server says so at startup:

# the connection profile the call used
tigergraph-mcp --log-tool-calls --log-caller profile

# the TigerGraph account as well
tigergraph-mcp --log-tool-calls --log-caller username

--log-caller

Line carries

none (default)

tool, session, host

profile

the above, plus the connection profile

username

the above, plus the account name and how it authenticated

tool call tool=tigergraph__drop_graph session=b1f2c3 host=https://mycompany.i.tgcloud.io profile=prod user=alice auth=password

TG_LOG_TOOL_CALLS and TG_LOG_CALLER_IDENTITY do the same from the environment or an env file; the flags win where both are set. TG_LOG_CALLER_IDENTITY is gated the same way, so leaving it in an env file has no effect until tool-call logging is turned on — and turning it on later will not silently start writing account names.

Two things to know before turning on username:

  • Callers who authenticate with a token or a GSQL secret appear as user=-. TigerGraph tokens do not tell the server which account is behind them, so there is no name to record.

  • The logs then contain personal data. Whatever retention, access, and disclosure rules apply to your other logs apply to these. profile is the smaller disclosure and is often enough — it says which configured connection was used without naming anyone.

In stdio mode there is a single configured identity for the process, so every line carries the same profile and account. The record is more useful over HTTP, where each session authenticates separately.

Never logged, at any setting: passwords, GSQL secrets, API and JWT tokens, and tool arguments — arguments hold query text and vertex payloads, which is graph data rather than an audit record. Access to the endpoint itself is still the deployment's concern; a reverse proxy is where request-level access logs belong.

Using with Existing Connection

from pyTigerGraph import AsyncTigerGraphConnection
from tigergraph_mcp import ConnectionManager

async with AsyncTigerGraphConnection(
    host="http://localhost",
    graphname="MyGraph",
    username="tigergraph",
    password="tigergraph",
) as conn:
    ConnectionManager.set_default_connection(conn)
    # ... run MCP tools ...
# HTTP connection pool is released on exit

Client Examples

Hold one session for the run. MultiServerMCPClient(...) connects nothing, and await client.get_tools() opens a session only to list the tools, then closes it — the returned tools carry a connection config, so each tool call opens a new session. Over stdio that spawns a tigergraph-mcp process per call; over HTTP it creates a session, a connection, and a credential check per call. Binding tools to a session held open by client.session(...) reuses one process (or one session and its pooled connection) for the whole run — in a measured 8-call agent run, 1 session instead of 9, and roughly 4× faster. Use get_tools() only for one-shot scripts.

LangChain / LangGraph over stdio

The client starts tigergraph-mcp as a subprocess and passes credentials as env vars.

import asyncio
from pathlib import Path

from dotenv import dotenv_values
from langchain.chat_models import init_chat_model
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent

env_dict = dotenv_values(dotenv_path=Path(".env").expanduser().resolve())

client = MultiServerMCPClient(
    {
        "tigergraph-mcp-server": {
            "transport": "stdio",
            "command": "tigergraph-mcp",
            "args": ["-vv"],
            "env": env_dict,
        },
    }
)


async def main():
    # One session for the whole run; every tool call reuses it.
    async with client.session("tigergraph-mcp-server") as session:
        tools = await load_mcp_tools(session)

        agent = create_react_agent(init_chat_model("openai:gpt-4.1-mini"), tools)
        result = await agent.ainvoke(
            {"messages": [{"role": "user", "content": "Which graphs are available?"}]}
        )
        print(result["messages"][-1].content)


asyncio.run(main())

create_react_agent is one option; init_chat_model(...).bind_tools(tools) works too if you are driving the model yourself. Either way, build the agent inside the session so the tools stay bound to it.

Note: Instead of loading a .env file, you can pass credentials directly in the env mapping:

    "env": {
      "TG_HOST": "http://localhost",
      "TG_USERNAME": "tigergraph",
      "TG_PASSWORD": "tigergraph",
      "TG_GRAPHNAME": "MyGraph"
    }

Either way the credentials must be in env: the subprocess does not inherit your shell environment.

LangChain / LangGraph over HTTP

The server is already running elsewhere; the client only connects. Credentials travel as headers, so nothing about TigerGraph needs to be configured on this side.

import asyncio

from langchain.chat_models import init_chat_model
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent

client = MultiServerMCPClient(
    {
        "tigergraph-mcp-server": {
            "transport": "streamable_http",
            "url": "http://localhost:8000/mcp/",   # trailing slash required
            "headers": {
                # Omit these entirely to use the server's default profile.
                "X-TG-Profile": "staging",
                "X-TG-Username": "my_user",
                "X-TG-Password": "my_password",
            },
        },
    }
)


async def main():
    async with client.session("tigergraph-mcp-server") as session:
        tools = await load_mcp_tools(session)

        agent = create_react_agent(init_chat_model("openai:gpt-4.1-mini"), tools)
        result = await agent.ainvoke(
            {"messages": [{"role": "user", "content": "How many vertices are in MyGraph?"}]}
        )
        print(result["messages"][-1].content)


asyncio.run(main())

MCP SDK over stdio

stdio_client does not pass your environment to the subprocess — it forwards only a minimal safe set (HOME, PATH, SHELL, …). Credentials must be supplied explicitly via env, or the server will fall back to its defaults and try http://127.0.0.1.

import asyncio
from pathlib import Path

from dotenv import dotenv_values
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import get_default_environment, stdio_client

env_dict = dotenv_values(dotenv_path=Path(".env").expanduser().resolve())


async def main():
    server_params = StdioServerParameters(
        command="tigergraph-mcp",
        args=["-vv"],
        env={**get_default_environment(), **env_dict},
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            tools = await session.list_tools()
            print(f"Available tools: {[t.name for t in tools.tools]}")

            result = await session.call_tool("tigergraph__list_graphs", arguments={})
            for content in result.content:
                print(content.text)


asyncio.run(main())

MCP SDK over HTTP

The HTTP client API changed between MCP SDK generations. Check yours with pip show mcp — a fresh pip install currently gets 2.x. In 1.x the function took headers and yielded three values; in 2.x it takes an http_client carrying the headers and yields two.

# MCP SDK 2.x
import asyncio

import httpx2
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client

URL = "http://localhost:8000/mcp/"           # trailing slash required
HEADERS = {                                  # omit to use the default profile
    "X-TG-Profile": "staging",
}


async def main():
    async with httpx2.AsyncClient(headers=HEADERS) as http_client:
        async with streamable_http_client(URL, http_client=http_client) as (read, write):
            async with ClientSession(read, write) as session:
                await session.initialize()

                tools = await session.list_tools()
                print(f"Available tools: {[t.name for t in tools.tools]}")

                # Every call reuses this session's pooled connection.
                result = await session.call_tool("tigergraph__list_graphs", arguments={})
                for content in result.content:
                    print(content.text)

                # Route one call to another configured profile.
                await session.call_tool(
                    "tigergraph__list_graphs", arguments={"profile": "prod"}
                )


asyncio.run(main())
# MCP SDK 1.x
import asyncio

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

URL = "http://localhost:8000/mcp/"
HEADERS = {"X-TG-Profile": "staging"}


async def main():
    async with streamablehttp_client(URL, headers=HEADERS) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            result = await session.call_tool("tigergraph__list_graphs", arguments={})
            for content in result.content:
                print(content.text)


asyncio.run(main())

Available Tools

Global Schema Operations

  • tigergraph__get_global_schema — Get the complete global schema via GSQL LS

Graph Operations

  • tigergraph__list_graphs — List all graph names in the database

  • tigergraph__create_graph — Create a new graph with schema

  • tigergraph__drop_graph — Drop a graph and its schema

  • tigergraph__clear_graph_data — Clear all data from a graph (keeps schema)

Schema Operations

  • tigergraph__get_graph_schema — Get schema as structured JSON

  • tigergraph__show_graph_details — Show schema, queries, loading jobs, and data sources

Node Operations

  • tigergraph__add_node / tigergraph__add_nodes

  • tigergraph__get_node / tigergraph__get_nodes

  • tigergraph__delete_node / tigergraph__delete_nodes

  • tigergraph__has_node

  • tigergraph__get_node_edges

Edge Operations

  • tigergraph__add_edge / tigergraph__add_edges

  • tigergraph__get_edge / tigergraph__get_edges

  • tigergraph__delete_edge / tigergraph__delete_edges

  • tigergraph__has_edge

Query Operations

  • tigergraph__run_query — Run an interpreted query

  • tigergraph__run_installed_query — Run an installed query

  • tigergraph__install_query / tigergraph__drop_query

  • tigergraph__show_query / tigergraph__get_query_metadata / tigergraph__is_query_installed

  • tigergraph__update_query_description / tigergraph__get_query_description — Set or read query and per-parameter descriptions (TigerGraph 4.0+)

  • tigergraph__get_neighbors

Loading Job Operations

  • tigergraph__create_loading_job — from files, or from a data_source + query pair to load the result of a SQL query against a warehouse

  • tigergraph__run_loading_job_with_file / tigergraph__run_loading_job_with_data

  • tigergraph__get_loading_jobs / tigergraph__get_loading_job_status

  • tigergraph__drop_loading_job

Statistics Operations

  • tigergraph__get_vertex_count / tigergraph__get_edge_count

  • tigergraph__get_node_degree

GSQL Operations

  • tigergraph__gsql — Execute raw GSQL

  • tigergraph__generate_gsql — Generate GSQL from natural language (requires [llm])

  • tigergraph__generate_cypher — Generate openCypher from natural language (requires [llm])

Vector Schema Operations

  • tigergraph__add_vector_attribute / tigergraph__drop_vector_attribute

  • tigergraph__list_vector_attributes / tigergraph__get_vector_index_status

Vector Data Operations

  • tigergraph__upsert_vectors

  • tigergraph__load_vectors_from_csv / tigergraph__load_vectors_from_json

  • tigergraph__search_top_k_similarity / tigergraph__fetch_vector

Data Source Operations

  • tigergraph__create_data_source / tigergraph__update_data_source

  • tigergraph__get_data_source / tigergraph__drop_data_source

  • tigergraph__get_all_data_sources / tigergraph__drop_all_data_sources

  • tigergraph__get_data_source_types — List supported types and their configuration keys

  • tigergraph__preview_sample_data

Supported data source types:

Family

Types

Object storage

s3, gcs, abs (alias: azure_blob)

Data warehouse

snowflake, bigquery, postgresql

Lakehouse

iceberg

Streaming

kafka, kafka_v2, mirrormaker

Each type takes different configuration keys. Call tigergraph__get_data_source_types for the required keys and a worked example, or see Loading from a data warehouse.

Credentials in config are sent to TigerGraph but masked in tool responses, so they do not appear in a conversation transcript.

Connection / Session

  • tigergraph__list_connections / tigergraph__show_connection — Inspect configured profiles

  • tigergraph__authenticate — Register per-session TigerGraph credentials (HTTP/SSE mode)

Discovery & Navigation

  • tigergraph__discover_tools — Search for tools by description or keywords

  • tigergraph__get_workflow — Get step-by-step workflow templates

  • tigergraph__get_tool_info — Get detailed information about a specific tool

LLM-Friendly Features

Structured Responses

Every tool returns a consistent JSON structure:

{
  "success": true,
  "operation": "get_node",
  "summary": "Found vertex 'p123' of type 'Person'",
  "data": { ... },
  "suggestions": ["View connected edges: get_node_edges(...)"],
  "metadata": { "graph_name": "MyGraph" }
}

Error responses include actionable recovery hints:

{
  "success": false,
  "operation": "get_node",
  "error": "Vertex not found",
  "suggestions": ["Verify the vertex_id is correct"]
}

Rich Tool Descriptions

Each tool includes detailed descriptions with use cases, common workflows, tips, warnings, and related tools.

Token Optimization

Responses are designed for efficient LLM token usage — no echoing of input parameters, only new information (results, counts, boolean answers).

Tool Discovery

# Find the right tool
result = await session.call_tool("tigergraph__discover_tools",
    arguments={"query": "how to add data to the graph"})

# Get a workflow template
result = await session.call_tool("tigergraph__get_workflow",
    arguments={"workflow_type": "data_loading"})

# Get detailed tool info
result = await session.call_tool("tigergraph__get_tool_info",
    arguments={"tool_name": "tigergraph__add_node"})

Notes

  • Transport: stdio by default

  • Error Detection: GSQL operations include error detection for syntax and semantic errors

  • Connection Management: Connections are pooled by profile and reused across requests; pool is released at server shutdown

  • Performance: Persistent HTTP connection pool per profile; async non-blocking I/O; v.outdegree() for O(1) degree counting; batch operations for multiple vertices/edges

Available Tools

69 tools
tigergraph__add_edgeA
Idempotent

Add a single edge (relationship) to a TigerGraph graph connecting two vertices.

Use When: • Creating a relationship between two entities • Connecting vertices in the graph • Building graph structure • Adding individual relationships

Quick Start:

{
  "source_vertex_type": "Person",
  "source_vertex_id": "user1",
  "edge_type": "FOLLOWS",
  "target_vertex_type": "Person",
  "target_vertex_id": "user2",
  "attributes": {"since": "2024-01-15"}
}

Common Workflow:

  1. Ensure both source and target vertices exist (use 'add_node')

  2. Call 'add_edge' to create relationship

  3. Optionally add edge attributes (like timestamps)

  4. Verify with 'get_neighbors' or 'get_node_edges'

Tips: • Both vertices must exist before adding edge • Edge type must match schema definition • For multiple edges, use 'add_edges' (more efficient) • Edge attributes are optional

Related Tools: add_edges, add_node, get_neighbors, delete_edge

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeYesType of the edge.
attributesNoEdge attributes. Example: {'weight': 0.5, 'date': '2023-01-01'}
graph_nameNoName of the graph. If not provided, uses default connection.
source_vertex_idYesID of the source vertex.
target_vertex_idYesID of the target vertex.
source_vertex_typeYesType of the source vertex.
target_vertex_typeYesType of the target vertex.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds valuable context such as the requirement that both vertices must exist, the edge type must match the schema, and that attributes are optional. It does not contradict the annotations, and the additional tips go beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Use When, Quick Start, Common Workflow, Tips, Related Tools). Every section is informative and earns its place; it is appropriately detailed without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with no output schema, the description covers the essential context: what the tool does, when to use it, prerequisites, workflow, alternatives, and verification steps. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

The input schema has 100% description coverage for all parameters. The description adds a quick-start JSON example that shows how parameters combine, and explicitly notes that attributes are optional, adding semantic value beyond the schema's per-field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states precisely that the tool adds a single edge connecting two vertices, and the 'Use When' section gives concrete scenarios. It clearly distinguishes from add_edges (multiple edges) and related tools, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly lists when to use the tool, provides a step-by-step workflow, and names the alternative add_edges for batch operations. It also states prerequisites (vertices must exist) and how to verify the result with get_neighbors/get_node_edges, leaving no ambiguity about usage.

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

tigergraph__add_edgesA
Idempotent

Add multiple edges (relationships) to a TigerGraph graph in a single batch operation. More efficient than calling 'add_edge' multiple times.

Use When: • Loading multiple relationships • Building graph connections in bulk • Importing relationship data from files • Initial graph construction

Quick Start:

{
  "edge_type": "FOLLOWS",
  "edges": [
    {"from_type": "Person", "from_id": "u1", "to_type": "Person", "to_id": "u2"},
    {"from_type": "Person", "from_id": "u2", "to_type": "Person", "to_id": "u3"}
  ]
}

Common Workflow:

  1. Add all vertices first with 'add_nodes'

  2. Use 'add_edges' to create relationships

  3. Verify with 'get_edge_count'

Tips: • All edges in one call must be same edge type • All referenced vertices must exist • Batch size: 1000-5000 edges per call is optimal • Much faster than individual 'add_edge' calls

Related Tools: add_edge, add_nodes, get_edge_count

ParametersJSON Schema
NameRequiredDescriptionDefault
edgesYesList of edges. Each edge is a dict with source and target info. Must specify 'source_id' (or 'source_vertex_id') and 'target_id' (or 'target_vertex_id'). Can also optionally specify 'source_type' and 'target_type' per edge if different from defaults, though batch edges usually share types. All edges in one batch MUST have the same source/target types due to API limitations. Example: [{'source_id': 'u1', 'target_id': 'p1', 'date': '2023'}]
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeYesType of the edges.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate idempotency and non-destructiveness. The description goes further by disclosing operational constraints: all edges must share the same edge type, vertices must pre-exist, optimal batch size is 1000-5000 edges, and batch calls are faster than repeated add_edge calls. This adds meaningful behavior beyond the structured annotations, though it doesn't address failure semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections, bullet lists, a code example, and a front-loaded purpose. It is fairly long but each section serves a distinct purpose, with only minor redundancy between 'more efficient' and 'much faster than individual add_edge calls.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch write tool, the description covers when to use it, how to sequence it with add_nodes and get_edge_count, preconditions, and batch constraints. It does not explain return values or partial-failure behavior, but with no output schema and rich annotations, the provided context is largely sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a Quick Start example and tips, but the example uses keys like 'from_type', 'from_id', 'to_type', and 'to_id,' which conflict with the schema's documented 'source_id' and 'target_id' keys. This inconsistency undermines the added value and prevents a higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly states the tool's function: 'Add multiple edges (relationships) to a TigerGraph graph in a single batch operation.' It also distinguishes itself from the sibling add_edge tool by emphasizing batch efficiency, so an agent can immediately tell them apart.

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

Usage Guidelines5/5

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

Provides explicit 'Use When' conditions, a 'Common Workflow' section, and named related tools. It clearly frames this tool as the batch alternative to add_edge and includes prerequisites like 'All referenced vertices must exist,' giving an agent concrete guidance on when to invoke it.

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

tigergraph__add_nodeA
Idempotent

Add a single node (vertex) to a TigerGraph graph. This performs an upsert operation - creates a new vertex if it doesn't exist, or updates attributes if it does.

Use When: • Creating a single new entity (user, product, document, etc.) • Updating an existing vertex's attributes • You have individual entities to add (not batch loading)

Quick Start:

{
  "vertex_type": "Person",
  "vertex_id": "user123",
  "attributes": {"name": "Alice", "age": 30}
}

Common Workflow:

  1. Call 'show_graph_details' to understand vertex types and attributes

  2. Use 'add_node' to create individual vertices

  3. Call 'get_node' to verify the vertex was created

  4. Use 'add_edge' to connect this vertex to others

Tips: • For multiple vertices: Use 'add_nodes' instead (more efficient) • Primary key is required (usually the 'id' attribute) • Attribute names must match the schema exactly (case-sensitive) • This is an upsert: existing vertices are updated, not duplicated

More Examples:

// Add a product
{
  "vertex_type": "Product",
  "vertex_id": "prod456",
  "attributes": {"name": "Laptop", "price": 999.99, "category": "Electronics"}
}

// Add a document with minimal attributes
{
  "vertex_type": "Document",
  "vertex_id": "doc789",
  "attributes": {"title": "Report Q4 2024"}
}

Related Tools: • add_nodes - Batch insert multiple vertices • get_node - Retrieve a vertex by ID • delete_node - Remove a vertex • has_node - Check if vertex exists

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
vertex_idYesID of the vertex (primary key value). Format: String or integer depending on schema. Example: 'user123', 'product_456', or 12345 Note: Must be unique within the vertex type.
attributesNoVertex attributes as key-value pairs. Keys must match the vertex type schema. Values should match the expected data types. Example: {'name': 'Alice', 'age': 30, 'email': 'alice@example.com'} Tip: Use 'show_graph_details' to see required attributes and types.
graph_nameNoName of the graph. If not provided, uses the default connection. Tip: Use 'list_graphs' to see available graphs.
vertex_typeYesType of the vertex (must exist in graph schema). Example: 'Person', 'Product', 'Company' Tip: Use 'show_graph_details' to see available vertex types.

TDQS

A4.5/5.0
Behavior4/5

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

The description goes beyond the annotations by revealing the upsert behavior, stating that existing vertices are updated rather than duplicated, and emphasizing exact schema matching. However, it does not clarify whether omitted attributes are preserved or overwritten on an update, which is important for a mutation tool that can modify existing data. This is the main transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headings, code examples, and a front-loaded purpose statement. It is longer than strictly necessary, with some redundancy between the 'Use When' bullets and the 'Tips' section, but every major section still serves a useful role for a complex graph tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter mutation tool with no output schema, the description supplies a discovery workflow, practical examples, and routing to verification via get_node. It does not describe return values or failure behavior on schema violations, but the included workflow compensates sufficiently for a tool of this complexity.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a full quick-start payload and concrete examples that show how vertex_type, vertex_id, and attributes fit together. The tips about the primary key requirement and case-sensitive attribute names also add practical meaning beyond the schema, though the schema already handles most parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: 'Add a single node (vertex) to a TigerGraph graph.' It immediately clarifies the upsert semantics and explicitly contrasts with batch loading, distinguishing it from sibling tools like add_nodes. An agent can tell exactly what this tool does without opening the schema.

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

Usage Guidelines5/5

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

The 'Use When' section gives clear criteria for single-entity creation or update, and the tips explicitly say to use add_nodes for multiple vertices. The 'Common Workflow' and 'Related Tools' sections further guide the agent to show_graph_details, verify with get_node, and connect with add_edge, leaving little ambiguity about when and how to use this tool.

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

tigergraph__add_nodesA
Idempotent

Add multiple nodes (vertices) to a TigerGraph graph in a single batch operation. This is significantly more efficient than calling 'add_node' multiple times.

Use When: • Loading multiple vertices of the same type • Importing data from CSV, JSON, or database • Initial data population • Bulk updates to existing vertices

Quick Start:

{
  "vertex_type": "Person",
  "vertices": [
    {"id": "user1", "name": "Alice", "age": 30},
    {"id": "user2", "name": "Bob", "age": 25}
  ]
}

Common Workflow:

  1. Call 'show_graph_details' to understand the schema

  2. Prepare your data with primary keys and attributes

  3. Use 'add_nodes' to load vertices in batches

  4. Call 'get_vertex_count' to verify loading

  5. Use 'add_edges' to create relationships

Tips: • Set 'vertex_id' to match your schema's primary key name (default: 'id') • For SARGraph: vertex_id='ACCOUNT_ID' for Account vertices • All vertices must be the same type • For very large datasets (>10K vertices), consider using loading jobs • Batch size: 1000-5000 vertices per call is optimal

Warning: Common Mistakes: • Missing primary key in one or more vertices • Using wrong vertex_id name (check schema with show_graph_details) • Mixing different vertex types in one call • Attribute name typos (must match schema exactly) • Wrong data types (e.g., string instead of int)

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
verticesYesList of vertices to add. Each vertex must contain the primary key field (specified by 'vertex_id' parameter) and other attributes matching the schema. Example with default vertex_id='id': ```json [ {"id": "user1", "name": "Alice", "age": 30}, {"id": "user2", "name": "Bob", "age": 25} ] ``` Example with vertex_id='ACCOUNT_ID': ```json [ {"ACCOUNT_ID": 1001, "COUNTRY": "US", "ACCOUNT_TYPE": "savings"}, {"ACCOUNT_ID": 1002, "COUNTRY": "UK", "ACCOUNT_TYPE": "checking"} ] ``` Note: All vertices will be processed in a single batch operation for efficiency.
vertex_idNoName of the primary key field in the vertex dictionaries. This tells the tool which field contains the vertex ID. Default: 'id'. Set to match your schema's primary key name. Examples: 'id', 'ACCOUNT_ID', 'TX_ID'id
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeYesType of the vertices (all vertices must be the same type). Example: 'Person', 'Product' Tip: Use 'show_graph_details' to see available types.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark this as readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the description only needs to add context. It adds optimal batch sizes (1000-5000), the requirement that all vertices share the same type, and the fact that bulk updates to existing vertices are possible (consistent with idempotent upsert). This is useful behavioral detail beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with clear headings: Use When, Quick Start, Common Workflow, Tips, Warning. It is verbose but each section contributes useful guidance, and the key purpose and efficiency claim are front-loaded. It could be tightened slightly but earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters, no output schema, and moderate complexity, this description covers everything an agent needs: purpose, use cases, workflow, parameter tips, and common pitfalls. It also references related tools for verification (show_graph_details, get_vertex_count, add_edges). The only minor gap is not describing the return value, but that is often omitted.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds real value by giving a specific SARGraph example (ACCOUNT_ID), batch size recommendations, and common mistakes to avoid, which go beyond the parameter descriptions. This helps the agent choose correct values for vertex_id and structure the vertices array.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Add multiple nodes (vertices) to a TigerGraph graph in a single batch operation.' It immediately distinguishes from the sibling 'add_node' by noting it is 'significantly more efficient than calling add_node multiple times.' This makes the tool's purpose unmistakable and well-differentiated.

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

Usage Guidelines5/5

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

The description provides a dedicated 'Use When' list covering loading multiple vertices, importing data, initial population, and bulk updates. It also names alternatives: single-node 'add_node' for fewer inserts and loading jobs for datasets over 10K vertices. These explicit conditions and exclusions give the agent clear routing guidance.

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

tigergraph__add_vector_attributeA

Add a vector attribute to an existing vertex type. Creates a schema change job to ALTER VERTEX with ADD VECTOR ATTRIBUTE.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricNoSimilarity metric: 'COSINE', 'L2' (Euclidean), or 'IP' (inner product).COSINE
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
dimensionYesDimension (length) of the vector. Max 4096 for Community, 32768 for Enterprise.
graph_nameNoName of the graph. If not provided, uses default connection.
vector_nameYesName of the vector attribute.
vertex_typeYesName of the vertex type to add the vector attribute to.

TDQS

A4/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations by clarifying that this is a DDL operation that creates a schema change job to ALTER VERTEX. This helps the agent understand it is a schema mutation rather than a data operation, although it does not disclose whether the job is asynchronous or what the return payload looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with the primary action front-loaded and the technical mechanism in the second sentence. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition is complete enough for correct invocation: the action is clear, all parameters are documented, and the annotations indicate a non-read-only, non-idempotent mutation. The main gap is that it does not explain the post-call behavior or how to verify the schema change, but this is not critical for selecting and calling the tool.

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

Parameters3/5

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

The input schema already documents all six parameters with descriptions, so schema coverage is 100%. The description adds minimal parameter-level detail beyond that, but none is strictly needed because the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: adding a vector attribute to an existing vertex type. It also names the underlying mechanism (schema change job / ALTER VERTEX), which clearly separates it from related sibling tools like drop_vector_attribute or list_vector_attributes.

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

Usage Guidelines3/5

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

The intended use is implied and reasonably clear: extend an existing vertex type with a vector attribute. However, the description gives no explicit when-to-use or when-not-to-use guidance, and it does not mention alternatives such as update_schema for non-vector schema changes or upsert_vectors for loading vector data.

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

tigergraph__authenticateA
Idempotent

Register TigerGraph credentials for the current MCP session.

Re-points one of the session's connections at a TigerGraph instance. Omit profile to replace the default profile's connection, or name a profile to replace only that one, leaving the session's other profiles untouched. Stdio mode uses env-var profiles instead and does not need this tool.

Either api_token/jwt_token OR username + password must be supplied. The credentials live only in the session's in-memory connection pool and are dropped on disconnect.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesTigerGraph host URL, e.g. https://acme.tgcloud.io.
secretNoTigerGraph GSQL secret (alternative to password auth).
gs_portNoGSQL Server port (default 14240).
profileNoProfile whose connection these credentials replace. Omit, or pass 'default', to replace the default profile's connection. Only this profile is affected; other profiles in the session keep theirs.
passwordNoTigerGraph password (password auth).
ssl_portNoSSL port (default 443).
tg_cloudNoTrue if connecting to TigerGraph Cloud.
usernameNoTigerGraph username (password auth).
api_tokenNoTigerGraph REST++ API token (token auth).
cert_pathNoPath to a CA bundle for TLS verification.
graphnameNoDefault graph for this session.
jwt_tokenNoTigerGraph JWT token (token auth).
restpp_portNoREST++ port (default 9000).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, and the description adds valuable context: credentials live only in the session's in-memory connection pool and are dropped on disconnect. It also clarifies that omitting profile replaces the default profile's connection, and that other profiles are untouched. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, then explains the profile behavior, stdio exception, and auth requirements. It's a bit long but every sentence earns its place; no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a credential-registration tool with 13 parameters and no output schema, the description covers the essential context: what the tool does, when it's needed, how profiles work, and the auth alternatives. It doesn't explain return values, but the tool's purpose is clear enough that an agent can call it correctly. The stdio exception and in-memory scope are valuable additions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 13 parameters. The description adds some meaning by explaining the auth alternatives (api_token/jwt_token OR username+password) and the profile semantics, but it doesn't add much detail beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Register') and resource ('TigerGraph credentials for the current MCP session'), and clearly distinguishes this from sibling tools like list_connections and show_connection. It also explains the re-pointing behavior, which makes the tool's purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly explains when to use this tool (to register credentials for a session), when not to use it (stdio mode uses env-var profiles and does not need this tool), and how to target a specific profile vs the default. It also states the required auth alternatives (api_token/jwt_token OR username+password), which is strong usage guidance.

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

tigergraph__clear_graph_dataA
DestructiveIdempotent

Clear all data (vertices and edges) from a specific graph while keeping its schema structure intact. This is a destructive operation that removes all graph data.

Use When: • Resetting a graph to empty state • Clearing test data before loading production data • Starting data reload with same schema

Quick Start:

{
  "graph_name": "MyGraph",
  "confirm": true
}

WARNING: • Deletes ALL vertices and edges in the graph • Operation is PERMANENT and cannot be undone • Must set 'confirm': true to execute • Schema (vertex/edge types) remains intact

Tips: • Preserves schema, only clears data • To delete everything including schema, use 'drop_graph' • Always backup important data first • Can specify 'vertex_type' to clear only specific type

Related Tools: drop_graph, get_vertex_count, delete_nodes

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True to confirm the deletion. This is a destructive operation.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeNoType of vertices to clear. If not provided, clears all data.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations that already flag destructive behavior, the description adds critical operational warnings: the operation is permanent, cannot be undone, requires 'confirm': true, and preserves schema. This goes above what the structured annotations provide and fully discloses the destructive nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose, use cases, quick start, warnings, and tips. It is somewhat long, but every section earns its place for a destructive tool where caution is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no output schema, the description covers all the operational context an agent needs: what gets cleared, what remains, confirmation requirement, permanence, and related tools. Nothing essential is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already explains each parameter. The description adds a quick-start example and reinforces that 'confirm' must be true, but it does not add substantial new meaning beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: clear all data (vertices and edges) from a graph while preserving schema. It also explicitly distinguishes itself from 'drop_graph' by clarifying that the schema remains intact, making the intended operation unmistakable.

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

Usage Guidelines5/5

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

The 'Use When' section lists concrete scenarios like resetting a graph or clearing test data. It also gives an explicit alternative: use 'drop_graph' to delete everything including schema, which helps an agent choose correctly among sibling tools.

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

tigergraph__create_data_sourceA

Create a new data source for loading data from object storage (S3, GCS, Azure Blob), a data warehouse (Snowflake, BigQuery, PostgreSQL), an Iceberg catalog, or Kafka. Call 'get_data_source_types' first if unsure which keys a type needs; if the server rejects the request, the response includes the keys that type requires.

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesConfiguration for the data source, without the 'type' key. Key names are type-specific: Snowflake takes 'connection.url', 'connection.user', and 'connection.password'; S3 takes 'access.key' and 'secret.key'. Call 'get_data_source_types' for each type's required keys and an example.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
data_source_nameYesName of the data source.
data_source_typeYesType of data source, normally one of: 's3' (Amazon S3), 'gcs' (Google Cloud Storage), 'abs' (Azure Blob Storage), 'kafka' (External Kafka), 'kafka_v2' (External Kafka (v2 connector)), 'mirrormaker' (Kafka MirrorMaker), 'iceberg' (Apache Iceberg), 'snowflake' (Snowflake), 'bigquery' (Google BigQuery), 'postgresql' (PostgreSQL). 'azure_blob' is accepted as an alias for 'abs'. Any other value is passed to TigerGraph unchanged, which decides whether it is valid. Call 'get_data_source_types' for the configuration keys each type needs.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations indicate this is a write operation (readOnlyHint=false, destructiveHint=false), but the description adds no additional behavioral context beyond the schema's hints—no mention of idempotency, potential side effects, or authorization requirements. While the description mentions server rejection, it doesn't cover failure modes or partial states. With annotations already covering safety profile, the description adds some value (server rejection behavior), but not rich depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence that front-loads the core purpose and lists supported sources efficiently. It could be slightly more structured, but it is concise and avoids redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and complex type-specific configuration, the description, combined with the schema's parameter details, provides sufficient guidance for invocation. It includes cross-references to sibling tools for further detail, covering the main gap (type-specific keys) without overloading the description. The only minor omission is a concrete example, but that is delegated appropriately.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already provides detailed descriptions for all parameters, including type-specific config keys and profile guidance. The description adds minimal extra value beyond reinforcing the need to call get_data_source_types. Baseline of 3 is appropriate since schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create a new data source) and the resource (data source), and enumerates the supported sources (S3, GCS, Azure Blob, Snowflake, etc.). It distinguishes itself from sibling tools like update_data_source and get_data_source_types, and even references the latter for guidance.

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

Usage Guidelines5/5

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

The description explicitly instructs to call 'get_data_source_types' first if unsure about required keys, providing a clear alternative for usage. It also hints at behavior on server rejection (response includes required keys), giving practical guidance.

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

tigergraph__create_graphA

Create a new graph in the TigerGraph database with its schema (vertex types and edge types). Each graph has its own independent schema.

Use When: • Creating a new graph from scratch • Setting up a graph with specific vertex and edge types • Initializing a new project or data model • Defining the structure before loading data

Quick Start:

{
  "graph_name": "SocialNetwork",
  "vertex_types": [
    {
      "name": "Person",
      "primary_id": "id",
      "primary_id_type": "STRING",
      "attributes": [
        {"name": "name", "type": "STRING"},
        {"name": "age", "type": "INT"}
      ]
    }
  ],
  "edge_types": [
    {
      "name": "FOLLOWS",
      "from_vertex": "Person",
      "to_vertex": "Person",
      "directed": true,
      "attributes": [
        {"name": "since", "type": "STRING"}
      ]
    }
  ]
}

Common Workflow:

  1. Use 'list_graphs' to check if graph name is available

  2. Design your vertex types and edge types

  3. Call 'create_graph' with the schema

  4. Use 'show_graph_details' to verify it was created correctly

  5. Start loading data with 'add_node' and 'add_edge'

Vertex Primary Key Options: • Default: auto-generates PRIMARY_ID id STRING with primary_id_as_attribute • Explicit PRIMARY_ID: set primary_id (string) and primary_id_type on vertex type • PRIMARY KEY mode: set primary_key: true on one attribute (not GraphStudio compatible) • Composite key: set primary_id to a list of attribute names, e.g. ["title", "year"] All listed attributes must exist in the attribute list (not GraphStudio compatible) • The key is always queryable as a regular attribute

Tips: • Define all vertex types before edge types • Edge types reference vertex types by name • Set 'directed': false on edge types for undirected edges (default: directed) • Consider using 'get_workflow' for step-by-step guidance

Related Tools: list_graphs, show_graph_details, drop_graph

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typesNoList of edge type definitions for this graph.
graph_nameYesName of the new graph to create.
vertex_typesYesList of vertex type definitions for this graph.

TDQS

A5/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: graphs have independent schemas, primary_id has multiple modes with GraphStudio compatibility caveats, the key remains queryable as an attribute, and vertex types should be defined before edge types. This materially helps an agent predict side effects and constraints. No contradiction with the provided annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear headings, a code example, bullet lists, and a workflow. Every section adds actionable information, and the core purpose statement is front-loaded. The length is justified by the complexity of defining a graph schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and four parameters, the description covers the essential context: when to use it, how to shape the schema payload, what primary key options exist, compatibility caveats, and how to verify the result with sibling tools. Nothing critical for an agent to invoke it correctly is missing.

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

Parameters5/5

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

Even though the schema already describes all four parameters at a high level, the description deeply enriches the meaning of vertex_types and edge_types with a full JSON quick-start example, primary key options, composite key rules, and the directed edge default. The edge_types parameter, which is only loosely typed as an object array in the schema, is clarified considerably.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Create a new graph in the TigerGraph database with its schema (vertex types and edge types).' It clearly distinguishes this tool from siblings like list_graphs, drop_graph, and update_schema by framing it as the creation/initialization operation.

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

Usage Guidelines5/5

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

A dedicated 'Use When' section lists concrete conditions such as 'Creating a new graph from scratch' and 'Defining the structure before loading data.' The 'Common Workflow' explicitly names related tools like list_graphs, show_graph_details, add_node, and add_edge, giving the agent a clear call sequence and alternatives.

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

tigergraph__create_loading_jobA

Create a loading job from structured configuration. The job defines how to load data from files into vertices and edges. Each file config specifies: file alias, separator, header, EOL, and mappings. Node mappings define which columns map to vertex attributes. Edge mappings define source/target columns and edge attributes. Optionally run the job immediately and drop it after execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesList of file configurations. Each file must have a 'file_alias' and 'node_mappings' and/or 'edge_mappings'. Example: [{'file_alias': 'f1', 'node_mappings': [...]}]
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
run_jobNoIf True, run the loading job immediately after creation.
job_nameYesName for the loading job.
graph_nameNoName of the graph. If not provided, uses default connection.
drop_after_runNoIf True, drop the job after running (only applies if run_job=True).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations provide no safety hints (all false), so the description must carry the burden. It discloses that the job can be run immediately and dropped, which is useful, but it does not mention side effects like overwriting existing jobs, required permissions, or failure behavior. This is a moderate disclosure for a creation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (5 sentences) and front-loads the core purpose. Each sentence adds relevant information without redundancy, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does not explain what the tool returns or any prerequisites (e.g., needing an existing graph or schema). It also omits error conditions and the implications of the run_job/drop_after_run flags beyond their existence. For a tool with complex nested configuration, this is adequate but not fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds only a high-level summary of file config, node mappings, and edge mappings, which largely repeats the schema. It provides marginal value beyond the schema, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a loading job and summarizes what the job does (loads data from files into vertices and edges). It distinguishes from siblings like run_loading_job_with_file and drop_loading_job by focusing on the creation aspect, though it doesn't explicitly name alternatives.

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

Usage Guidelines3/5

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

The description implies this tool is for creating (and optionally running) loading jobs, but it does not explicitly state when to use it versus other loading job tools. It does mention the run_job and drop_after_run options, which gives some guidance on optional behavior, but lacks explicit exclusions or alternative routing.

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

tigergraph__delete_edgeA
DestructiveIdempotent

Delete a single edge (relationship) from a TigerGraph graph.

Use When: • Removing a specific relationship • Disconnecting two vertices • Graph maintenance

Quick Start:

{
  "source_vertex_type": "Person",
  "source_vertex_id": "user1",
  "edge_type": "FOLLOWS",
  "target_vertex_type": "Person",
  "target_vertex_id": "user2"
}

Warning: • Operation is permanent • Does not delete the vertices, only the edge

Related Tools: delete_edges, add_edge, has_edge

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeYesType of the edge.
graph_nameNoName of the graph. If not provided, uses default connection.
source_vertex_idYesID of the source vertex.
target_vertex_idYesID of the target vertex.
source_vertex_typeYesType of the source vertex.
target_vertex_typeYesType of the target vertex.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark the operation destructive, read-write, and idempotent. The description adds value by warning that the operation is permanent and clarifying that it deletes only the edge, not the connected vertices. This goes beyond the annotation flags without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Use When, Quick Start, Warning, and Related Tools sections, and the main action is front-loaded. The content is mostly purposeful, though the 'Graph maintenance' bullet is slightly generic and the Quick Start block adds length without being strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward single-edge delete, the description covers the effect, permanence, scope, and required arguments via the example. It does not specify behavior when the edge does not exist or describe the response/return value, but given the simple operation and strong schema/annotations, these are minor gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters. The description contributes a Quick Start JSON example showing how the five required parameters fit together, but it does not add deeper meaning about profile, graph_name, or vertex ID semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb ('Delete'), a specific resource ('edge'), and a scope qualifier ('single') that distinguishes it from sibling tools like delete_edges. The Related Tools line reinforces the distinction by naming delete_edges, add_edge, and has_edge.

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

Usage Guidelines4/5

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

The 'Use When' section gives concrete scenarios such as removing a specific relationship or disconnecting two vertices. It does not explicitly state when to prefer delete_edges or has_edge, but the 'single edge' qualifier and Related Tools list make the intended context reasonably clear.

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

tigergraph__delete_edgesA
DestructiveIdempotent

Delete multiple edges (relationships) from a TigerGraph graph.

Use When: • Removing multiple relationships • Bulk edge deletion • Graph restructuring

Quick Start:

{
  "edge_type": "FOLLOWS",
  "edges": [
    {"from_type": "Person", "from_id": "u1", "to_type": "Person", "to_id": "u2"},
    {"from_type": "Person", "from_id": "u2", "to_type": "Person", "to_id": "u3"}
  ]
}

Warning: • Operation is permanent and cannot be undone • Does not delete vertices

Related Tools: delete_edge, add_edges

ParametersJSON Schema
NameRequiredDescriptionDefault
edgesYesList of edges with source and target vertex IDs.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeYesType of the edges.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, but the description adds specifics: a warning that the operation is permanent and cannot be undone, and that it does not delete vertices. This clarifies the destructive scope beyond the generic annotation, adding value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently organized with a clear intro, 'Use When' bullet points, a compact JSON example, a warning section, and related tools. It is front-loaded with the purpose, avoids redundancy, and every section serves a practical function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk operation, the description covers usage conditions, provides a working example, warns about irreversibility and vertex behavior, and lists related tools. Parameter definitions are in the schema. Minor gaps like not elaborating on profile/graph_name usage (though schema covers them) or return behavior (no output schema) are acceptable here.

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

Parameters4/5

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

While schema coverage is 100%, the schema's description for 'edges' is vague ('List of edges with source and target vertex IDs'). The Quick Start example explicitly shows nested fields (from_type, from_id, to_type, to_id), giving agents concrete understanding of the required structure. This meaningfully enhances parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a precise statement: 'Delete multiple edges (relationships) from a TigerGraph graph.' It specifies the verb (delete), resource (edges), and scope (multiple), clearly distinguishing from the sibling delete_edge (singular) without ambiguity.

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

Usage Guidelines4/5

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

A dedicated 'Use When' section lists concrete scenarios (removing multiple relationships, bulk edge deletion, graph restructuring) and related tools (delete_edge, add_edges) are mentioned. However, it does not explicitly state when not to use (e.g., for a single edge) or give a comparative decision rule between delete_edges and delete_edge, so it falls short of a full 5.

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

tigergraph__delete_nodeA
DestructiveIdempotent

Purpose: Delete a single vertex (node) from the graph by its ID.

When to Use:

  • Remove a specific vertex from the graph

  • Clean up obsolete data

  • Delete test data

  • Remove entities based on business logic

Important Notes:

  • Warning: This operation is permanent and cannot be undone

  • Connected edges will also be deleted (CASCADE behavior)

  • Verify the vertex exists before deletion if needed

Common Workflows:

  1. Safe delete: has_node()delete_node() → verify with get_node()

  2. Bulk delete: Use delete_nodes() with WHERE clause instead

Tips:

  • Use has_node() first to verify existence

  • Consider the impact on connected edges

  • For multiple deletions, use delete_nodes() for better performance

Related Tools:

  • delete_nodes: Delete multiple vertices at once

  • has_node: Check if vertex exists before deletion

  • get_node: Verify deletion completed

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
vertex_idYesThe unique identifier of the vertex to delete
graph_nameNoName of the graph (uses default if not specified)
vertex_typeYesThe type of the vertex to delete

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, but the description adds genuinely new behavioral context: the operation is 'permanent and cannot be undone', and 'Connected edges will also be deleted (CASCADE behavior)'. It also advises verifying existence beforehand. These details go well beyond the structured hints and alert the agent to irreversible side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well-structured with clear sections (Purpose, When to Use, Important Notes, Common Workflows, Tips, Related Tools) and front-loaded purpose. Each section earns its place for a destructive operation; however, there is minor redundancy — the Tips section partially repeats the Workflows section ('Use has_node() first' and 'use delete_nodes() for better performance' both appear twice). Slight tightening would make it flawless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature, 4 parameters, and no output schema, the description is remarkably complete: it covers what the tool does, when to use it, irreversible consequences, CASCADE edge behavior, a safe-delete workflow, and the relevant alternatives. No output schema exists, so not detailing return values is acceptable. An agent has everything needed to invoke this tool correctly and safely.

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

Parameters3/5

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

Schema description coverage is 100%, with all four parameters (profile, vertex_id, graph_name, vertex_type) already documented in the input schema. The description adds nothing meaningful about parameter semantics — it notes deletion 'by its ID' but does not elaborate on vertex_id format, vertex_type usage, or how profile/graph_name affect the operation. Per the rubric, baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Delete a single vertex (node) from the graph by its ID' — a specific verb, resource, and scope of deletion. It explicitly distinguishes itself from delete_nodes by emphasizing 'single', and the Related Tools section reinforces the contrast. An agent can immediately tell this tool apart from its plural counterpart without inspecting the sibling definitions.

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

Usage Guidelines5/5

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

A dedicated 'When to Use' section lists concrete scenarios: removing a specific vertex, cleaning up obsolete data, deleting test data, and business-logic removal. It also gives explicit alternatives: 'delete_nodes()' for bulk deletion with WHERE clauses, and a safe-delete workflow ('has_node() → delete_node() → verify with get_node()'). The guidance is actionable and leaves nothing to inference.

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

tigergraph__delete_nodesA
DestructiveIdempotent

Purpose: Delete multiple vertices (nodes) from the graph in a single operation.

When to Use:

  • Bulk deletion of vertices matching criteria

  • Delete specific set of vertices by IDs

  • Clear all vertices of a type

  • Data cleanup operations

Important Notes:

  • Warning: This operation is permanent and cannot be undone

  • Warning: Omitting WHERE will delete ALL vertices of the specified type

  • Connected edges will also be deleted (CASCADE behavior)

  • More efficient than multiple delete_node() calls

Usage Modes:

  1. By WHERE clause: delete_nodes(vertex_type='Person', where='age > 70')

  2. By ID list: delete_nodes(vertex_type='Person', vertex_ids=['id1', 'id2'])

  3. Delete all: delete_nodes(vertex_type='TempData') (no where/ids)

Safety Tips:

  • ALWAYS test WHERE clause with get_nodes() first

  • Use get_vertex_count() to verify expected deletion count

  • Consider backing up data before bulk deletions

Related Tools:

  • delete_node: Delete a single vertex

  • get_nodes: Preview vertices before deletion

  • get_vertex_count: Check deletion impact

ParametersJSON Schema
NameRequiredDescriptionDefault
whereNoFilter condition to select vertices to delete. Use TigerGraph WHERE syntax. Examples: - 'age > 70' - 'status == "inactive"' - 'created_date < "2020-01-01"' Warning: If omitted, ALL vertices of this type will be deleted!
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph (uses default if not specified)
vertex_idsNoOptional list of specific vertex IDs to delete (alternative to WHERE clause)
vertex_typeYesThe type of vertices to delete

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, but the description goes further by warning that deletion is permanent and cannot be undone, that omitting WHERE deletes ALL vertices of the type, and that connected edges are deleted via CASCADE. These are critical behavioral details that an agent needs to know before invoking a destructive operation. It adds context beyond the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections: Purpose, When to Use, Important Notes, Usage Modes, Safety Tips, and Related Tools. It front-loads the purpose and critical warnings (permanence, cascade) before diving into modes. Each sentence contributes actionable information, and the structure makes it easy to scan. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk operation, the description is complete. It covers all usage modes, safety precautions, the cascade behavior, and references related tools for preview and verification. It even includes examples for WHERE clauses. There is no output schema, but that is not necessary for a deletion tool. An agent has everything needed to invoke it correctly and safely.

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

Parameters4/5

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

Schema description coverage is 100%, so parameters are already well-documented. The description adds value by explaining usage modes (by WHERE, by ID list, delete all) and providing concrete examples of WHERE syntax (e.g., 'age > 70'). It also clarifies the relationship between where and vertex_ids as alternatives, which is not fully explicit in the schema. This goes beyond the schema baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The purpose is explicitly stated as 'Delete multiple vertices (nodes) from the graph in a single operation.' It clearly identifies the verb (delete), resource (vertices/nodes), and scope (multiple, single operation). It also distinguishes itself from the sibling delete_node by noting it handles bulk deletion and is more efficient, making it easy for an agent to select the right tool.

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

Usage Guidelines5/5

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

The 'When to Use' section lists specific scenarios: bulk deletion, deletion by IDs, clearing all vertices of a type, and data cleanup. It also explicitly names alternatives (delete_node for single vertex, get_nodes for preview, get_vertex_count for impact) and provides safety tips like testing with get_nodes first. This gives clear when-to-use and when-not-to-use guidance.

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

tigergraph__discover_toolsA
Read-onlyIdempotent

Discover which TigerGraph tools are relevant for your task.

Use this tool when:

  • You're unsure which tool to use for your goal

  • You want to explore available capabilities

  • You need suggestions for accomplishing a task

Returns:

  • List of recommended tools with descriptions

  • Use cases and complexity ratings

  • Prerequisites and related tools

  • Example parameters

Example: task_description: 'I want to add multiple users to the graph'

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of tools to return (default: 5)
categoryNoFilter by category: 'schema', 'data', 'query', 'vector', 'loading', 'utility'. Leave empty to search all categories.
task_descriptionYesDescribe what you want to accomplish in natural language. Examples: - 'add multiple users to the graph' - 'find similar documents using embeddings' - 'understand the graph structure' - 'load data from a CSV file'

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by detailing the output contents (recommended tools, use cases, complexity ratings, prerequisites, related tools, example parameters), which is not apparent from the schema alone. It does not contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headers and a concrete example, making it easy to scan. It is slightly longer than strictly necessary but each section adds value, and the core purpose is front-loaded. It earns a 4 for its organized, informative layout without being bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 3 parameters, no output schema, and no nested objects, the description is complete. It covers when to use, what to expect as output, and provides an example invocation. Nothing an agent needs to decide whether and how to call it is missing.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters (limit, category, task_description) are already well described in the schema. The description adds an example for task_description and clarifies the default behavior of limit and category, but this is marginal beyond the schema. The baseline of 3 applies because the schema handles the documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Discover') and resource ('TigerGraph tools'), and it is unambiguous about its purpose as a meta-tool for tool selection. It distinguishes itself from all sibling tools, which perform specific operations, making it obvious when this one is needed.

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

Usage Guidelines5/5

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

The description explicitly lists three concrete scenarios for use: when unsure which tool to use, when exploring capabilities, and when needing suggestions. This gives clear guidance on when to invoke it, and since it is a unique discovery tool, no alternatives are needed.

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

tigergraph__drop_all_data_sourcesA
DestructiveIdempotent

Drop all data sources. WARNING: This is a destructive operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True to confirm dropping all data sources.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.

TDQS

A3.5/5.0
Behavior3/5

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

The description repeats the destructive nature already captured by destructiveHint=true, so it adds no new behavioral context beyond the annotation. It does not disclose irreversibility, effects on dependent objects, or the idempotentHint already present. With annotations carrying the safety profile, the warning is adequate but not additive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences with no filler words. The primary action is front-loaded and the warning immediately follows. Every word earns its place, keeping the message crisp and actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

As a bulk destructive operation, the description lacks details on irreversible consequences or what happens to associated resources after all data sources are dropped. However, the schema explains the confirm guard and profile selection, and annotations already flag destructiveness. This reaches the minimum viable level for a simple tool with rich schema coverage.

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

Parameters3/5

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

Both confirm and profile parameters are fully described in the input schema, with schema coverage at 100%. The description adds no parameter-specific meaning, such as the requirement to set confirm=true to proceed. Baseline 3 is appropriate because the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Drop all data sources' with a specific verb and resource scope. The word 'all' distinguishes it from the sibling tool drop_data_source, which targets a single data source. The warning about destructiveness adds further clarity about the operation's impact.

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

Usage Guidelines2/5

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 such as drop_data_source for removing a single data source. No explicit exclusions, prerequisites, or condition-based selection criteria are given. The destructive warning implies caution but does not explain usage context.

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

tigergraph__drop_data_sourceA
DestructiveIdempotent

Drop (delete) a data source.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
data_source_nameYesName of the data source to drop.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description's 'Drop (delete)' aligns with the destructive nature. The description adds minimal behavioral context beyond the annotations, but the annotations carry the safety profile. No contradiction exists; the description is consistent with the destructive and idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the action and resource with zero waste. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with full schema coverage and annotations indicating destructive and idempotent behavior, the description is mostly complete. However, it lacks explicit guidance on irreversible consequences or when to prefer this over drop_all_data_sources, which would be useful for an agent deciding between similar tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no additional parameter-level meaning beyond what the schema provides, which is acceptable given the high coverage. The baseline of 3 applies because the description doesn't need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Drop (delete) a data source' clearly states the verb (drop/delete) and the resource (data source), distinguishing it from related tools like drop_all_data_sources and drop_graph. It is concise and unambiguous, though it doesn't explicitly contrast with siblings.

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

Usage Guidelines3/5

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

The description implies a destructive operation on a specific data source, and the schema's profile/graph_name parameters provide context for connection selection. However, it does not explicitly state when to use this tool versus alternatives like drop_all_data_sources or update_data_source, nor does it mention prerequisites or consequences.

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

tigergraph__drop_graphA
DestructiveIdempotent

Drop (delete) a graph and its schema from the TigerGraph database. This permanently removes the graph, its schema, and all data.

Use When: • Removing a graph that's no longer needed • Cleaning up test graphs • Starting fresh with a new schema

Quick Start:

{
  "graph_name": "TestGraph"
}

Warning: DANGER: • This deletes EVERYTHING: schema, vertices, edges, queries, loading jobs • Operation is PERMANENT and cannot be undone • Double-check the graph_name before executing • Consider using 'clear_graph_data' if you only want to remove data

Tips: • Use 'list_graphs' first to confirm the graph name • For production graphs, always backup first • To keep schema but clear data, use 'clear_graph_data'

Related Tools: create_graph, clear_graph_data, list_graphs

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameYesName of the graph to drop.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark this as destructive, but the description goes much further by specifying that schema, vertices, edges, queries, and loading jobs are all deleted, that the operation is permanent and cannot be undone, and that extra caution is required. It also advises backing up production graphs. This gives the agent a clear and accurate risk profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headings: purpose, use cases, quick start, warning, and tips. It front-loads the critical information and then expands helpfully without rambling. Every section adds operational value, especially the bolded permanence warning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive two-parameter tool with no output schema, the description covers the action, the risk, the prerequisites, and the safer alternative. It also tells the agent to list graphs first to confirm the name. The optional profile parameter is sufficiently covered by the schema, so nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline applies. The description adds a Quick Start JSON example showing graph_name and a warning to double-check its value, but it does not add substantial new semantics about the parameters themselves. The profile parameter is fully explained in the schema already.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Drop (delete) a graph and its schema from the TigerGraph database.' It clearly distinguishes itself from clear_graph_data by noting the difference between dropping the whole graph vs. just clearing data. This leaves no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The 'Use When' section explicitly lists the intended scenarios, and both 'Related Tools' and the tips name clear_graph_data and list_graphs as alternatives. It also gives concrete guidance to confirm the graph name first and to use clear_graph_data when only data removal is needed. This is exemplary when-vs-alternative guidance.

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

tigergraph__drop_loading_jobB
DestructiveIdempotent

Drop (delete) a loading job from the graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
job_nameYesThe name of the loading job to drop.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already provide destructiveHint=true, so the description adds little beyond restating that this deletes a loading job. It does not disclose irreversibility, effects on active loading processes, or behavior if the job does not exist. No extra behavioral context is provided beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every word contributes to the meaning, and the parenthetical '(delete)' usefully clarifies the technical term 'drop'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with full schema coverage and clear annotations, the description is nearly complete for selecting and invoking the tool. It could mention that the action is permanent or advise listing loading jobs first, but the combination of schema and annotations covers the essential call requirements.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents job_name, profile, and graph_name clearly. The description adds no parameter-level details, but with full schema coverage this is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Drop (delete)') and resource ('a loading job'), so an agent can tell this is the deletion tool for loading jobs. It does not explicitly contrast with related drop tools (drop_graph, drop_query, drop_data_source), but the resource noun is specific enough to avoid confusion.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as get_loading_jobs or create_loading_job. There is no warning to list/verify jobs before deleting, and no mention of whether dropping affects running jobs. Usage context is only implied by the destructive name.

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

tigergraph__drop_queryA
DestructiveIdempotent

Drop (delete) an installed query from TigerGraph.

Use When: • Removing queries no longer needed • Cleaning up test queries • Before re-installing a modified query

Quick Start:

{
  "query_name": "oldQuery"
}

Warning: • Permanently deletes the installed query • Cannot be undone • Any code calling this query will fail

Tips: • Use 'show_query' first to review before dropping • Cannot drop queries being used by other queries

Related Tools: install_query, show_query, is_query_installed

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_nameYesName of the query to drop.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description explicitly warns that the deletion is permanent, cannot be undone, will break code calling the query, and that queries in use by other queries cannot be dropped. These are meaningful behavioral disclosures that add real context beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections: purpose, use cases, quick start, warning, tips, and related tools. It front-loads the core purpose and warning, and every section adds practical value for a destructive operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive single-purpose tool with full schema coverage and strong annotations, the description provides sufficient operational context: when to use it, what will happen, limitations, and related tools. No output schema is present, but a simple success/failure outcome is reasonably inferred from the operation.

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

Parameters3/5

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

Schema coverage is 100%, and each parameter already has a clear schema description, especially profile and graph_name. The description only adds a Quick Start example with query_name, which does not materially expand parameter semantics beyond what the input schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Drop (delete) an installed query from TigerGraph.' It clearly identifies the operation and target, and the phrase 'installed query' distinguishes it from related query-management tools like install_query and show_query.

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

Usage Guidelines4/5

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

The 'Use When' section provides explicit contexts: removing unneeded queries, cleaning up test queries, and before re-installing a modified query. It also offers a useful tip to use show_query before dropping, but it does not fully lay out when not to use the tool or name alternatives as explicit directives.

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

tigergraph__drop_vector_attributeA
DestructiveIdempotent

Drop a vector attribute from a vertex type. Creates a schema change job to ALTER VERTEX with DROP VECTOR ATTRIBUTE.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
vector_nameYesName of the vector attribute to drop.
vertex_typeYesName of the vertex type.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent hints. The description adds useful context by noting that it 'creates a schema change job,' which implies an asynchronous operation rather than an immediate change. This goes beyond the annotations and helps the agent understand the side-effect profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no filler. The primary action is stated first, followed by a brief technical note on the implementation. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive operation with 4 parameters (2 required) and no output schema, the description provides sufficient information. It explains the action and the underlying mechanism. The annotations cover the safety aspects, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter clearly described (vertex_type, vector_name, graph_name, profile). The tool description does not add additional meaning beyond what the schema already provides, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Drop a vector attribute') and the target ('from a vertex type'), making it distinct from sibling tools like add_vector_attribute or list_vector_attributes. The verb and resource are precise, leaving no ambiguity about the tool's function.

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

Usage Guidelines4/5

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

The description provides clear context about the operation (dropping a vector attribute) and implies when it is relevant, but it does not explicitly compare to alternatives or state when not to use it. Since the tool name and description are self-explanatory, the guidance is adequate though not fully explicit.

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

tigergraph__fetch_vectorA
Read-onlyIdempotent

Fetch vertices with their vector data using GSQL PRINT WITH VECTOR. Note: Vector attributes cannot be fetched via REST API.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_idsYesList of vertex IDs to fetch.
vertex_typeYesType of the vertex.
vector_attributeNoSpecific vector attribute to fetch. If not provided, fetches all vectors.

TDQS

A4/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds the GSQL implementation detail and the REST limitation, but discloses little beyond that about return shape, auth, or edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the action front-loaded and the caveat placed second. No filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only fetch with 100% schema coverage and only two required parameters, the description plus annotations are largely sufficient for an agent to call the tool. The main missing piece is a description of the return shape, especially since the tool has no output schema, so a 4 rather than 5.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters have individual descriptions in the schema. The tool description itself adds no parameter-specific meaning beyond the general 'vector data' context, justifying the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and resource ('Fetch vertices with their vector data') and names the underlying mechanism ('GSQL PRINT WITH VECTOR'), which distinguishes this from REST-based vertex retrieval siblings such as get_nodes. The scope is clear and actionable.

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

Usage Guidelines4/5

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

The note that 'Vector attributes cannot be fetched via REST API' gives a clear reason to choose this GSQL-backed tool over REST-based alternatives. It does not explicitly name sibling tools or state 'use X when not Y,' so the guidance is context rather than an explicit routing rule.

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

tigergraph__generate_cypherA
Read-onlyIdempotent

Generate an openCypher query from a natural language description using an LLM. Use this tool when you prefer Cypher syntax over GSQL. The generated query will be wrapped in TigerGraph's INTERPRET OPENCYPHER QUERY format. graph_name is required as the query needs to specify the target graph. Configure the LLM via env vars: LLM_MODEL (e.g., 'gpt-4o' or 'openai:gpt-4o') and optionally LLM_PROVIDER.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameYesName of the graph. Required for Cypher queries as they need to be wrapped in INTERPRET OPENCYPHER QUERY for the specific graph.
query_descriptionYesA natural language description of what data you want to retrieve. Examples: 'Find all users who purchased more than 5 items', 'Find friends of friends', 'Match patterns in the graph'

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds genuine context beyond that: the output is an LLM-generated query wrapped in INTERPRET OPENCYPHER QUERY format, and the tool depends on env var configuration (LLM_MODEL, LLM_PROVIDER). No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the core purpose and sibling differentiation before the config details. There is minor redundancy — the graph_name requirement is restated from the schema — but the prose is compact and each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should clarify the return value. It mentions the query is 'wrapped in TigerGraph's INTERPRET OPENCYPHER QUERY format', which hints at the output shape, but it never explicitly states what the tool returns (e.g., the generated query string). For a generation tool this is a notable but not severe gap, given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all three parameters fully. The description adds context mostly around graph_name (why it is required), but does not add syntax/format detail beyond what the schema provides. The baseline 3 applies since the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Generate'), resource ('openCypher query'), and method ('from a natural language description using an LLM'). It distinguishes itself from the sibling tigergraph__generate_gsql by explicitly routing 'when you prefer Cypher syntax over GSQL'. An agent can immediately tell what this does and which alternative it is not.

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

Usage Guidelines4/5

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

The description gives an explicit usage condition ('Use this tool when you prefer Cypher syntax over GSQL'), which names the sibling alternative and the deciding factor. It also justifies the graph_name requirement. It doesn't go so far as to list exclusions (e.g., when to execute a query instead), but the primary selection axis against generate_gsql is clearly stated.

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

tigergraph__generate_gsqlA
Read-onlyIdempotent

Generate a GSQL query from a natural language description using an LLM. Use this tool when you need to create a GSQL query but are unsure of the exact syntax. The generated query can then be executed using the gsql tool. For best results, provide the graph_name so the schema can be used to generate accurate queries. Configure the LLM via env vars: LLM_MODEL (e.g., 'gpt-4o' or 'openai:gpt-4o') and optionally LLM_PROVIDER.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If provided, the schema will be fetched to generate more accurate GSQL.
query_descriptionYesA natural language description of what data you want to retrieve. Examples: 'Find all users who purchased more than 5 items', 'Count vertices by type', 'Find shortest path between two nodes'

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark it read-only, idempotent, and non-destructive; the description adds useful context about LLM usage, schema fetching when graph_name is provided, and configuration via LLM_MODEL/LLM_PROVIDER env vars. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: purpose, when-to-use, execution follow-up, and best-practice/env-var notes. Every sentence contributes, though the env-var configuration detail is somewhat secondary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description makes the output artifact clear ('a GSQL query') and gives a follow-up action (execute via gsql). It also covers graph_name behavior and LLM configuration, leaving little ambiguity for a straightforward generation task.

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

Parameters3/5

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

Schema coverage is 100%, so parameter documentation is already complete. The description mostly reinforces graph_name's benefit and adds env-var configuration rather than new parameter-level meaning, which matches the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generate') and resource ('GSQL query') and clarifies that generation happens from a natural language description via an LLM. It also points to the gsql tool for execution, which helps distinguish generation from execution, though it doesn't explicitly contrast with siblings like generate_cypher.

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

Usage Guidelines4/5

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

It provides an explicit trigger: 'Use this tool when you need to create a GSQL query but are unsure of the exact syntax.' It also advises providing graph_name for better schema-aware results and notes the generated query can be executed with the gsql tool. It stops short of explaining when not to use this tool or naming alternatives.

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

tigergraph__get_all_data_sourcesB
Read-onlyIdempotent

Get information about all data sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral context such as return format or handling of empty results. With annotations covering safety, this is acceptable but adds little beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded and to the point. It avoids unnecessary verbosity, though it could be slightly more informative about the return structure. It is appropriately sized for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description is mostly sufficient. However, it lacks context about what 'information' includes and when to prefer this tool over related ones. The annotations cover safety, so the overall completeness is adequate but not exceptional.

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

Parameters3/5

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

Schema coverage is 100% and the profile parameter is documented in the schema with a clear description. The tool description does not add any additional parameter semantics beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 'all data sources', which is specific enough to distinguish from get_data_source (singular) and get_data_source_types. However, it doesn't elaborate on what 'information' entails, which could be ambiguous, but the core purpose is clear.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like get_data_source or get_data_source_types. The description implies it's for listing all data sources, but it doesn't explicitly say 'use this when you need a list' or mention when not to use it. No exclusions or alternatives are given.

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

tigergraph__get_data_sourceB
Read-onlyIdempotent

Get information about a specific data source.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
data_source_nameYesName of the data source.

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds practically no behavioral context beyond the scope word 'specific.' It does not mention return format, authentication needs, or any other behavioral traits, so it adds little beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence with no filler. Every word contributes to identifying the operation and its singular scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with documented parameters and safety annotations, the description is mostly adequate. However, there is no output schema and the description only says 'information,' leaving the return shape unspecified, which is a notable gap.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters already have meaningful descriptions in the schema. The tool description adds no parameter-level meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description names the resource ('data source') and scopes the operation to 'a specific' one, which clearly distinguishes it from the sibling get_all_data_sources. The verb 'get' and singular scope make the purpose unmistakable.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus related siblings such as get_all_data_sources, preview_sample_data, or get_data_source_types. The word 'specific' implies a single-object lookup, but no alternatives or exclusions are stated.

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

tigergraph__get_data_source_typesA
Read-onlyIdempotent

List the data source types supported by 'create_data_source', with the required and optional configuration keys and an example config for each. Answers locally without contacting TigerGraph.

ParametersJSON Schema
NameRequiredDescriptionDefault
familyNoOptional filter: 'object_store', 'warehouse', 'stream', or 'filesystem'. Omit to list every type.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark readOnlyHint and idempotentHint as true. The description adds a significant behavioral detail beyond that: 'Answers locally without contacting TigerGraph', informing the agent that no network/authentication is needed and the call is fast. This extra context enriches the safety and cost profile without contradicting any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first clearly states the purpose and content, the second adds a behavioral note. It is front-loaded with the primary action and requires no filler. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with one optional parameter and no output schema, the description fully covers what the agent needs: the list of types with their configurations and examples, plus the local execution mode. There is no missing critical information for correct invocation and expectation.

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

Parameters3/5

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

The single parameter 'family' is fully described in the schema with its allowed values and default. Since schema description coverage is 100%, the description does not add parameter-specific meaning beyond what the schema provides. The description does not mention the parameter at all, but the schema already carries the load, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (List), a clear resource (data source types) and its relevance to 'create_data_source', plus details on what is included (required/optional config keys and an example config). This clearly distinguishes it from siblings like get_all_data_sources or get_data_source, which deal with actual data sources rather than types.

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

Usage Guidelines4/5

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

The description implies usage as a reference for creating data sources by explicitly linking to 'create_data_source'. It also notes the tool answers locally, suggesting it is lightweight and suitable for quick lookups. It does not explicitly contrast with alternatives (e.g., 'use this instead of X'), but the purpose is unambiguous given the sibling set.

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

tigergraph__get_edgeA
Read-onlyIdempotent

Get a single edge (relationship) from a TigerGraph graph by specifying source, target, and edge type.

Use When: • Retrieving a specific relationship • Checking edge attributes • Verifying edge was created

Quick Start:

{
  "source_vertex_type": "Person",
  "source_vertex_id": "user1",
  "edge_type": "FOLLOWS",
  "target_vertex_type": "Person",
  "target_vertex_id": "user2"
}

Tips: • Requires full edge specification (source, target, type) • Returns edge attributes if any • Use 'get_neighbors' for simpler neighbor queries

Related Tools: get_edges, has_edge, get_neighbors

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeYesType of the edge.
graph_nameNoName of the graph. If not provided, uses default connection.
source_vertex_idYesID of the source vertex.
target_vertex_idYesID of the target vertex.
source_vertex_typeYesType of the source vertex.
target_vertex_typeYesType of the target vertex.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this tool read-only, idempotent, and non-destructive. The description adds useful behavioral detail: it requires full edge specification, returns edge attributes if any, and routes simpler queries to get_neighbors. It does not detail not-found or error behavior, but the annotations cover the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized into scannable sections: summary, Use When, Quick Start, Tips, and Related Tools. It is front-loaded with the core purpose and every section adds distinct value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-edge read with read-only annotations and full schema coverage, the description covers purpose, required parameters, usage context, return behavior, and alternatives. A fuller explanation of the exact return shape or not-found behavior would help, but the tool is safe to invoke based on the provided details.

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

Parameters4/5

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

Schema coverage is 100%, so the parameters are already documented in the schema. The Quick Start example and the tip 'Requires full edge specification' add integration-level meaning by showing how the required parameters combine, which raises it above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific operation: retrieving a single edge by source, target, and edge type. The description clearly names the resource and criteria, and the Related Tools section distinguishes it from get_edges, has_edge, and get_neighbors.

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

Usage Guidelines4/5

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

The 'Use When' section gives concrete scenarios: retrieving a specific relationship, checking edge attributes, and verifying edge creation. It also names an alternative tool, get_neighbors, for simpler queries, though it does not fully spell out when to prefer get_edges or has_edge over this tool.

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

tigergraph__get_edge_countB
Read-onlyIdempotent

Get the count of edges in a TigerGraph graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeNoType of edges to count. If not provided, counts all types.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral details beyond these, such as how counts are computed, performance implications, or behavior when edge_type is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core action and resource. There is no wasted wording, and it is appropriately sized for the simplicity of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only count operation with three well-documented optional parameters and safety annotations, the description captures the essential purpose. It does not mention the return format, but given the absence of an output schema and the trivial nature of the result, this is a minor omission.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters individually documented (profile, edge_type, graph_name) including defaults and usage notes. The tool description itself adds no parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('get') and resource ('count of edges'), clearly indicating the tool's purpose. It is unambiguous with respect to its subject matter, though it does not explicitly contrast with sibling tools like get_vertex_count or get_node_degree.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as get_vertex_count, get_node_degree, or get_edges. The description simply states the function, leaving the agent to infer appropriate usage from the tool name.

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

tigergraph__get_edgesA
Read-onlyIdempotent

Get multiple edges (relationships) from a TigerGraph graph, optionally filtered by type.

Use When: • Retrieving multiple edges • Exploring graph relationships • Data export and analysis

Quick Start:

{
  "source_vertex_type": "Person",
  "source_vertex_id": "user1",
  "edge_type": "FOLLOWS"
}

Tips: • Can filter by edge type • Returns all edges from a source vertex • Use 'get_neighbors' for simpler use cases

Related Tools: get_edge, get_neighbors, get_edge_count

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of edges to return.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeNoType of the edge. If not provided, gets all types.
graph_nameNoName of the graph. If not provided, uses default connection.
source_vertex_idNoID of the source vertex. If not provided, gets all edges.
source_vertex_typeNoType of the source vertex. If not provided, gets all types.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is covered. The description adds that it 'Returns all edges from a source vertex' and can filter by edge type, which is useful behavioral context. But it doesn't disclose potential performance implications or pagination behavior, which would add value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections ('Use When', 'Quick Start', 'Tips', 'Related Tools') and a code example. The core purpose is front-loaded in the first sentence, and every section adds value without redundancy. It is concise yet comprehensive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main use cases, provides a quick start example, and lists related tools. Since there is no output schema, it would be helpful to describe the return format, but this is not critical for a read-only edge retrieval tool. The description is sufficiently complete for an agent to decide when to use it and how to invoke it with the given parameters.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented with descriptions. The description mentions filtering by edge type and returning all edges from a source vertex, which aligns with schema but adds no additional meaning beyond what the schema already provides. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get multiple edges (relationships) from a TigerGraph graph, optionally filtered by type.' It specifies the verb, resource, and context, and distinguishes itself from siblings like get_edge (singular) and get_neighbors by focusing on multiple edges and filtering.

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

Usage Guidelines4/5

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

The description includes a 'Use When' section listing concrete scenarios (retrieving multiple edges, exploring graph relationships, data export and analysis) and a 'Tips' section recommending get_neighbors for simpler use cases. It also lists related tools. However, it doesn't explicitly state when NOT to use this tool beyond the suggestion of get_neighbors.

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

tigergraph__get_global_schemaA
Read-onlyIdempotent

Get the complete global schema including all global vertex types, edge types, graphs, and their member types. Runs GSQL 'LS' command.

Use When: • You need to see all graphs and their schemas at once • Understanding the complete database structure • Finding all available vertex and edge types across all graphs • Database-level schema exploration

Quick Start:

{}

(No parameters needed)

Tips: • Returns output from GSQL 'LS' command • Shows all graphs in the database • For single graph details, use 'show_graph_details' instead • Useful for database administrators

Related Tools: list_graphs, show_graph_details, get_graph_schema

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds the info that it runs GSQL 'LS' command and shows all graphs, which is helpful. However, it doesn't describe output format or potential size/performance considerations, and names similarly scoped sibling tools without fully differentiating them, so it's decent but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: main purpose, use-when, quick start, tips, and related tools. Every section adds value, front-loaded with the core purpose. No unnecessary fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter tool with complete schema and safety annotations, the description provides all necessary usage context: what it returns, when to use it, and related tools. The output schema is absent, but the description implies it returns output from the LS command. Complete enough for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% — the only parameter 'profile' is fully documented in the schema (including default and how to use it). The description adds no parameter-specific info beyond that, but since the schema covers everything, baseline 3 is appropriate. The description does clarify that no parameters are needed, which is a small add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and resource 'global schema', listing the exact contents (all global vertex types, edge types, graphs, member types). It also names the GSQL command executed, which distinguishes it from related tools like get_graph_schema and show_graph_details.

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

Usage Guidelines5/5

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

The 'Use When' section explicitly lists scenarios for using this tool, and the 'Related Tools' section names alternatives such as list_graphs, show_graph_details, and get_graph_schema. The Tips section even advises to use show_graph_details for single graph details, effectively communicating when not to use this tool.

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

tigergraph__get_graph_schemaA
Read-onlyIdempotent

Get the schema of a specific graph — vertex types, edge types, and their attributes — as structured JSON. Returns schema only, not queries or jobs.

Use When: • You need to know vertex/edge types and their attributes • Building or validating queries against the schema • Programmatic schema inspection or comparison

Quick Start:

{
  "graph_name": "SocialNetwork"
}

Tips: • Returns structured JSON (vertex types, edge types, attributes) • For a full listing including queries and jobs, use 'show_graph_details' • For just graph names, use 'list_graphs'

Related Tools: show_graph_details (full listing), list_graphs (names only)

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value beyond that by specifying the return format (structured JSON with vertex/edge types and attributes) and the scope exclusion (not queries or jobs), which clarifies behavior the annotations don't convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured and front-loaded: the core purpose lands in the first sentence, followed by labeled sections (Use When, Quick Start, Tips, Related Tools). Every section earns its place—the quick start is a valid minimal invocation, and the related tool notes are the differentiators an agent needs. Zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with two optional params and no nested objects, the description is nearly complete. Since there's no output schema, it compensates by naming what the JSON contains (vertex types, edge types, attributes). The only minor gap is the exact JSON shape/format, but the stated contents and annotations cover what an agent needs to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% — both profile and graph_name are already well-documented in the schema with default behavior explained. The description adds a concrete Quick Start example (graph_name: 'SocialNetwork'), which is mildly useful but not substantive new semantics, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource—'Get the schema of a specific graph — vertex types, edge types, and their attributes — as structured JSON'—and immediately distinguishes it from siblings with 'Returns schema only, not queries or jobs.' An agent can tell it apart from show_graph_details and list_graphs without opening their schemas.

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

Usage Guidelines5/5

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

A dedicated 'Use When' section lists concrete trigger conditions (knowing vertex/edge types, building or validating queries, programmatic inspection), and the Tips section explicitly routes to alternatives: 'For a full listing including queries and jobs, use show_graph_details' and 'For just graph names, use list_graphs.' Nothing is left to inference.

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

tigergraph__get_loading_jobsA
Read-onlyIdempotent

Get a list of all loading jobs defined for the current graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a useful scoping detail ('all loading jobs defined for the current graph'), but it does not disclose return format, pagination, or behavior when no loading jobs exist. This is acceptable for a simple read-only list tool but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no filler or redundancy. It front-loads the core purpose and includes scope in the same breath. Every word contributes meaning, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, read-only list tool with zero required parametershare, the description is complete enough. The input schema covers all parameter semantics, annotations cover the safety profile, and the description clarifies what is being listed and in what scope. No output schema exists, but the tool name and description make the return concept clear.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters (profile and graph_name) are well documented in the input schema, including defaults and the list_connections hint. The tool description adds little beyond 'current graph,' so it correctly relies on the schema for parameter meaning. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: 'Get a list of all loading jobs defined for the current graph.' It specifies the verb ('get'), the resource ('loading jobs'), and the scope ('current graph'). However, it does not explicitly differentiate from closely related sibling tools like get_loading_job_status, create_loading_job, or drop_loading_job.

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

Usage Guidelines2/5

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 does not mention that get_loading_job_status is for a single job's status or that create/drop/run_loading_job tools are for other lifecycle stages. The schema's parameter descriptions give profile hints, but the tool description itself offers no when-to-use direction.

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

tigergraph__get_loading_job_statusB
Read-onlyIdempotent

Get the status of a specific loading job by its job ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe ID of the loading job to check status.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior, so the bar for extra disclosure is lower. The description adds the specific-ID scoping but nothing else about response behavior, absent-job errors, or polling semantics that would go beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no wasted words. It conveys the essential action and target resource immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich input schema and safety annotations, the tool is simple enough that the description is mostly adequate. However, there is no output schema and no statement about what the returned status looks like or how to obtain a valid job_id, leaving some inference needed.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents job_id, profile, and graph_name. The description's 'by its job ID' only echoes the required parameter without adding format, source, or relationship details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: get the status of a specific loading job by job ID. It distinguishes from the plural get_loading_jobs tool by emphasizing a single, ID-addressed job, though it does not explicitly name that alternative.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided; the description only restates the operation. It does not mention that get_loading_jobs should be used to list jobs or to discover a job_id, nor any prerequisite such as the job having been created/run.

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

tigergraph__get_neighborsA
Read-onlyIdempotent

Get neighbor vertices connected to a source vertex via edges. Useful for 1-hop graph traversal to find connected entities.

Use When: • Finding vertices directly connected to a vertex • 1-hop traversal (immediate neighbors) • Discovering relationships • Building recommendation lists

Quick Start:

{
  "vertex_type": "Person",
  "vertex_id": "user123",
  "edge_type": "FOLLOWS"
}

Common Workflow:

  1. Have a source vertex ID

  2. Call 'get_neighbors' with vertex info

  3. Optionally filter by edge type

  4. Receive list of connected vertices

Tips: • Simpler than writing a query for 1-hop traversal • Can filter by edge type (e.g., only 'FOLLOWS' edges) • Can specify target vertex type • For multi-hop traversal, use 'run_query' instead

Examples: • Find friends: edge_type='FRIENDS' • Find purchases: edge_type='PURCHASED', target_vertex_type='Product' • Find all connections: omit edge_type

Related Tools: get_node_edges, run_query, add_edge

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of neighbors to return.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeNoType of edges to traverse (e.g., 'purchased', 'friend_of'). If not provided, traverses all edge types.
vertex_idYesID of the source vertex.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeYesType of the source vertex (e.g., 'Person', 'Product').
target_vertex_typeNoType of target vertices to return. If not provided, returns all types.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds behavioral context like filtering by edge type and target vertex type, and notes that it's simpler than writing a query. However, it doesn't disclose pagination, limits, error handling, or return format—though these are partially covered by the schema. Given annotation coverage, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Use When, Quick Start, Common Workflow, Tips, Examples, Related Tools). It's longer than a minimal description but each section serves a purpose—examples and workflow guidance are practical. It's front-loaded with the core purpose and uses bullets for scannability, though slightly verbose. A 4 reflects efficient structure without excessive padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 7 parameters (2 required) and no output schema. The description covers typical usage, provides examples, and points to alternatives for multi-hop traversal. It doesn't explain return format or edge cases, but for a straightforward read-only neighbor lookup, it covers the essentials. Given the complexity and lack of output schema, it's fairly complete, though could mention limit behavior or error scenarios.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds concrete usage patterns: examples like 'Find friends: edge_type=FRIENDS', 'Find purchases: edge_type=PURCHASED, target_vertex_type=Product', and 'Find all connections: omit edge_type'. It also includes a Quick Start JSON showing required parameters. This goes beyond schema descriptions by clarifying how parameters combine, so a 4 is justified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Get neighbor vertices connected to a source vertex via edges.' It explicitly mentions 1-hop graph traversal and differentiates from siblings by naming alternatives like get_node_edges, run_query, and add_edge. This makes the tool's purpose unmistakable and distinct.

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

Usage Guidelines5/5

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

The 'Use When' section lists specific conditions (finding directly connected vertices, 1-hop traversal, discovering relationships). It explicitly says 'For multi-hop traversal, use run_query instead' and mentions get_node_edges as related, giving clear exclusions and alternatives. This is exemplary guidance.

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

tigergraph__get_nodeA
Read-onlyIdempotent

Get a single node (vertex) from a TigerGraph graph by its type and ID.

Use When: • Retrieving a specific entity by its ID • Verifying a vertex was created successfully • Checking current attribute values • Fetching details before updating

Quick Start:

{
  "vertex_type": "Person",
  "vertex_id": "user123"
}

Related Tools: • get_nodes - Get multiple vertices • has_node - Check if vertex exists • get_node_edges - Get edges connected to vertex

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
vertex_idYesID of the vertex to retrieve.
graph_nameNoName of the graph.
vertex_typeYesType of the vertex to retrieve.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful return-context ('Checking current attribute values', 'Fetching details before updating') but does not disclose error behavior or not-found handling, which would have strengthened transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear one-sentence summary, followed by well-scoped Use When bullets, a compact Quick Start example, and a Related Tools section. It is longer than the minimum but each section serves a purpose and no content is redundant enough to hurt clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-node read with annotations covering safety and schema covering all parameters, the description provides sufficient invocation context, use cases, and sibling differentiators. The lack of an output schema is mitigated by the description's mention of attribute values and details, though not-found behavior is still left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents vertex_type, vertex_id, graph_name, and profile. The description's mention of type and ID and the Quick Start JSON add a concrete usage example but no new parameter meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and target resource: 'Get a single node (vertex) from a TigerGraph graph by its type and ID.' It clearly distinguishes this from siblings by naming get_nodes, has_node, and get_node_edges in Related Tools, so an agent can tell them apart without opening schemas.

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

Usage Guidelines4/5

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

The 'Use When' section gives concrete scenarios such as retrieving a specific entity by ID and verifying a vertex was created. It does not explicitly state when to prefer get_nodes or has_node over this tool, but the Related Tools section provides enough context for an agent to infer the main alternatives.

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

tigergraph__get_node_degreeB
Read-onlyIdempotent

Get the degree (number of connected edges) of a node in a TigerGraph graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
directionNoDirection of edges: 'outgoing', 'incoming', or 'both'.both
edge_typeNoType of edges to count. If not provided, counts all edge types.
vertex_idYesID of the vertex.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeYesType of the vertex.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the useful semantic that degree means a count of connected edges, but it does not disclose return shape, node-not-found behavior, or default counting behavior beyond what the input schema already provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that concisely defines the tool's purpose without redundant phrasing or repetition of schema fields. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only counting operation, the combination of the description, complete parameter schema, and safety annotations is largely sufficient. It clearly expresses what is returned, a degree count; the only minor gap is the absence of edge-case behavior such as what happens when the vertex does not exist.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already explains all six parameters, including defaults for direction, edge_type, graph_name, and profile. The description adds little beyond the core concept of 'degree', meeting the baseline for well-documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Get the degree (number of connected edges) of a node in a TigerGraph graph.' It is specific and informative, but it does not explicitly contrast with sibling tools like get_node_edges or get_vertex_count, so it lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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 such as get_node_edges, get_edge_count, or get_neighbors. Usage is only implied by the tool name and description, with no stated exclusions or conditions.

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

tigergraph__get_node_edgesA
Read-onlyIdempotent

Purpose: Retrieve all edges connected to a specific vertex (node).

When to Use:

  • Explore connections from a vertex

  • Find relationships of a specific type

  • Analyze node connectivity patterns

  • Get edge attributes and target vertices

What You Get:

  • Edge type and ID

  • Edge attributes

  • Target vertex information

  • Edge direction (outgoing from the specified vertex)

Common Workflows:

  1. Explore all connections: get_node_edges(vertex_type='Person', vertex_id='123')

  2. Specific relationship type: get_node_edges(..., edge_type='FRIEND_OF')

  3. Degree analysis: Count returned edges to get outgoing degree

Tips:

  • Returns OUTGOING edges only (edges starting from this vertex)

  • Use get_node_degree() for quick connection count

  • Use get_neighbors() to get target vertices without edge details

  • Combine with pagination (limit) for highly connected vertices

Note: This returns edges where the specified vertex is the SOURCE. For incoming edges, use a reverse traversal query or get_neighbors().

Related Tools:

  • get_node_degree: Count connections without retrieving edges

  • get_neighbors: Get connected vertices

  • get_edges: Query edges by type across the graph

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of edges to return (default: 100)
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeNoOptional: Filter by specific edge type. If omitted, returns all edge types.
vertex_idYesThe unique identifier of the source vertex
graph_nameNoName of the graph (uses default if not specified)
vertex_typeYesThe type of the source vertex

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already indicate readOnly, idempotent, and non-destructive behavior, so the description correctly adds non-obvious behavioral context beyond that: 'Returns OUTGOING edges only (edges starting from this vertex)' and 'This returns edges where the specified vertex is the SOURCE.' It also discloses the return contents, including edge attributes, target vertices, and direction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: Purpose, When to Use, What You Get, Common Workflows, Tips, Note, and Related Tools. It is slightly repetitive about the outgoing-edge constraint, mentioning it in What You Get, Tips, and Note, but it remains readable 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description compensates by listing what the agent receives: edge type, edge ID, edge attributes, target vertex information, and direction. It also covers common workflows, pagination advice, and clear comparisons to sibling tools, making the tool safe and effective to invoke.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds value with concrete usage examples like get_node_edges(vertex_type='Person', vertex_id='123') and explains how edge_type, limit, and vertex identity are used in practice. It does not duplicate every parameter's schema text but adds meaningful usage context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Retrieve all edges connected to a specific vertex (node).' It clearly distinguishes itself from related siblings by stating that it returns outgoing edges only, and it explicitly differentiates from get_edges, get_neighbors, and get_node_degree in the Related Tools section.

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

Usage Guidelines5/5

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

The 'When to Use' section lists concrete scenarios, and the 'Tips' section gives explicit alternatives: 'Use get_node_degree() for quick connection count' and 'Use get_neighbors() to get target vertices without edge details.' It also states when not to use this tool, such as for incoming edges, which is strong routing guidance.

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

tigergraph__get_nodesA
Read-onlyIdempotent

Purpose: Retrieve multiple vertices (nodes) from the graph with optional filtering and sorting.

When to Use:

  • List vertices of a specific type

  • Search for vertices matching certain criteria

  • Browse graph data with pagination

  • Find vertices based on attribute values

Key Features:

  • WHERE clause for filtering

  • Sorting by attributes (ascending/descending)

  • Limit results for pagination

  • Returns complete vertex data including all attributes

Common Workflows:

  1. List all vertices: get_nodes(vertex_type='Person', limit=10)

  2. Filter by attribute: get_nodes(vertex_type='Person', where='age > 25')

  3. Sort results: get_nodes(vertex_type='Person', sort='-created_at', limit=20)

Tips:

  • Use limit to avoid retrieving too many vertices

  • WHERE clause syntax follows TigerGraph conventions

  • Sort with '-' prefix for descending order

  • Combine where, sort, and limit for precise queries

Related Tools:

  • get_node: Get a single specific vertex

  • get_vertex_count: Count vertices before retrieving

  • run_query: For complex multi-hop queries

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort results by attribute. Use '-' prefix for descending (e.g., '-age')
limitNoMaximum number of vertices to return (default: 100)
whereNoOptional filter condition. Use TigerGraph WHERE syntax. Examples: - 'age > 25' - 'name == "John"' - 'active == true'
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph to query (uses default if not specified)
vertex_typeYesThe type of vertices to retrieve

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it returns complete vertex data including all attributes, supports WHERE/sort/limit, and warns to use limit to avoid retrieving too many vertices. It doesn't mention pagination details or potential performance implications beyond the limit tip, but the annotations carry the main safety burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Purpose, When to Use, Key Features, Common Workflows, Tips, Related Tools) and front-loads the purpose. It is somewhat longer than strictly necessary, but every section earns its place by providing actionable guidance. The examples are compact and illustrative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with 100% schema coverage and no output schema, the description covers the key aspects an agent needs: what it does, when to use it, how to filter/sort/limit, and how it relates to siblings. It doesn't describe the exact return format, but since there is no output schema and the tool returns 'complete vertex data', this is a minor gap. The description is complete enough for correct invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all six parameters. The description adds value by showing concrete usage examples (e.g., where='age > 25', sort='-created_at') and explaining the '-' prefix for descending order, which reinforces the schema's parameter descriptions. It doesn't add much beyond the schema, but the examples and tips make the parameter semantics more accessible.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves multiple vertices with filtering and sorting, using a specific verb ('Retrieve') and resource ('vertices/nodes'). It distinguishes itself from related tools by explicitly naming get_node (single vertex) and get_vertex_count (count before retrieving), so an agent can tell them apart.

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

Usage Guidelines5/5

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

The 'When to Use' section lists concrete scenarios (list vertices of a type, search by criteria, browse with pagination, find by attribute values), and the 'Related Tools' section explicitly names alternatives and when they are preferable (get_node for a single vertex, get_vertex_count before retrieving, run_query for complex multi-hop queries). This is explicit when/when-not guidance.

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

tigergraph__get_query_descriptionA
Read-onlyIdempotent

Get the description and parameter descriptions of one or more installed queries. Requires TigerGraph 4.0+.

Use When: • Discovering what a query does and what each parameter means • Building query documentation • Understanding a query's parameters together with their descriptions

Quick Start:

{
  "query_name": "getPersonFriends"
}

Tips: • Pass 'all' (the default) to read descriptions for every query • Pair with 'get_query_metadata' to combine parameter types and descriptions • Set descriptions with 'update_query_description'

Related Tools: update_query_description, get_query_metadata, show_query

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_nameNoName of the query to read. Pass 'all' (default) to read descriptions for every query.all

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false). The description adds genuine value beyond that by disclosing 'Requires TigerGraph 4.0+,' a version prerequisite not present in the schema or annotations. It could also mention behavior for nonexistent queries, but with annotations carrying the safety burden, the added version constraint earns a strong score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clearly labeled sections (Use When, Quick Start, Tips, Related Tools) and front-loads the core purpose. It is slightly longer than necessary with some redundancy between the Tips and the schema's parameter descriptions, but every section serves a navigational purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only metadata tool with three well-documented parameters and no output schema, the description covers the essentials: purpose, version requirement, use cases, a concrete example, and related tools. The return shape is adequately implied by the first sentence, and no critical information for invoking the tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents all three parameters including the 'all' default for query_name. The description reinforces this with a Quick Start example and the tips, adding marginal value but not meaningfully compensating beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get the description and parameter descriptions of one or more installed queries,' which is precise and unambiguous. It distinguishes itself from siblings like get_query_metadata by implying that this tool provides descriptions while get_query_metadata provides types, though this differentiation is implied via the pairing tip rather than stated explicitly in the purpose sentence.

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

Usage Guidelines4/5

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

The 'Use When' section lists three concrete scenarios (discovering query behavior, building documentation, understanding parameters), and the Tips section names alternatives and complements (get_query_metadata, update_query_description). It provides clear context but lacks an explicit 'when not to use' exclusion, so it falls just short of the top score.

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

tigergraph__get_query_metadataA
Read-onlyIdempotent

Get metadata about an installed query including parameters, return type, and other details.

Use When: • Understanding query parameters and signature • Discovering what queries are available • Building query documentation • Programmatic query discovery

Quick Start:

{
  "query_name": "getPersonFriends"
}

Tips: • Shows query parameters, types, and metadata • Helps understand how to call the query • Use 'show_query' to see the actual query text

Related Tools: show_query, is_query_installed, run_installed_query

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_nameYesName of the query.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish the tool as read-only, idempotent, and non-destructive; the description adds that it returns query parameters, types, and metadata and helps callers understand how to invoke the query. It does not detail the exact return shape or error behavior, but for a read-only metadata lookup with strong annotations this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear definition and then organized into Use When, Quick Start, Tips, and Related Tools sections, with no filler. There is minor redundancy between 'parameters, return type, and other details' and 'Shows query parameters, types, and metadata,' but the structure remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one required parameter, full schema descriptions, and read-only/idempotent annotations, the description covers selection, invocation, and alternatives well. It could add error behavior for missing or uninstalled queries, but is_query_installed is listed as a related tool and the stated return contents mitigate the lack of an output schema.

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

Parameters4/5

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

All three parameters are already fully documented in the input schema, so the baseline is 3. The Quick Start JSON adds a concrete example value for query_name, which helps an agent form a valid call, and no parameter documentation gap exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource: 'Get metadata about an installed query including parameters, return type, and other details.' The related-tool note 'Use show_query to see the actual query text' further differentiates it from the sibling that returns query source, so an agent can distinguish it from show_query and run_installed_query.

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

Usage Guidelines4/5

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

'Use When' enumerates concrete situations such as understanding query parameters/signature, documentation, and programmatic discovery. The tip explicitly routes users to show_query when they need the actual query text, but there is no explicit when-not-to-use list. The 'Discovering what queries are available' bullet is slightly broad since query_name is required, though the overall guidance is clear.

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

tigergraph__get_tool_infoA
Read-onlyIdempotent

Get detailed information about a specific TigerGraph tool.

Use this tool when:

  • You want to understand a tool's capabilities

  • You need examples of how to use a tool

  • You want to know prerequisites or related tools

Returns:

  • Detailed tool description

  • Use cases and examples

  • Prerequisites and related tools

  • Common next steps

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameYesName of the tool to get information about. Example: 'tigergraph__add_node' or 'tigergraph__search_top_k_similarity'

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior. The description adds meaningful context by enumerating what the tool returns (descriptions, use cases, examples, prerequisites, next steps), which is valuable since there is no output schema. It does not contradict annotations or hide side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loads the core purpose, and uses scoped 'Use this tool when' and 'Returns' sections. Every sentence adds functional guidance and there is no filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only introspection tool, the description sufficiently explains purpose, usage triggers, and return content, which is especially important because there is no output schema. It could be slightly more complete by noting how to handle an invalid/unknown tool_name, but that is a minor gap.

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

Parameters3/5

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

The schema has 100% description coverage for the single tool_name parameter, including an example value. The description therefore does not need to compensate, and it adds no parameter-specific syntax or qualification beyond calling the tool 'specific.' Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get detailed information about a specific TigerGraph tool.' It clearly identifies this as an introspection/help tool for one tool, which distinguishes it from list-oriented siblings like discover_tools or connection tools without requiring schema inspection. The 'Use this tool when' bullets reinforce that purpose.

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

Usage Guidelines4/5

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

The description explicitly tells the agent when to use the tool (understanding capabilities, examples, prerequisites, related tools). It does not, however, mention when not to use it or point to an alternative such as discover_tools for listing available tools, so it stops short of a fully explicit routing rule.

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

tigergraph__get_vector_index_statusA
Read-onlyIdempotent

Check the rebuild status of vector indexes. Returns 'Ready_for_query' when complete or 'Rebuild_processing' if still building.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
vector_nameNoVector attribute name. If not provided, checks all.
vertex_typeNoVertex type to check. If not provided, checks all.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the agent knows this is safe. The description adds value by specifying the exact return values, which is helpful. However, it does not mention any additional behaviors such as whether it returns statuses for all vector indexes when no vector_name is given, or what happens if no rebuild is in progress. Given that annotations cover safety well, this is adequate but not rich. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, with the core purpose front-loaded. The first sentence states the action clearly, and the second sentence gives the key return values. There is no wasted words or redundancy. It is appropriately concise for a simple status-checking tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only status-check tool with no output schema and no nested objects. The description, combined with complete parameter schemas and safe annotations, gives an agent enough to call the tool correctly. It could mention why the status matters (e.g., queries will fail until ready), but that is minor and not essential for invocation. A 4 is appropriate because it is complete for its simplicity, though a tiny bit more context on the significance of the return values would make it a 5.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all four parameters have descriptions. The tool description itself does not add parameter-level details beyond what the schema already provides. For example, it doesn't explain how profile or graph_name interact, but the schema already says 'Omit to use the active default profile' and 'If not provided, uses default connection.' So the description adds minimal value, but the schema does the heavy lifting, earning a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks the rebuild status of vector indexes, which is a specific and distinct function. It names the two possible return values ('Ready_for_query' or 'Rebuild_processing'), making it unambiguous. It stands out from sibling tools like 'list_vector_attributes' and 'upsert_vectors' by focusing on status checking.

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

Usage Guidelines3/5

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

The description implies when to use this tool: to check if vector index rebuild is complete before proceeding with queries. However, it does not explicitly state when not to use it or mention alternatives. For example, it doesn't say 'Use this after adding a vector attribute to confirm readiness' or 'Do not use this to check general graph status; use get_graph_schema instead.' The context is clear but lacks explicit routing guidance compared to better tools.

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

tigergraph__get_vertex_countA
Read-onlyIdempotent

Get the count of vertices in a TigerGraph graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeNoType of vertices to count. If not provided, counts all types.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description aligns with a read-only count operation. It adds no extra context about performance, exactness, or return format, so it neither contradicts nor enriches beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, eight words, no filler. Front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, all-optional-parameter count tool with safety annotations, the description and schema together are nearly complete. It doesn't explicitly state the return type, but the operation's output is self-evident.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter (profile, graph_name, vertex_type) fully documented including defaults. The description adds no additional parameter semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('get') and resource ('count of vertices') in a TigerGraph graph. This clearly distinguishes it from sibling tools like get_edge_count and get_node_degree, even though it doesn't mention the optional vertex_type filter.

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

Usage Guidelines2/5

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 siblings such as get_edge_count or get_node_degree. Parameter descriptions provide connection context but no tool-selection advice.

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

tigergraph__get_workflowA
Read-onlyIdempotent

Get a step-by-step workflow template for common TigerGraph tasks.

Use this tool when:

  • You need to complete a complex multi-step task

  • You want to follow best practices

  • You're new to TigerGraph and need guidance

Returns:

  • Ordered list of tools to use

  • Example parameters for each step

  • Explanations of what each step accomplishes

Available workflows: create_graph, load_data, query_data, vector_search, graph_analysis, setup_connection

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_typeYesType of workflow to retrieve: - 'create_graph': Set up a new graph with schema - 'load_data': Import data into an existing graph - 'query_data': Query and analyze graph data - 'vector_search': Set up and use vector similarity search - 'graph_analysis': Analyze graph structure and statistics - 'setup_connection': Initial connection setup and verification

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by stating the return structure: an ordered list of tools, example parameters, and explanations. It does not contradict annotations and provides useful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose sentence, bullet points for when to use, return details, and the workflow list. It is concise and front-loaded, though the workflow list is duplicated in the schema. Overall, it is efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description covers the key points: what it does, when to use it, what it returns, and the available workflows. It does not mention limitations (e.g., that templates may not cover every scenario), but this is minor given the tool's nature and annotations.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter workflow_type, including a description listing all six options and what each does. The description repeats the same list in the 'Available workflows' line, adding no new meaning beyond the schema. With full schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a step-by-step workflow template for common TigerGraph tasks, using the specific verb 'Get' and resource 'workflow template'. It distinguishes itself from the many action-oriented siblings by being a meta-guidance tool, and the list of available workflows makes its scope explicit.

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

Usage Guidelines4/5

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

The description explicitly provides 'Use this tool when' conditions: complex multi-step tasks, best practices, and new-user guidance. This gives clear context, though it does not mention alternatives like 'discover_tools' or explicitly state when not to use it. Still, the guidance is unambiguous.

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

tigergraph__gsqlA
Destructive

Execute a GSQL command on TigerGraph. Use this for administrative tasks (e.g., creating users, granting roles) or schema modifications (e.g., CREATE VERTEX). Do NOT use this for running data queries (SELECT statements) - use run_query instead. Example: CREATE USER alice WITH PASSWORD 'password' or LS.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesGSQL command to execute.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already establish destructiveHint=true and readOnlyHint=false, so the description does not need to restate that. It adds useful context about the intended command types (admin/schema) and concrete examples that imply mutating behavior, without contradicting the annotations. It stops short of explaining output structure or side-effect nuances, but the annotation coverage lowers the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler: action first, usage boundaries second, and examples last. Every sentence earns its place, and the hierarchy is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the return format is undocumented, but for a generic command executor that is acceptable and typical. The description covers purpose, exclusions, and examples; the schema documents parameters; and annotations cover safety. The only minor gap is not mentioning that output is raw GSQL output, but this does not impede correct invocation.

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

Parameters4/5

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

The input schema has 100% parameter description coverage, which sets a baseline of 3. The description adds concrete example values for the `command` parameter (CREATE USER, LS), which is more informative than the schema's generic 'GSQL command to execute.' This pushes the score slightly above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Execute a GSQL command on TigerGraph') and immediately differentiates from the sibling run_query by explicitly excluding SELECT queries. The examples (CREATE USER, LS) further delimit the intended scope, leaving no ambiguity about what this tool does versus its siblings.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool (administrative tasks, schema modifications) and when not to use it (data queries), and names the alternative (run_query). This is direct, actionable guidance that an agent can follow without inference.

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

tigergraph__has_edgeA
Read-onlyIdempotent

Check if an edge (relationship) exists between two vertices without retrieving its data.

Use When: • Verifying relationship existence • Validation logic • More efficient than get_edge when you only need existence check

Quick Start:

{
  "source_vertex_type": "Person",
  "source_vertex_id": "user1",
  "edge_type": "FOLLOWS",
  "target_vertex_type": "Person",
  "target_vertex_id": "user2"
}

Tips: • Returns boolean (true/false) • Faster than get_edge when you don't need the data • Use before add_edge to avoid duplicates

Related Tools: get_edge, add_edge

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
edge_typeYesType of the edge.
graph_nameNoName of the graph. If not provided, uses default connection.
source_vertex_idYesID of the source vertex.
target_vertex_idYesID of the target vertex.
source_vertex_typeYesType of the source vertex.
target_vertex_typeYesType of the target vertex.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds useful behavioral details: it returns a boolean, is faster than get_edge, and can be used pre-emptively before add_edge. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headers (Use When, Quick Start, Tips, Related Tools), front-loads the core purpose, and uses a compact JSON example. No redundant sentences; every section earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple existence-check tool, the description covers purpose, usage guidance, return type, performance comparison, and related tools. With annotations providing the safety profile and no output schema needed (returns boolean), this is complete for an agent to decide when and how to call it.

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

Parameters4/5

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

The input schema has 100% description coverage, so the baseline is 3. The description's Quick Start JSON example clarifies how the parameters map in practice (e.g., source_vertex_type as 'Person'), adding semantic value beyond the terse schema descriptions of each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb ('Check if an edge exists') with a resource ('between two vertices') and explicitly notes it does so 'without retrieving its data,' which distinguishes it from get_edge. The purpose is unambiguous and distinct from sibling tools like get_edge and add_edge.

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

Usage Guidelines5/5

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

The 'Use When' section explicitly lists scenarios (verifying relationship existence, validation logic) and directly compares with get_edge ('more efficient... when you only need existence check'). It also advises using it before add_edge to avoid duplicates, providing clear routing to alternatives.

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

tigergraph__has_nodeA
Read-onlyIdempotent

Purpose: Check if a vertex (node) exists in the graph without retrieving its full data.

When to Use:

  • Verify a vertex exists before operations

  • Validation in data pipelines

  • Conditional logic based on vertex existence

  • Lightweight existence checks (faster than get_node)

Key Features:

  • Returns simple boolean result (exists: true/false)

  • More efficient than get_node() for existence checks

  • No data transfer overhead

Common Workflows:

  1. Safe operations: has_node() → if true, proceed with get_node()/delete_node()

  2. Validation: Check required vertices exist before adding edges

  3. Conditional creation: If not exists, create with add_node()

Tips:

  • Use this instead of get_node() when you only need existence confirmation

  • Combine with add_node() for upsert logic

  • Faster than catching errors from get_node()

Related Tools:

  • get_node: Retrieve full vertex data if it exists

  • add_node: Create vertex if it doesn't exist

  • delete_node: Remove vertex after confirming existence

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
vertex_idYesThe unique identifier of the vertex
graph_nameNoName of the graph (uses default if not specified)
vertex_typeYesThe type of the vertex to check

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to restate that. It adds useful behavioral context such as returning a simple boolean result, being more efficient than get_node, and having no data transfer overhead. Slight over-explanation but no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Purpose, When to Use, Key Features, Common Workflows, Tips, Related Tools). However, it is on the verbose side; some sections like 'Common Workflows' could be trimmed, but the organization makes it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple existence-check tool with readOnlyHint and idempotentHint annotations, the description covers the purpose, usage, and performance characteristics thoroughly. It could mention error handling or edge cases (e.g., missing vertex_type) but these are likely covered by the schema. Overall, complete enough for an agent to call it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description mentions vertex_type and vertex_id implicitly in the workflow examples but does not add new meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool checks for the existence of a vertex in the graph without retrieving full data. The verb 'has' combined with the resource 'node' is specific and distinct from siblings like get_node, add_node, and delete_node.

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

Usage Guidelines5/5

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

Explicitly lists when to use (verification, validation, conditional logic) and provides a 'Related Tools' section with alternative tools and their purposes, plus a tip to prefer this over get_node for existence checks. Clearly differentiates from siblings.

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

tigergraph__install_queryA

Install a GSQL query on a TigerGraph graph, compiling it for faster repeated execution.

Use When: • You have a query you'll run multiple times • You want better query performance • Creating reusable query logic • Building query libraries

Quick Start:

{
  "query_text": "CREATE QUERY getPersonFriends(VERTEX<Person> p) FOR GRAPH MyGraph { ... }"
}

Common Workflow:

  1. Write and test query with 'run_query' first

  2. Once working, install with 'install_query'

  3. Run with 'run_installed_query' (faster)

Tips: • Query text should start with 'CREATE QUERY' • Installation compiles the query for better performance • Can define parameters in query signature • Use 'show_query' to view installed query text

Related Tools: run_installed_query, drop_query, show_query

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_textYesGSQL query text to install.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds that installation compiles the query for speed, requires query_text to start with 'CREATE QUERY', and that installed queries can be viewed via show_query. It doesn't state whether installing overwrites an existing query or what permissions are required, but it discloses the core behavior beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into clear labeled sections—Use When, Quick Start, Common Workflow, Tips, Related Tools—each with a distinct purpose. It is information-dense but every section earns its place; the workflow and tips directly reduce the risk of misuse, and there is no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately complex installation tool, the description covers purpose, usage, workflow, and related tools. It lacks an explicit account of the return value (though there is no output schema), and it doesn't mention how installing affects an existing query of the same name. Overall, the agent has enough context to invoke the tool correctly in the intended workflow.

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

Parameters4/5

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

The input schema already documents all three parameters (query_text, graph_name, profile), so schema coverage is 100%. The description adds a JSON example and the critical tip that query_text should start with 'CREATE QUERY', which goes beyond the schema's generic description and helps the agent form a valid invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Install a GSQL query on a TigerGraph graph, compiling it for faster repeated execution.' It also distinguishes itself from run_query and run_installed_query in the Common Workflow and Related Tools, so an agent can tell what this tool is for without opening other definitions.

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

Usage Guidelines5/5

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

The 'Use When' section lists four concrete triggers (multiple runs, better performance, reusable logic, query libraries), and the Common Workflow explicitly says to test with run_query before installing and run with run_installed_query afterward. This is clear when-to-use guidance and implies the one-off execution case belongs to run_query.

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

tigergraph__is_query_installedA
Read-onlyIdempotent

Check if a query is installed in TigerGraph without running it.

Use When: • Verifying query installation • Before trying to run an installed query • Conditional query logic

Quick Start:

{
  "query_name": "getPersonFriends"
}

Tips: • Returns true/false • Faster than trying to run and catching errors • Use before 'run_installed_query'

Related Tools: install_query, run_installed_query, show_query

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_nameYesName of the query to check.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds behavioral context beyond annotations: it states the return type (true/false) and compares it to running a query ('Faster than trying to run and catching errors'). This adds value without contradicting the annotations. A score of 4 is appropriate since it provides useful supplementary behavior information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence, 'Use When' bullets, a JSON example, and a 'Tips' section. It is concise, front-loaded with the core purpose, and every sentence serves a distinct purpose. The use of formatting (headings, code block) enhances scannability without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple existence check tool with no output schema, the description covers all essential aspects: what it does, when to use it, how to call it with an example, expected return (true/false), and related tools. No critical information is missing for an agent to correctly invoke this tool in a workflow.

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

Parameters4/5

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

Schema description coverage is 100%, with each parameter (profile, graph_name, query_name) already documented in the schema. The description adds a concrete JSON quick-start example, which illustrates the expected input format and reduces ambiguity. While it doesn't redefine parameter semantics, the example is a valuable addition beyond the schema's formal descriptions, justifying a score above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific, actionable statement: 'Check if a query is installed in TigerGraph without running it.' This clearly names the verb, resource, and scope, and distinguishes it from siblings like run_installed_query and install_query. An agent can immediately understand what this tool does and how it differs from related tools.

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

Usage Guidelines5/5

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

The 'Use When' section explicitly lists scenarios: verifying installation, before running a query, and for conditional logic. It also provides a direct recommendation: 'Use before run_installed_query.' Related tools are listed, giving clear routing to alternatives. This is explicit and actionable guidance on when to select this tool.

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

tigergraph__list_connectionsA
Read-onlyIdempotent

List all available TigerGraph connection profiles. Profiles are configured via environment variables: the default profile uses TG_HOST, TG_USERNAME, etc., while named profiles use _TG_HOST, _TG_USERNAME, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare this tool read-only, idempotent, and non-destructive, so the description does not need to restate safety. It adds meaningful behavioral context by explaining the env-var naming convention and the difference between default and named profiles, which helps the agent understand what 'available' means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The primary purpose is front-loaded in the first sentence, and the second sentence provides essential clarifying detail about profile configuration without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-parameter, read-only listing tool, the description is largely complete: it names the resource, the scope ('all available'), and the configuration mechanism. It does not specify the output format, but given the simplicity of the tool and the strong annotations, this is not a significant gap.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The schema is already complete, and the description adds relevant context about the environment-variable naming scheme that effectively defines the available profiles. No parameter documentation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List all available TigerGraph connection profiles.' It uses a specific verb ('list') and a specific resource ('connection profiles'), and the 'all available' wording distinguishes it from more specific sibling tools like show_connection. The additional env-var detail reinforces what is being listed.

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

Usage Guidelines3/5

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

The description gives useful context about how profiles are configured via environment variables, implying the tool is for discovering configured profiles. However, it does not explicitly state when to use this tool compared to siblings such as show_connection or authenticate, nor does it provide any when-not-to-use guidance.

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

tigergraph__list_graphsA
Read-onlyIdempotent

List all graph names in the TigerGraph database. Returns only graph names — no schema, query, or job details.

Use When: • Discovering what graphs exist in the database • First step when connecting to a new TigerGraph instance • Verifying a graph was created or dropped successfully

Quick Start:

{}

(No parameters needed)

Next Steps: • Use 'show_graph_details' to see everything under a graph (schema, queries, jobs) • Use 'get_graph_schema' to get just the schema (vertex/edge types)

Related Tools: show_graph_details, get_graph_schema, create_graph

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral detail beyond annotations by restricting the return value to graph names only and explicitly excluding schema, query, and job details, which is useful for an agent deciding whether this tool satisfies a request.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose, use cases, quick start, and next steps. Each section earns its place, and the core purpose statement is front-loaded in the first sentence. No filler or redundant explanation exists beyond useful routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with zero required parameters, the description is fully sufficient. It explains what it returns, when to use it, how to call it, and points to related tools for broader or deeper information. There is no output schema, but the description explicitly states the output scope, so nothing critical is missing.

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

Parameters4/5

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

The input schema already documents the optional profile parameter at 100% coverage, providing a solid baseline. The description adds value by emphasizing that no parameters are needed and providing a concrete Quick Start with an empty JSON object, which reassures the agent that a zero-argument call is valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List all graph names in the TigerGraph database.' It further distinguishes itself by explicitly saying it returns 'only graph names — no schema, query, or job details,' which clearly separates it from siblings like get_graph_schema and show_graph_details.

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

Usage Guidelines5/5

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

The 'Use When' section provides explicit scenarios: discovering existing graphs, first step on a new instance, and verifying creation/dropping. 'Next Steps' and 'Related Tools' explicitly route the agent to show_graph_details and get_graph_schema for more detailed information, making the alternative selection clear.

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

tigergraph__list_vector_attributesA
Read-onlyIdempotent

Get vector attribute information (name, dimension, metric) for vertex types in a graph. Parses the output of the GSQL 'LS' command. Optionally filter by vertex type.

Related Tools: add_vector_attribute, drop_vector_attribute, get_vector_index_status

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeNoFilter by vertex type. If not provided, returns vector attributes for all vertex types.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it parses the GSQL 'LS' command, a useful implementation detail. However, it does not describe return structure or any other behavioral nuances, so it adds only marginal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus a related-tools line, with the core purpose front-loaded. It is efficient and avoids unnecessary wording. The related-tools line is brief and useful for navigation, though it is not strictly part of the tool's behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with no output schema, the description adequately explains what is returned (vector attribute name, dimension, metric) and the optional filtering. The schema covers parameter defaults. It is complete enough for an agent to call it correctly, though it could mention error conditions or graph requirements.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description's mention of 'Optionally filter by vertex type' only reiterates the vertex_type schema description and adds no new meaning. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('vector attribute information'), and the fields returned (name, dimension, metric). It also mentions it parses the GSQL 'LS' command, distinguishing it from sibling tools like add_vector_attribute and get_vector_index_status. The purpose is unambiguous and easily differentiated from related tools.

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

Usage Guidelines3/5

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

The description lists related tools (add_vector_attribute, drop_vector_attribute, get_vector_index_status) but does not explicitly state when to use this tool versus those alternatives. The context implies this is for inspection only, but no explicit when-to-use or when-not-to-use guidance is provided.

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

tigergraph__load_vectors_from_csvA

Bulk-load vectors from a CSV/delimited file into a vertex type's vector attribute. Creates a GSQL loading job, runs it with the file, then drops the job.

File format: Each row has a vertex ID and a vector. Fields are separated by field_separator (default |). Vector elements are separated by element_separator (default ,).

Example file (field_separator='|', element_separator=','):

vertex1|0.1,0.2,0.3
vertex2|0.4,0.5,0.6

Prerequisites:

  1. Vertex type must already exist

  2. Vector attribute must already be added (use 'add_vector_attribute')

  3. File must exist on the local machine (it is uploaded to TigerGraph via REST)

Related Tools: add_vector_attribute, load_vectors_from_json (JSON Lines alternative), upsert_vectors (REST API for in-memory data), get_vector_index_status (check indexing after load)

ParametersJSON Schema
NameRequiredDescriptionDefault
headerNoWhether the file has a header row. Default: false.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
file_pathYesAbsolute path to the CSV/delimited data file on the local machine (uploaded to TigerGraph via REST). Each row has a vertex ID and a vector column.
id_columnNoColumn for vertex ID: integer index (0-based) or header name. Default: 0 (first column).
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeYesTarget vertex type that has the vector attribute.
vector_columnNoColumn containing the vector data: integer index (0-based) or header name. Default: 1 (second column).
field_separatorNoSeparator between fields (columns) in the file. Default: '|'.|
vector_attributeYesName of the vector attribute to load into.
element_separatorNoSeparator between vector elements within the vector column. Default: ','.,

TDQS

A4.6/5.0
Behavior4/5

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

The description reveals key behavioral details beyond the annotations: it creates and then drops a GSQL loading job, uploads the local file via REST, and requires the vertex type and vector attribute to pre-exist. Annotations only indicate non-read-only/non-destructive behavior, so this additional context meaningfully helps the agent anticipate side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections for purpose, file format, example, prerequisites, and related tools. It is somewhat long but each section serves a purpose for a 10-parameter tool, and the critical details are front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description provides all necessary context: prerequisites, file format with an example, the upload mechanism, and related follow-up tools. There is no output schema, but the description covers the operational behavior well enough for an agent to invoke the tool correctly.

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

Parameters4/5

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

The input schema already documents all parameters with 100% coverage, establishing a baseline of 3. The description adds value by giving a concrete file-format example, explaining the default separators, and clarifying that each row contains a vertex ID plus a vector column. This goes beyond the schema's field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Bulk-load vectors from a CSV/delimited file into a vertex type's vector attribute.' It also clearly distinguishes this from related tools by naming load_vectors_from_json and upsert_vectors as alternatives. The scope is unambiguous and the lifecycle (create, run, drop loading job) is explicit.

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

Usage Guidelines5/5

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

The description explicitly lists prerequisites and related tools, telling agents to use add_vector_attribute first, load_vectors_from_json for JSON Lines input, upsert_vectors for in-memory data, and get_vector_index_status after loading. This gives clear when-to-use and when-not-to-use guidance without relying on inference.

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

tigergraph__load_vectors_from_jsonA

Bulk-load vectors from a JSON Lines (.jsonl) file into a vertex type's vector attribute. Creates a GSQL loading job with JSON_FILE="true", runs it with the file, then drops the job.

File format: Each line is a JSON object with an ID field and a vector field. The vector is stored as a comma-separated string (not a JSON array).

Example file (id_key='id', vector_key='embedding'):

{"id": "vertex1", "embedding": "0.1,0.2,0.3"}
{"id": "vertex2", "embedding": "0.4,0.5,0.6"}

Prerequisites:

  1. Vertex type must already exist

  2. Vector attribute must already be added (use 'add_vector_attribute')

  3. File must exist on the local machine (it is uploaded to TigerGraph via REST)

Related Tools: add_vector_attribute, load_vectors_from_csv (CSV alternative), upsert_vectors (REST API for in-memory data), get_vector_index_status (check indexing after load)

ParametersJSON Schema
NameRequiredDescriptionDefault
id_keyNoJSON key for the vertex ID. Default: 'id'.id
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
file_pathYesAbsolute path to the JSON Lines (.jsonl) file on the local machine (uploaded to TigerGraph via REST). Each line is a JSON object with an ID field and a vector field.
graph_nameNoName of the graph. If not provided, uses default connection.
vector_keyNoJSON key for the vector data (stored as a comma-separated string). Default: 'vector'.vector
vertex_typeYesTarget vertex type that has the vector attribute.
vector_attributeYesName of the vector attribute to load into.
element_separatorNoSeparator between vector elements within the vector string value. Default: ','.,

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (non-read-only, non-idempotent, non-destructive), the description discloses the full lifecycle: creates a GSQL loading job, runs it, then drops it. It also warns that the file is uploaded to TigerGraph via REST and that vectors must be comma-separated strings, not JSON arrays.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence states the core action, and the rest is organized under File format, Example, Prerequisites, and Related Tools. No filler; it is detailed but still scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers format, prerequisites, process, and alternatives. It does not state what response or status is returned, but it is otherwise complete for a complex multi-parameter tool, and the related get_vector_index_status suggests a post-check.

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

Parameters4/5

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

Input schema already covers 100% of parameters with descriptions, so the baseline is 3. The description adds real value by showing a concrete file example with id_key and vector_key, clarifying the comma-separated string representation, and explaining element_separator usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the exact operation: bulk-load vectors from a .jsonl file into a vector attribute, including the mechanism (create, run, drop a GSQL load job). It specifically says JSON Lines, which distinguishes it from the CSV sibling.

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

Usage Guidelines5/5

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

Prerequisites are explicit (vertex type, vector attribute, local file), and Related Tools names the CSV alternative, the in-memory REST API path, and the post-load index check. The description also calls out the id_key/vector_key convention with an example.

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

tigergraph__preview_sample_dataB
Read-onlyIdempotent

Preview sample data from a file in a data source.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
num_rowsNoNumber of sample rows to preview.
file_pathYesFor an object store source, the path to the file within the data source (e.g. 's3a://bucket/data.csv'). For a warehouse source such as Snowflake, the SQL query to sample instead (e.g. 'SELECT * FROM <db>.<schema>.<table>').
graph_nameNoName of the graph context. If not provided, uses default connection.
data_source_nameYesName of the data source.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description's 'Preview' is consistent with these. The description adds no additional behavioral context beyond annotations, such as output format, error handling, or side effects. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the action ('Preview sample data'). It contains no unnecessary words and is appropriately concise for a simple read-only operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool, annotations covering safety, and the schema documenting all parameters, the description is sufficient. It could mention the return of sample rows or the distinction between file and query, but those are implied by the schema and tool name. The description adequately conveys the core function.

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

Parameters3/5

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

The input schema has 100% parameter description coverage, including detailed explanations for file_path (distinguishing object store vs. warehouse) and other fields. The tool description does not add any parameter semantics beyond what the schema already provides, so it relies on the schema for parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (preview) and resource (sample data from a file in a data source). It is clear and distinguishes from other tools by its unique focus on sampling, though it does not explicitly name an alternative. It is more specific than a generic 'preview' and fits the tool's purpose.

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

Usage Guidelines2/5

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 only states what it does, leaving the agent to infer that it is for inspecting data before loading. There are no exclusions, prerequisites, or mentions of alternative tools.

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

tigergraph__run_installed_queryA
Destructive

Run an installed GSQL query on a TigerGraph graph with parameters. Faster than interpreted queries for repeated execution.

Use When: • Running pre-installed, compiled queries • Queries that are executed frequently • Performance-critical operations • Parameterized queries with different inputs

Quick Start:

{
  "query_name": "getPersonFriends",
  "params": {"personId": "user123", "maxHops": 2}
}

Common Workflow:

  1. Install query once with 'install_query'

  2. Run multiple times with 'run_installed_query' and different params

  3. Much faster than 'run_query' for repeated use

Tips: • Queries must be installed first with 'install_query' • Use 'is_query_installed' to check if query exists • Provide params as dictionary matching query signature • Faster than interpreted queries

Related Tools: install_query, is_query_installed, show_query

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_nameYesName of the installed query.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already provide destructiveHint true, so the description doesn't need to repeat that. It adds useful context: performance benefits, installation prerequisite, and the workflow of installing once and running multiple times. It doesn't mention side effects, but annotations cover that. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (Use When, Quick Start, Workflow, Tips), but it repeats the performance claim twice and is somewhat lengthy. Still, every section adds value, and the key purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers when to use, prerequisites, and workflow, but lacks any mention of the return value or response format. Since there is no output schema, the agent has to infer that the tool returns query results. It also doesn't discuss error handling, though that might be less critical. Overall, it's mostly complete but missing the output expectation.

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

Parameters4/5

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

Schema descriptions are already detailed for profile and graph_name, but params description is minimal. The description adds clarity by stating 'params as dictionary matching query signature' and provides a concrete JSON example, which helps the agent understand the expected structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Run' and the resource 'installed GSQL query', and distinguishes itself from run_query by emphasizing 'installed' and 'faster than interpreted'. It also lists related tools, making its role clear.

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

Usage Guidelines5/5

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

Explicit 'Use When' section lists conditions (pre-installed, frequent, performance-critical, parameterized) and contrasts with run_query for repeated use. The workflow explicitly says to install first and use is_query_installed to check.

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

tigergraph__run_loading_job_with_dataB

Execute a loading job with inline data string. The data is posted to TigerGraph and loaded according to the specified loading job definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
eolNoEnd-of-line character. Default is '\n'. Supports '\r\n'.
dataYesThe data string to load (CSV, JSON, etc.). Example: 'user1,Alice\nuser2,Bob'
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
timeoutNoTimeout in milliseconds. Set to 0 for system-wide timeout.
file_tagYesThe name of file variable in the loading job (DEFINE FILENAME <fileTag>).
job_nameYesThe name of the loading job to run.
separatorNoData value separator. Default is comma. For JSON data, don't specify.
graph_nameNoName of the graph. If not provided, uses default connection.
size_limitNoMaximum size for input data in bytes (default 128MB).

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already signal that this is not read-only and not idempotent. The description adds that data is 'posted to TigerGraph and loaded according to the specified loading job definition,' which conveys the write-like load behavior without contradicting annotations. It does not detail side effects like upsert semantics or partial-failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with the core action front-loaded. The second sentence is somewhat redundant but adds the useful framing that data is posted and interpreted by the loading job definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter tool, the description is adequate but thin: it explains the action and relies on the rich schema for parameter details. It does not mention return values or status reporting, though no output schema exists, and it leaves usage differentiation from the file variant implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all nine parameters. The description adds little beyond naming the inline-data mechanism, which is a minor complement to the `data` parameter and the loading-job context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: execute a loading job with an inline data string. The inline-data mode distinguishes it from the sibling `run_loading_job_with_file`, though it does not explicitly name that alternative.

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

Usage Guidelines3/5

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

The phrase 'with inline data string' implies this tool is for cases where data is passed directly rather than read from a file. However, it does not explicitly state when to prefer this over `run_loading_job_with_file` or other data-source tools, so guidance is only implicit.

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

tigergraph__run_loading_job_with_fileC

Execute a loading job with a data file. The file is uploaded to TigerGraph and loaded according to the specified loading job definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
eolNoEnd-of-line character. Default is '\n'. Supports '\r\n'.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
timeoutNoTimeout in milliseconds. Set to 0 for system-wide timeout.
file_tagYesThe name of file variable in the loading job (DEFINE FILENAME <fileTag>).
job_nameYesThe name of the loading job to run.
file_pathYesAbsolute path to the data file to load. Example: '/home/user/data/persons.csv'
separatorNoData value separator. Default is comma. For JSON data, don't specify.
graph_nameNoName of the graph. If not provided, uses default connection.
size_limitNoMaximum size for input file in bytes (default 128MB).

TDQS

C2.9/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, implying this is a mutating operation. The description only says the file is uploaded and loaded, but doesn't disclose side effects, error behavior, or that the loading job must be pre-defined. It doesn't add meaningful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficient and to the point. It front-loads the action and resource. No wasted words, but it's arguably too terse for a tool of this complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 9 parameters and no output schema. The description doesn't explain return values, error handling, or how the loading job interacts with existing data. It doesn't mention that the job must already be created (via create_loading_job). For an agent, this is incomplete for safe invocation.

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

Parameters3/5

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

The input schema has 100% description coverage, so all parameters are documented in the schema. The tool description adds no additional parameter semantics; it doesn't elaborate on file_path, job_name, or any optional parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Execute a loading job') and the resource ('with a data file'), and mentions the upload. It doesn't explicitly name the sibling 'run_loading_job_with_data' to differentiate, but the phrase 'with a data file' implies the distinction. It's specific enough for an agent to understand the core purpose.

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

Usage Guidelines2/5

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 the sibling 'run_loading_job_with_data' or other loading job tools. It doesn't mention prerequisites like the loading job must already exist, or the file must be accessible. No exclusions or alternatives are given.

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

tigergraph__run_queryA
Destructive

Run an interpreted query on a TigerGraph graph. Supports both GSQL and openCypher query languages. Use this for ad-hoc queries without needing to install them first.

Use When: • Running one-time or ad-hoc queries • Testing queries before installation • Simple data retrieval operations • Prototyping and exploration

Quick Start (GSQL):

{
  "query_text": "INTERPRET QUERY () FOR GRAPH MyGraph { SELECT v FROM Person:v LIMIT 5; PRINT v; }"
}

Quick Start (Cypher):

{
  "query_text": "INTERPRET OPENCYPHER QUERY () FOR GRAPH MyGraph { MATCH (n:Person) RETURN n LIMIT 5 }"
}

Common Workflow:

  1. Call 'show_graph_details' to understand the schema

  2. Write your query using vertex/edge types from schema

  3. Run with 'run_query' to test

  4. For repeated use, install with 'install_query'

Tips: • Query type auto-detected (GSQL vs Cypher) • For frequent queries, use 'install_query' + 'run_installed_query' for better performance • Always include 'FOR GRAPH' clause • Use LIMIT to avoid retrieving too much data

Warning: Syntax Notes: • GSQL: INTERPRET QUERY () FOR GRAPH <name> { <statements> } • Cypher: INTERPRET OPENCYPHER QUERY () FOR GRAPH <name> { <cypher> }

Related Tools: run_installed_query, install_query, get_neighbors

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_textYesQuery text to interpret and run. Supports both GSQL and openCypher queries. For GSQL: use 'INTERPRET QUERY () FOR GRAPH <graph> { <gsql_statements> }'. For openCypher: use 'INTERPRET OPENCYPHER QUERY () FOR GRAPH <graph> { <cypher_statements> }'. The query type is auto-detected based on the INTERPRET keyword used. Example (GSQL): `INTERPRET QUERY () FOR GRAPH MyGraph { SELECT v FROM Person:v }`Example (Cypher): `INTERPRET OPENCYPHER QUERY () FOR GRAPH MyGraph { MATCH (n) RETURN n LIMIT 5 }`

TDQS

A4.3/5.0
Behavior4/5

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

Annotations carry destructiveHint=true, and the description adds genuinely useful behavioral context beyond that: query type auto-detection (GSQL vs Cypher), the mandatory 'FOR GRAPH' clause, and a LIMIT tip to cap result size. Minor gap: the 'Simple data retrieval operations' bullet mildly underplays that interpreted queries can also mutate data, but this does not contradict the destructiveHint annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with purpose, Use When, Quick Start, Workflow, Tips, and Related Tools sections; core purpose is front-loaded. Slightly long, and the Syntax Notes section partially duplicates the schema's query_text examples, but the length is justified for a tool supporting two query languages with distinct syntax.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Highly complete for a complex two-language query executor: it provides syntax templates, workflow guidance, performance guidance, and sibling routing. The main gap is that no output schema exists and the description never hints at what the result looks like; otherwise an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The schema already documents profile, graph_name, and query_text with syntax templates and examples for both languages. The description's Quick Start payloads reinforce but do not add semantically new parameter meaning beyond the schema, so it stays at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Run an interpreted query on a TigerGraph graph.' It names both supported languages (GSQL and openCypher) and immediately differentiates from siblings by stating 'without needing to install them first,' which cleanly separates it from run_installed_query. The Related Tools section reinforces the distinction.

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

Usage Guidelines5/5

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

Contains an explicit 'Use When' section listing concrete scenarios (ad-hoc, testing before install, prototyping), plus a 'For frequent queries, use install_query + run_installed_query for better performance' exclusion that routes the agent to alternatives. The Common Workflow provides a step-by-step decision path anchored on a sibling (show_graph_details).

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

tigergraph__search_top_k_similarityA
Read-onlyIdempotent

Perform vector similarity search using TigerGraph's vectorSearch() function. Returns top-K most similar vertices with distance scores.

IMPORTANT: The query_vector dimensions MUST match the dimension defined in the vector attribute (e.g., if the attribute was created with DIMENSION=1536, the query vector must have exactly 1536 elements). A dimension mismatch will cause the search to fail or return incorrect results.

Use list_vector_attributes to check the expected dimension before searching.

Related Tools: list_vector_attributes (check dimension), fetch_vector (retrieve vector values), get_vector_index_status (check index readiness)

ParametersJSON Schema
NameRequiredDescriptionDefault
efNoExploration factor for HNSW algorithm. Higher = more accurate but slower.
top_kNoNumber of top similar results to return.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeYesType of vertices to search.
query_vectorYesQuery vector for similarity search.
return_vectorsNoWhether to return the vector values (can be large).
vector_attributeYesName of the vector attribute to search.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description doesn't need to restate safety. It adds valuable behavioral context beyond annotations: the critical warning that 'a dimension mismatch will cause the search to fail or return incorrect results,' and the return format of 'top-K most similar vertices with distance scores.' This is substantive, non-redundant disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently organized: main purpose first, then a bolded IMPORTANT warning, a concrete action step, and a compact related-tools list. Every sentence earns its place, and the critical constraint is front-loaded so it is unlikely to be missed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description steps up by stating the return format (top-K vertices with distance scores). It also discloses the primary failure mode (dimension mismatch), directs the agent to a preflight check, and references index-readiness and vector-retrieval tools. For a read-only search tool whose safety profile is fully covered by annotations, nothing essential is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so each parameter already has meaningful documentation. The description adds value by elaborating on query_vector semantics: the dimension must exactly match the vector attribute's dimension, with a concrete example (DIMENSION=1536). This goes beyond the schema's generic 'Query vector for similarity search' and compensates for the most error-prone parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Perform vector similarity search using TigerGraph's vectorSearch() function,' and clearly states the output: 'Returns top-K most similar vertices with distance scores.' This distinguishes it from sibling vector tools like fetch_vector (retrieve specific vectors) and list_vector_attributes (check dimensions), leaving no ambiguity about the tool's role.

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

Usage Guidelines4/5

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

The description provides explicit pre-search guidance: 'Use list_vector_attributes to check the expected dimension before searching.' It also lists related tools with their purposes, giving context for when to use alternatives (e.g., get_vector_index_status to check index readiness). It lacks an explicit 'when not to use this' statement, but the guidance is clear enough for an agent to act correctly.

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

tigergraph__show_connectionA
Read-onlyIdempotent

Show non-sensitive connection details for a specific profile (host, username, graph name, ports). Never reveals passwords or tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name to inspect. If not provided, shows the active profile (from TG_PROFILE env var or 'default').

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description need not repeat that. It adds the valuable behavioral note that it 'Never reveals passwords or tokens,' which goes beyond the annotations and informs the agent about data safety. No contradiction with annotations; it complements them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the action and scope, then adds the security caveat. There is no redundant wording, and every phrase earns its place. It is highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter, an output schema is unnecessary, and annotations already cover safety. The description fully informs the agent about what is returned (non-sensitive details) and what is not, making it complete for correct invocation.

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

Parameters3/5

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

The schema description for the profile parameter is comprehensive (covers default behavior and environment variable), giving 100% coverage. The tool description adds no extra parameter meaning beyond restating 'specific profile,' so it does not exceed the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Show), the resource (non-sensitive connection details), and the scope (a specific profile). It also lists the included fields (host, username, graph name, ports) and explicitly excludes sensitive data. However, it does not explicitly contrast with sibling tools like list_connections, which might list all profiles, so it lacks explicit sibling differentiation.

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

Usage Guidelines3/5

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

The phrase 'for a specific profile' implies when to use this tool (when you want details of one profile), but it does not mention alternatives or state when not to use it. There is no explicit guidance on choosing between this and list_connections or authenticate, so the usage context is implied but not fully explicit.

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

tigergraph__show_graph_detailsA
Read-onlyIdempotent

Show details of a specific graph. By default shows everything (schema, queries, loading jobs, data sources). Use 'detail_type' to show only a specific category.

Use When: • You need a full picture of a graph (schema + queries + jobs) • Starting work with a graph (call this first!) • Checking which queries or loading jobs are installed • Debugging schema or job issues

Quick Start:

{ "graph_name": "SocialNetwork" }

(Shows everything under the graph)

Filter by category:

{ "graph_name": "SocialNetwork", "detail_type": "query" }

Options: 'schema', 'query', 'loading_job', 'data_source'

Tips: • No detail_type → shows all (GSQL LS output) • For structured JSON schema, use 'get_graph_schema' instead • For just graph names, use 'list_graphs' • For vector attributes, use 'list_vector_attributes' instead

Related Tools: get_graph_schema (schema JSON), list_graphs (names only), list_vector_attributes (vector attribute details)

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
detail_typeNoWhich details to show. Options: 'schema' (vertex/edge types), 'query' (installed queries), 'loading_job' (loading jobs), 'data_source' (data sources). If not provided, shows everything (equivalent to GSQL LS).

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe, read-only operation. The description adds valuable behavioral context: that omitting 'detail_type' shows everything and that it's roughly equivalent to GSQL 'LS' output. However, it doesn't dwell on return format, but the annotation coverage is strong, so this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear bullet points, JSON examples, and a quick-start section. Very easy to scan and understand. Slightly long (for a description), but each line earns its place by conveying use cases, alternatives, and examples. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A read-only, parameterless-required tool with a rich schema (3 parameters, all optional, well-documented) and no output schema. The description provides all necessary info: what it returns, how to filter, alternatives, and JSON examples. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds value by providing example JSON payloads and enumerating the 'detail_type' options with their meaning (e.g., 'schema' shows vertex/edge types). It also clarifies the behavior of omitting the parameter, surpassing what the schema alone offers. This goes beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it 'shows details of a specific graph' with a specific verb and resource. It explicitly differentiates from siblings like 'get_graph_schema' (structured JSON) and 'list_graphs' (names only), and the 'detail_type' parameter's purpose is well explained.

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

Usage Guidelines5/5

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

Provides explicit 'Use When' bullet points (e.g., 'Starting work with a graph (call this first!)'), lists specific alternative tools and when to use them instead, and explains the behavior of omitting 'detail_type'. This is exemplary guidance that directly helps an agent choose correctly.

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

tigergraph__show_queryA
Read-onlyIdempotent

Show the GSQL text of an installed query.

Use When: • Reviewing what an installed query does • Debugging query behavior • Understanding existing queries • Documenting installed queries

Quick Start:

{
  "query_name": "getPersonFriends"
}

Tips: • Returns the full GSQL query text • Query must be installed first • Use 'is_query_installed' to check existence

Related Tools: install_query, get_query_metadata, is_query_installed

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_nameYesName of the query to show.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it returns the full GSQL query text, requires the query to be installed first, and suggests checking existence. This goes beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headers: purpose, Use When, Quick Start, Tips, and Related Tools. The main purpose is front-loaded, and each section adds distinct value without redundancy. It's appropriately sized and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (show query text) and the presence of safety annotations, the description covers the essential aspects: purpose, usage scenarios, prerequisites (installed query), and return value (full GSQL text). It lacks details on error handling or exact output formatting, but these are minor for a read-only operation. No output schema exists, so the description adequately explains the return.

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

Parameters3/5

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

Schema coverage is 100% – all three parameters have descriptions in the schema, so the baseline is 3. The description provides a quick start example for query_name but doesn't enrich understanding of profile or graph_name beyond what the schema already states. It adds marginal value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Show the GSQL text of an installed query.' This is a specific verb and resource, and it distinguishes from siblings like run_query (executing) and install_query (installing). The 'Use When' section reinforces the purpose with concrete scenarios.

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

Usage Guidelines4/5

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

The 'Use When' section provides explicit scenarios for using this tool, and the tip 'Use is_query_installed to check existence' gives actionable guidance. It lists related tools (install_query, get_query_metadata, is_query_installed) but doesn't explicitly contrast when to use them instead. This is clear but slightly lacks exclusionary guidance.

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

tigergraph__update_data_sourceC
Idempotent

Update an existing data source configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesUpdated configuration for the data source.
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
data_source_nameYesName of the data source to update.
data_source_typeNoType of the data source. Optional; when given, the configuration is validated against that type before the update is sent.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is known. The description adds no behavioral context: it does not state whether the update merges or replaces the configuration, whether it validates against the data source type, or what happens to unspecified fields. With no additional disclosure, the description fails to enrich the agent's understanding beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is immediately clear. It is front-loaded with the action and object, and there is no extraneous text. While it is minimal, it achieves the necessary clarity without being verbose, so it earns a strong score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema and a nested configuration object, the description is severely lacking in contextual detail. It does not explain what 'configuration' means, what fields are expected, whether the update is partial or full, or any prerequisites (e.g., the data source must exist). The schema provides generic parameter descriptions, but the description fails to give the agent enough context to safely invoke the update operation. This is incomplete for a tool of this complexity.

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

Parameters3/5

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

The schema covers all four parameters with descriptions (100% coverage), so the baseline is 3. The tool description adds no parameter-specific meaning; it only repeats 'data source configuration' without elaborating on the 'config' object's structure or the optional 'profile'/'data_source_type' fields. Since the schema already provides the basic semantics, the description does not need to compensate, but it also does not enhance them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Update') and resource ('data source configuration'), making the tool's purpose unambiguous. However, it does not differentiate from sibling tools like create_data_source or drop_data_source, so it relies on the verb to distinguish. It is specific enough for an agent to understand what it does.

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

Usage Guidelines1/5

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 does not mention that the data source must already exist, nor does it contrast with create_data_source or drop_data_source. The schema hints that data_source_type is optional for validation, but the description itself gives no usage context, leaving the agent to infer the appropriate scenario.

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

tigergraph__update_query_descriptionA
Idempotent

Set a human-readable description for an installed query and, optionally, descriptions for each of its parameters. Requires TigerGraph 4.0+.

Use When: • Documenting what an installed query does and what its parameters mean • Making queries self-describing for agents and other consumers

Quick Start:

{
  "query_name": "getPersonFriends",
  "query_description": "Return the friends of a given person.",
  "parameter_descriptions": {"personId": "ID of the person to look up"}
}

Tips: • Query must be installed first • Omit 'parameter_descriptions' to set only the query-level description • Read it back with 'get_query_description'

Related Tools: get_query_description, get_query_metadata, show_query

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
graph_nameNoName of the graph. If not provided, uses default connection.
query_nameYesName of the installed query to describe.
query_descriptionYesHuman-readable description of what the query does.
parameter_descriptionsNoPer-parameter descriptions, keyed by parameter name (e.g. {"personId": "The id of the person to look up"}).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds the TigerGraph 4.0+ version requirement and the prerequisite that the query must be installed, which is useful context. It doesn't contradict annotations and adds value beyond them, though it could detail overwrite behavior or error handling more.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headers (Use When, Quick Start, Tips, Related Tools) and front-loaded with the core action. It is somewhat lengthy but each section serves a purpose, with no redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with no output schema, the description covers prerequisites, optional parameters, and related read-back tool. An agent has everything needed to invoke it correctly.

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

Parameters3/5

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

The schema covers all parameters with descriptions (100% coverage). The description provides a Quick Start example and notes that parameter_descriptions is optional, but it doesn't add significant semantic depth beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Set') and resource ('a human-readable description for an installed query') and differentiates from siblings by focusing on the write operation vs. get_query_description and show_query. The purpose is unambiguous and specific.

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

Usage Guidelines5/5

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

It includes a 'Use When' section with explicit conditions (documenting queries, making them self-describing) and lists related tools for context. It also provides tips about prerequisites (query must be installed) and how to read back the result, making usage guidance complete.

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

tigergraph__update_schemaA
Destructive

Apply incremental schema changes: add/drop vertex types, edge types, or individual attributes. Supports both local (graph-scoped) and global schema changes.

Use When:

  • Adding new vertex or edge types to an existing graph (local)

  • Creating global vertex/edge types shared across graphs (global)

  • Dropping vertex or edge types that are no longer needed

  • Adding or removing attributes on existing vertex types

Local schema change (add a vertex type to a graph):

{
  "graph_name": "MyGraph",
  "add_vertex_types": [{"name": "Product", "attributes": [{"name": "price", "type": "FLOAT"}]}]
}

Global schema change (omit graph_name):

{
  "add_vertex_types": [{"name": "SharedVertex", "attributes": [{"name": "val", "type": "INT"}]}]
}

Tips:

  • Drop edges referencing a vertex type before dropping the vertex type

  • Adding attributes with defaults avoids null values on existing data

  • Use 'get_graph_schema' to inspect the current schema first

  • Omit 'graph_name' to apply changes at the global level

Related Tools: create_graph, get_graph_schema, show_graph_details

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. If not provided, uses TG_PROFILE env var or 'default'.
graph_nameNoName of the graph to modify. If not provided, runs a global schema change.
add_edge_typesNoEdge type definitions to add (same format as create_graph).
drop_edge_typesNoNames of edge types to drop.
add_vertex_typesNoVertex type definitions to add (same format as create_graph).
drop_vertex_typesNoNames of vertex types to drop.
add_vertex_attributesNoMap of vertex type name to list of attributes to add. E.g. {"Person": [{"name": "score", "type": "FLOAT"}]}
drop_vertex_attributesNoMap of vertex type name to list of attribute names to drop. E.g. {"Person": ["old_attr"]}

TDQS

A4.5/5.0
Behavior5/5

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

The destructiveHint annotation already flags mutating behavior, and the description adds meaningful detail: warnings to drop referencing edges before vertex types, note that defaults avoid nulls on existing data, and clarification that omitting graph_name switches from local to global scope, affecting blast radius.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The markdown structure (Use When, examples, Tips, Related Tools) makes it scannable and the summary is front-loaded. Minor redundancy exists: local/global scope is stated in the intro, Use When bullets, and Tips, so not every sentence is strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a schema-mutation tool with 8 parameters and no output schema, this description covers operation types, target scope, ordering constraints, and safe pre-checks, and names related tools. It does not describe response/return behavior or explicitly state whether multiple change types can be combined, but the schema and annotations cover most remaining essentials.

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

Parameters4/5

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

The input schema already documents all 8 parameters with 100% coverage, so the baseline is 3. The description adds JSON examples for local vs global add_vertex_types calls and an explicit explanation of graph_name omission semantics, which illustrates what the schema states without example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the exact action ('Apply incremental schema changes') and resources ('vertex types, edge types, or individual attributes'), and specifies local vs global scope. This is specific enough to distinguish it from create_graph/drop_graph before looking at parameters.

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

Usage Guidelines4/5

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

The 'Use When' section gives concrete scenarios: adding to an existing graph, creating global types, dropping types, and altering attributes. The 'Related Tools' list names alternatives, but the description does not explicitly say 'for new graph creation use create_graph', so it lacks an explicit when-not rule.

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

tigergraph__upsert_vectorsA
Idempotent

Upsert multiple vertices with vector data using the REST Upsert API. Vectors must be provided inline as lists of floats (i.e., already in memory). To bulk-load vectors from a local file, use 'load_vectors_from_csv' or 'load_vectors_from_json' instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoConnection profile name. Omit to use the active default profile. Use 'list_connections' to see available profiles.
vectorsYesList of vectors to upsert, each with vertex_id, vector, and optional attributes.
graph_nameNoName of the graph. If not provided, uses default connection.
vertex_typeYesType of the vertices.
vector_attributeYesName of the vector attribute.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide the safety profile (idempotentHint true, destructiveHint false, readOnlyHint false). The description adds the inline-vector constraint and the REST API context, which are genuinely useful behavioral details beyond the annotations. It does not discuss error or response behavior, but annotations cover the core safety aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence states the action and API, the second states a key constraint and points to alternatives. Everything earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with the fully-described schema and safety annotations, gives an agent everything needed to call the tool correctly: the purpose, the data format requirement, and the routing to alternative tools. No output schema exists, so explaining return values is unnecessary.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters are described in the schema. The description reiterates that vectors must be inline lists of floats, which is a small addition, but it does not introduce any new parameter-level detail beyond what the schema already provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Upsert), a specific resource (vertices with vector data), and the mechanism (REST Upsert API). It also names the file-based alternatives (load_vectors_from_csv/load_vectors_from_json), making it easy for an agent to distinguish this tool from its siblings.

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

Usage Guidelines5/5

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

Explicitly states the condition for using this tool: vectors must already be in memory as lists of floats. It then routes the agent to the alternative tools for file-based bulk loading, leaving no ambiguity about when to choose this over those.

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

tigergraph__validate_schema_namesA
Read-onlyIdempotent

Validate vertex type names, edge type names, attribute names, and the graph name against GSQL reserved keywords and naming conflict rules.

Use When:

  • Before calling 'create_graph' to catch naming problems early

  • Checking if user-supplied names conflict with GSQL keywords

  • Validating that vertex/edge type names don't collide with their attribute names

Quick Start:

{
  "graph_name": "MyGraph",
  "vertex_types": [
    {"name": "SELECT", "attributes": [{"name": "count", "type": "INT"}]}
  ]
}

(Returns warnings for 'SELECT' and 'count' as reserved keywords)

Related Tools: create_graph, get_graph_schema

ParametersJSON Schema
NameRequiredDescriptionDefault
edge_typesNoEdge type definitions to validate (same format as create_graph).
graph_nameNoGraph name to validate.
vertex_typesNoVertex type definitions to validate (same format as create_graph).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so no contradiction. The description adds that it returns warnings (via example) and focuses on validation without side effects, which complements the annotations well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a main statement, Use When, Quick Start, and Related Tools. It is front-loaded, every section earns its place, and the example is compact and illustrative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only validation tool with optional parameters, all input semantics are covered by schema plus description. It explains when to use it, how to format inputs, and what to expect (warnings). No missing critical info for correct invocation.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all three parameters. The description adds a Quick Start JSON example and notes that vertex_types/edge_types follow the same format as create_graph, giving agents concrete usage guidance beyond schema field names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Validate'), a precise resource (vertex/edge/attribute names and graph name), and the rule set (GSQL reserved keywords and naming conflicts). It is immediately distinguishable from the sibling create_graph and get_graph_schema tools.

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

Usage Guidelines4/5

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

The 'Use When' section lists concrete scenarios (before create_graph, keyword conflict checks, attribute-name collisions). It could explicitly state when not to use it, but the context is clear enough to route an agent correctly.

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. 69 tool updatesv1.0.2
    • First observedtigergraph__add_edge
    • First observedtigergraph__add_edges
    • First observedtigergraph__add_node
    • First observedtigergraph__add_nodes
    • First observedtigergraph__add_vector_attribute
    • First observedtigergraph__authenticate
    • First observedtigergraph__clear_graph_data
    • First observedtigergraph__create_data_source
    • First observedtigergraph__create_graph
    • First observedtigergraph__create_loading_job
    • First observedtigergraph__delete_edge
    • First observedtigergraph__delete_edges
    • First observedtigergraph__delete_node
    • First observedtigergraph__delete_nodes
    • First observedtigergraph__discover_tools
    • First observedtigergraph__drop_all_data_sources
    • First observedtigergraph__drop_data_source
    • First observedtigergraph__drop_graph
    • First observedtigergraph__drop_loading_job
    • First observedtigergraph__drop_query
    • First observedtigergraph__drop_vector_attribute
    • First observedtigergraph__fetch_vector
    • First observedtigergraph__generate_cypher
    • First observedtigergraph__generate_gsql
    • First observedtigergraph__get_all_data_sources
    • First observedtigergraph__get_data_source
    • First observedtigergraph__get_data_source_types
    • First observedtigergraph__get_edge
    • First observedtigergraph__get_edge_count
    • First observedtigergraph__get_edges
    • First observedtigergraph__get_global_schema
    • First observedtigergraph__get_graph_schema
    • First observedtigergraph__get_loading_job_status
    • First observedtigergraph__get_loading_jobs
    • First observedtigergraph__get_neighbors
    • First observedtigergraph__get_node
    • First observedtigergraph__get_node_degree
    • First observedtigergraph__get_node_edges
    • First observedtigergraph__get_nodes
    • First observedtigergraph__get_query_description
    • First observedtigergraph__get_query_metadata
    • First observedtigergraph__get_tool_info
    • First observedtigergraph__get_vector_index_status
    • First observedtigergraph__get_vertex_count
    • First observedtigergraph__get_workflow
    • First observedtigergraph__gsql
    • First observedtigergraph__has_edge
    • First observedtigergraph__has_node
    • First observedtigergraph__install_query
    • First observedtigergraph__is_query_installed
    • First observedtigergraph__list_connections
    • First observedtigergraph__list_graphs
    • First observedtigergraph__list_vector_attributes
    • First observedtigergraph__load_vectors_from_csv
    • First observedtigergraph__load_vectors_from_json
    • First observedtigergraph__preview_sample_data
    • First observedtigergraph__run_installed_query
    • First observedtigergraph__run_loading_job_with_data
    • First observedtigergraph__run_loading_job_with_file
    • First observedtigergraph__run_query
    • First observedtigergraph__search_top_k_similarity
    • First observedtigergraph__show_connection
    • First observedtigergraph__show_graph_details
    • First observedtigergraph__show_query
    • First observedtigergraph__update_data_source
    • First observedtigergraph__update_query_description
    • First observedtigergraph__update_schema
    • First observedtigergraph__upsert_vectors
    • First observedtigergraph__validate_schema_names

TDQS

A3.5/5.0

Scored across 69 tools

Disambiguation4/5

Most tools have clearly distinct purposes, with singular/plural pairs (add_node/add_nodes, get_edge/get_edges) and lifecycle operations well separated. However, get_edges and get_node_edges overlap heavily—both retrieve edges from a source vertex—and the schema trio (get_global_schema, get_graph_schema, show_graph_details) requires careful reading to distinguish.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (add_node, get_edges, drop_query, list_graphs). Even meta tools like discover_tools and get_workflow fit the pattern. There is no mixing of conventions or vague generic verbs.

Tool Count1/5

69 tools is an extreme count, well above the 50+ threshold for over-fragmentation. Even though TigerGraph is a complex platform, the tool surface is bloated with many near-duplicate variants (singular/plural pairs, multiple vector loading methods) that will overwhelm agents and make selection harder.

Completeness4/5

The surface is remarkably comprehensive, covering schema management, node/edge CRUD, query lifecycle (interpreted, installed, described), loading jobs, data sources, vector search, and admin via gsql. Minor gaps exist, such as a dedicated list_queries tool or conditional bulk edge deletion, but agents can work around these with show_graph_details or gsql.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    Not graded
    maintenance
    A lightweight server implementation of the Model Context Protocol that connects Memgraph database with LLMs, allowing users to interact with graph databases through natural language.
    1
    25
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A robust, lightweight Model Context Protocol (MCP) server designed to empower your AI Agents with context-awareness, safe execution sandboxes, and dedicated thought logs.
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Agent-first knowledge graph MCP server that provides 25 tools for managing a knowledge graph with nodes and edges, plus a human-readable dashboard for LLMs and AI agents.
    361 npm
    Apache 2.0