Skip to main content
Glama
Yuchenhui

Redis MCP Server

by Yuchenhui

Redis MCP Server

Integration PyPI - Version Python Version MIT licensed Docker Image Version codecov

Discord Twitch YouTube Twitter Stack Exchange questions

Overview

The Redis MCP Server is a natural language interface designed for agentic applications to efficiently manage and search data in Redis. It integrates seamlessly with MCP (Model Content Protocol) clients, enabling AI-driven workflows to interact with structured and unstructured data in Redis. Using this MCP Server, you can ask questions like:

  • "Store the entire conversation in a stream"

  • "Cache this item"

  • "Store the session with an expiration time"

  • "Index and search this vector"

Related MCP server: Redis MCP Server

Table of Contents

Features

  • Natural Language Queries: Enables AI agents to query and update Redis using natural language.

  • Seamless MCP Integration: Works with any MCP client for smooth communication.

  • Full Redis Support: Handles hashes, lists, sets, sorted sets, streams, and more.

  • Search & Filtering: Supports efficient data retrieval and searching in Redis.

  • Lite Mode: Lightweight mode for maximum flexibility with generic Redis command execution.

  • Scalable & Lightweight: Designed for high-performance data operations.

  • The Redis MCP Server supports the stdio transport. Support to the stremable-http transport will be added in the future.

Tools

This MCP Server provides tools to manage the data stored in Redis.

  • string tools to set, get strings with expiration. Useful for storing simple configuration values, session data, or caching responses.

  • hash tools to store field-value pairs within a single key. The hash can store vector embeddings. Useful for representing objects with multiple attributes, user profiles, or product information where fields can be accessed individually.

  • list tools with common operations to append and pop items. Useful for queues, message brokers, or maintaining a list of most recent actions.

  • set tools to add, remove and list set members. Useful for tracking unique values like user IDs or tags, and for performing set operations like intersection.

  • sorted set tools to manage data for e.g. leaderboards, priority queues, or time-based analytics with score-based ordering.

  • pub/sub functionality to publish messages to channels and subscribe to receive them. Useful for real-time notifications, chat applications, or distributing updates to multiple clients.

  • streams tools to add, read, and delete from data streams. Useful for event sourcing, activity feeds, or sensor data logging with consumer groups support.

  • JSON tools to store, retrieve, and manipulate JSON documents in Redis. Useful for complex nested data structures, document databases, or configuration management with path-based access.

Additional tools.

  • query engine tools to manage vector indexes and perform vector search

  • server management tool to retrieve information about the database

  • redis execute tools for generic Redis command execution (available in Lite Mode)

Lite Mode

Lite Mode is a lightweight operating mode that provides maximum flexibility by offering only generic Redis command execution tools. When enabled, all specialized data-type tools are disabled, and you get access to universal Redis command tools that can execute any Redis command.

Features

  • Disabled by Default: Lite Mode is disabled by default (LITE_MODE=false)

  • Minimal Tool Set: Only 2 generic command execution tools instead of 11+ specialized tools

  • Maximum Flexibility: Execute any Redis command without being limited to predefined tools

  • Environment Controlled: Simply set an environment variable to enable/disable

  • Restart Required: Changes take effect after server restart

Available Tools in Lite Mode

When Lite Mode is enabled, you get access to these two powerful tools:

  1. redis_execute_command: Execute Redis commands with structured arguments

    {
      "command": "SET",
      "args": ["mykey", "myvalue"]
    }
  2. redis_execute_raw_command: Execute Redis commands from string format

    {
      "command_str": "SET mykey myvalue"
    }

Enabling Lite Mode

Using Environment Variables

# Enable Lite Mode
export LITE_MODE=true

# Disable Lite Mode (default)
export LITE_MODE=false

With uvx

# Enable Lite Mode with uvx
LITE_MODE=true uvx redis-mcp-server --url redis://localhost:6379/0

# Or with environment file
echo "LITE_MODE=true" > .env
uvx --env-file .env redis-mcp-server --url redis://localhost:6379/0

In MCP Client Configuration

{
  "mcpServers": {
    "redis": {
      "command": "uvx",
      "args": [
        "--from",
        "redis-mcp-server@latest",
        "redis-mcp-server",
        "--url",
        "redis://localhost:6379/0"
      ],
      "env": {
        "LITE_MODE": "true"
      }
    }
  }
}

Usage Examples

Basic Operations

# String operations
redis_execute_command("SET", ["key", "value"])
redis_execute_command("GET", ["key"])

# Hash operations
redis_execute_command("HSET", ["myhash", "field", "value"])
redis_execute_command("HGETALL", ["myhash"])

# List operations
redis_execute_command("LPUSH", ["mylist", "item1", "item2"])
redis_execute_command("LRANGE", ["mylist", 0, -1])

# Set operations
redis_execute_command("SADD", ["myset", "member1", "member2"])
redis_execute_command("SMEMBERS", ["myset"])

Advanced Operations

# Sorted sets
redis_execute_command("ZADD", ["myscores", 100, "player1", 200, "player2"])
redis_execute_command("ZRANGE", ["myscores", 0, -1, "WITHSCORES"])

# JSON operations (requires RedisJSON module)
redis_execute_command("JSON.SET", ["mydoc", ".", "{\"name\": \"test\"}"])
redis_execute_command("JSON.GET", ["mydoc", "."])

# Stream operations
redis_execute_command("XADD", ["mystream", "*", "field1", "value1", "field2", "value2"])
redis_execute_command("XRANGE", ["mystream", "-", "+"])

Tool Comparison

Mode

Available Tools

Tool Type

Use Case

Normal Mode

11+

Specialized data-type tools

User-friendly, guided operations

Lite Mode

2

Generic command execution

Maximum flexibility, any Redis command

When to Use Lite Mode

  • Advanced Users: When you need access to specific Redis commands not covered by standard tools

  • Complex Operations: For multi-step operations that require exact command control

  • Testing & Development: When testing new Redis features or commands

  • Minimal Setup: When you want a simpler, more lightweight toolset

  • Custom Workflows: When building custom automation that needs precise Redis command control

Valid Environment Variable Values

True Values: true, t, 1, TRUE, T False Values: false, f, 0, FALSE, F, or any other value

Performance Considerations

  • Faster Startup: Lite Mode loads fewer tools, resulting in faster server startup

  • Lower Memory Usage: Reduced tool footprint means lower memory consumption

  • Simplified Interface: Fewer tools mean simpler tool discovery and selection

Installation

The Redis MCP Server is available as a PyPI package and as direct installation from the GitHub repository.

Configuring the latest Redis MCP Server version from PyPI, as an example, can be done importing the following JSON configuration in the desired framework or tool. The uvx command will download the server on the fly (if not cached already), create a temporary environment, and then run it.

{
  "mcpServers": {
    "RedisMCPServer": {
      "command": "uvx",
      "args": [
        "--from",
        "redis-mcp-server@latest",
        "redis-mcp-server",
        "--url",
        "\"redis://localhost:6379/0\""
      ]
    }
  }
}

URL specification

The format to specify the --url argument follows the redis and rediss schemes:

redis://user:secret@localhost:6379/0?foo=bar&qux=baz

As an example, you can easily connect to a localhost server with:

redis://localhost:6379/0

Where 0 is the logical database you'd like to connect to.

For an encrypted connection to the database (e.g., connecting to a Redis Cloud database), you'd use the rediss scheme.

rediss://user:secret@localhost:6379/0?foo=bar&qux=baz

To verify the server's identity, specify ssl_ca_certs.

rediss://user:secret@hostname:port?ssl_cert_reqs=required&ssl_ca_certs=path_to_the_certificate

For an unverified connection, set ssl_cert_reqs to none

rediss://user:secret@hostname:port?ssl_cert_reqs=none

Configure your connection using the available options in the section "Available CLI Options".

Testing the PyPI package

You can install the package as follows:

pip install redis-mcp-server

And start it using uv the package in your environment.

uv python install 3.13
uv sync
uv run redis-mcp-server --url redis://localhost:6379/0

However, starting the MCP Server is most useful when delegate to the framework or tool where this MCP Server is configured.

From GitHub

You can configure the desired Redis MCP Server version with uvx, which allows you to run it directly from GitHub (from a branch, or use a tagged release).

It is recommended to use a tagged release, the main branch is under active development and may contain breaking changes.

As an example, you can execute the following command to run the 0.2.0 release:

uvx --from git+https://github.com/redis/mcp-redis.git@0.2.0 redis-mcp-server --url redis://localhost:6379/0

Check the release notes for the latest version in the Releases section. Additional examples are provided below.

# Run with Redis URI
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --url redis://localhost:6379/0

# Run with Redis URI and SSL
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --url "rediss://<USERNAME>:<PASSWORD>@<HOST>:<PORT>?ssl_cert_reqs=required&ssl_ca_certs=<PATH_TO_CERT>"

# Run with individual parameters
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --host localhost --port 6379 --password mypassword

# See all options
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --help

Development Installation

For development or if you prefer to clone the repository:

# Clone the repository
git clone https://github.com/redis/mcp-redis.git
cd mcp-redis

# Install dependencies using uv
uv venv
source .venv/bin/activate
uv sync

# Run with CLI interface
uv run redis-mcp-server --help

# Or run the main file directly (uses environment variables)
uv run src/main.py

Once you cloned the repository, installed the dependencies and verified you can run the server, you can configure Claude Desktop or any other MCP Client to use this MCP Server running the main file directly (it uses environment variables). This is usually preferred for development. The following example is for Claude Desktop, but the same applies to any other MCP Client.

  1. Specify your Redis credentials and TLS configuration

  2. Retrieve your uv command full path (e.g. which uv)

  3. Edit the claude_desktop_config.json configuration file

    • on a MacOS, at ~/Library/Application\ Support/Claude/

{
    "mcpServers": {
        "redis": {
            "command": "<full_path_uv_command>",
            "args": [
                "--directory",
                "<your_mcp_server_directory>",
                "run",
                "src/main.py"
            ],
            "env": {
                "REDIS_HOST": "<your_redis_database_hostname>",
                "REDIS_PORT": "<your_redis_database_port>",
                "REDIS_PWD": "<your_redis_database_password>",
                "REDIS_SSL": True|False,
                "REDIS_SSL_CA_PATH": "<your_redis_ca_path>",
                "REDIS_CLUSTER_MODE": True|False
            }
        }
    }
}

You can troubleshoot problems by tailing the log file.

tail -f ~/Library/Logs/Claude/mcp-server-redis.log

With Docker

You can use a dockerized deployment of this server. You can either build your own image or use the official Redis MCP Docker image.

If you'd like to build your own image, the Redis MCP Server provides a Dockerfile. Build this server's image with:

docker build -t mcp-redis .

Finally, configure the client to create the container at start-up. An example for Claude Desktop is provided below. Edit the claude_desktop_config.json and add:

{
  "mcpServers": {
    "redis": {
      "command": "docker",
      "args": ["run",
                "--rm",
                "--name",
                "redis-mcp-server",
                "-i",
                "-e", "REDIS_HOST=<redis_hostname>",
                "-e", "REDIS_PORT=<redis_port>",
                "-e", "REDIS_USERNAME=<redis_username>",
                "-e", "REDIS_PWD=<redis_password>",
                "mcp-redis"]
    }
  }
}

To use the official Redis MCP Docker image, just replace your image name (mcp-redis in the example above) with mcp/redis.

Configuration

The Redis MCP Server can be configured in two ways: via command line arguments or via environment variables. The precedence is: command line arguments > environment variables > default values.

Redis ACL

You can configure Redis ACL to restrict the access to the Redis database. For example, to create a read-only user:

127.0.0.1:6379> ACL SETUSER readonlyuser on >mypassword ~* +@read -@write

Configure the user via command line arguments or environment variables.

Configuration via command line arguments

When using the CLI interface, you can configure the server with command line arguments:

# Basic Redis connection
uvx --from redis-mcp-server@latest redis-mcp-server \
  --host localhost \
  --port 6379 \
  --password mypassword

# Using Redis URI (simpler)
uvx --from redis-mcp-server@latest redis-mcp-server \
  --url redis://user:pass@localhost:6379/0

# SSL connection
uvx --from redis-mcp-server@latest redis-mcp-server \
  --url rediss://user:pass@redis.example.com:6379/0

# See all available options
uvx --from redis-mcp-server@latest redis-mcp-server --help

Available CLI Options:

  • --url - Redis connection URI (redis://user:pass@host:port/db)

  • --host - Redis hostname (default: 127.0.0.1)

  • --port - Redis port (default: 6379)

  • --db - Redis database number (default: 0)

  • --username - Redis username

  • --password - Redis password

  • --ssl - Enable SSL connection

  • --ssl-ca-path - Path to CA certificate file

  • --ssl-keyfile - Path to SSL key file

  • --ssl-certfile - Path to SSL certificate file

  • --ssl-cert-reqs - SSL certificate requirements (default: required)

  • --ssl-ca-certs - Path to CA certificates file

  • --cluster-mode - Enable Redis cluster mode

Configuration via Environment Variables

If desired, you can use environment variables. Defaults are provided for all variables.

Name

Description

Default Value

REDIS_HOST

Redis IP or hostname

"127.0.0.1"

REDIS_PORT

Redis port

6379

REDIS_DB

Database

0

REDIS_USERNAME

Default database username

"default"

REDIS_PWD

Default database password

""

REDIS_SSL

Enables or disables SSL/TLS

False

REDIS_SSL_CA_PATH

CA certificate for verifying server

None

REDIS_SSL_KEYFILE

Client's private key file for client authentication

None

REDIS_SSL_CERTFILE

Client's certificate file for client authentication

None

REDIS_SSL_CERT_REQS

Whether the client should verify the server's certificate

"required"

REDIS_SSL_CA_CERTS

Path to the trusted CA certificates file

None

REDIS_CLUSTER_MODE

Enable Redis Cluster mode

False

LITE_MODE

Enable Lite Mode for generic Redis command execution

False

There are several ways to set environment variables:

  1. Using a .env File: Place a .env file in your project directory with key-value pairs for each environment variable. Tools like python-dotenv, pipenv, and uv can automatically load these variables when running your application. This is a convenient and secure way to manage configuration, as it keeps sensitive data out of your shell history and version control (if .env is in .gitignore). For example, create a .env file with the following content from the .env.example file provided in the repository:

cp .env.example .env

Then edit the .env file to set your Redis configuration:

OR,

  1. Setting Variables in the Shell: You can export environment variables directly in your shell before running your application. For example:

export REDIS_HOST=your_redis_host
export REDIS_PORT=6379
# Other variables will be set similarly...

This method is useful for temporary overrides or quick testing.

Logging

The server uses Python's standard logging and is configured at startup. By default it logs at WARNING and above. You can change verbosity with the MCP_REDIS_LOG_LEVEL environment variable.

  • Accepted values (case-insensitive): DEBUG, INFO, WARNING, ERROR, CRITICAL, NOTSET

  • Aliases supported: WARNWARNING, FATALCRITICAL

  • Numeric values are also accepted, including signed (e.g., "10", "+20")

  • Default when unset or unrecognized: WARNING

Handler behavior

  • If the host (e.g., uv, VS Code, pytest) already installed console handlers, the server will NOT add its own; it only lowers overly-restrictive handler thresholds so your chosen level is not filtered out. It will never raise a handler's threshold.

  • If no handlers are present, the server adds a single stderr StreamHandler with a simple format.

Examples

# See normal lifecycle messages
MCP_REDIS_LOG_LEVEL=INFO uv run src/main.py

# Very verbose for debugging
MCP_REDIS_LOG_LEVEL=DEBUG uvx --from redis-mcp-server@latest redis-mcp-server --url redis://localhost:6379/0

In MCP client configs that support env, add it alongside your Redis settings. For example:

{
  "mcpServers": {
    "redis": {
      "command": "uvx",
      "args": ["--from", "redis-mcp-server@latest", "redis-mcp-server", "--url", "redis://localhost:6379/0"],
      "env": {
        "REDIS_HOST": "localhost",
        "REDIS_PORT": "6379",
        "MCP_REDIS_LOG_LEVEL": "INFO",
        "LITE_MODE": "false"
      }
    }
  }
}

Integrations

Integrating this MCP Server to development frameworks like OpenAI Agents SDK, or with tools like Claude Desktop, VS Code, or Augment is described in the following sections.

OpenAI Agents SDK

Integrate this MCP Server with the OpenAI Agents SDK. Read the documents to learn more about the integration of the SDK with MCP.

Install the Python SDK.

pip install openai-agents

Configure the OpenAI token:

export OPENAI_API_KEY="<openai_token>"

And run the application.

python3.13 redis_assistant.py

You can troubleshoot your agent workflows using the OpenAI dashboard.

Augment

The preferred way of configuring the Redis MCP Server in Augment is to use the Easy MCP feature.

You can also configure the Redis MCP Server in Augment manually by importing the server via JSON:

{
  "mcpServers": {
    "Redis MCP Server": {
      "command": "uvx",
      "args": [
        "--from",
        "redis-mcp-server@latest",
        "redis-mcp-server",
        "--url",
        "redis://localhost:6379/0"
      ]
    }
  }
}

Claude Desktop

The simplest way to configure MCP clients is using uvx. Add the following JSON to your claude_desktop_config.json, remember to provide the full path to uvx.

{
  "mcpServers": {
    "redis-mcp-server": {
        "type": "stdio",
        "command": "/Users/mortensi/.local/bin/uvx",
        "args": [
            "--from", "redis-mcp-server@latest",
            "redis-mcp-server",
            "--url", "redis://localhost:6379/0"
        ]
    }
  }
}

VS Code with GitHub Copilot

To use the Redis MCP Server with VS Code, you must nable the agent mode tools. Add the following to your settings.json:

{
  "chat.agent.enabled": true
}

You can start the GitHub desired version of the Redis MCP server using uvx by adding the following JSON to your mcp.json file:

"servers": {
  "redis": {
    "type": "stdio",
    "command": "uvx", 
    "args": [
      "--from", "redis-mcp-server@latest",
      "redis-mcp-server",
      "--url", "redis://localhost:6379/0"
    ]
  },
}

Alternatively, you can start the server using uv and configure your mcp.json. This is usually desired for development.

// mcp.json
{
  "servers": {
    "redis": {
      "type": "stdio",
      "command": "<full_path_uv_command>",
      "args": [
        "--directory",
        "<your_mcp_server_directory>",
        "run",
        "src/main.py"
      ],
      "env": {
        "REDIS_HOST": "<your_redis_database_hostname>",
        "REDIS_PORT": "<your_redis_database_port>",
        "REDIS_USERNAME": "<your_redis_database_username>",
        "REDIS_PWD": "<your_redis_database_password>",
      }
    }
  }
}

For more information, see the VS Code documentation.

Tip: You can prompt Copilot chat to use the Redis MCP tools by including #redis in your message.

Note: Starting with VS Code v1.102,
MCP servers are now stored in a dedicated mcp.json file instead of settings.json.

Testing

You can use the MCP Inspector for visual debugging of this MCP Server.

npx @modelcontextprotocol/inspector uv run src/main.py

Example Use Cases

  • AI Assistants: Enable LLMs to fetch, store, and process data in Redis.

  • Chatbots & Virtual Agents: Retrieve session data, manage queues, and personalize responses.

  • Data Search & Analytics: Query Redis for real-time insights and fast lookups.

  • Event Processing: Manage event streams with Redis Streams.

Contributing

  1. Fork the repo

  2. Create a new branch (feature-branch)

  3. Commit your changes

  4. Push to your branch and submit a PR!

License

This project is licensed under the MIT License.

Badges

Contact

For questions or support, reach out via GitHub Issues.

Alternatively, you can join the Redis Discord server and ask in the #redis-mcp-server channel.

Available Tools

44 tools
client_listA

Get a list of connected clients to the Redis server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

The description implies a read-only operation ('Get a list'), which is appropriate. However, with no annotations, the description carries the full burden of behavioral disclosure. It lacks details on performance implications, authorization requirements, or whether the list is comprehensive or paginated.

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: a single sentence that directly states the tool's function. Every word serves a purpose, and it is front-loaded with the action and resource.

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 that the tool has no parameters, no annotations, and no output schema, the description is minimally complete. It clearly states what the tool returns (list of connected clients). It could mention that the output format is a list of client objects, but the tool's simplicity mitigates the 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 input schema has no parameters, and schema coverage is 100%. The description adds no parameter details because none exist. The simplicity of the tool means no additional parameter semantics are needed.

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 identifies the tool's purpose: retrieving a list of connected clients from a Redis server. It uses a specific verb (get) and resource (connected clients). However, it does not distinguish this tool from other list-related sibling tools like scan_keys or get_indexes, though the resource is unique.

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 usage guidelines are provided. The description does not specify when to use this tool over alternatives, nor does it mention any prerequisites or context (e.g., read-only nature).

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

create_vector_index_hashB

Create a Redis 8 vector similarity index using HNSW on a Redis hash.

This function sets up a Redis index for approximate nearest neighbor (ANN) search using the HNSW algorithm and float32 vector embeddings.

Args: index_name: The name of the Redis index to create. Unless specifically required, use the default name for the index. prefix: The key prefix used to identify documents to index (e.g., 'doc:'). Unless specifically required, use the default prefix. vector_field: The name of the vector field to be indexed for similarity search. Unless specifically required, use the default field name dim: The dimensionality of the vectors stored under the vector_field. distance_metric: The distance function to use (e.g., 'COSINE', 'L2', 'IP').

Returns: A string indicating whether the index was created successfully or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
index_nameNovector_index
prefixNodoc:
vector_fieldNovector
dimNo
distance_metricNoCOSINE

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It describes the function and algorithm but lacks disclosure of side effects (e.g., performance impact, permissions needed, behavior if index exists). Return value is mentioned but not error conditions.

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 fairly concise with clear sections (Args, Returns). The repetition of 'Unless specifically required' is minor redundancy.

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 tool has 5 parameters with no required fields, and an output schema exists. The description covers purpose and parameters but lacks context on prerequisites (e.g., Redis version, module loading) or potential errors.

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 0%, so the description compensates by explaining each parameter's purpose and default usage guidance. However, it does not elaborate on dim or distance_metric beyond basic 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 clearly states the tool creates a Redis 8 vector similarity index using HNSW on a Redis hash. It distinguishes from siblings like vector_search_hash (search) and get_indexes (list).

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 explicit guidance on when to use this tool versus alternatives like set_vector_in_hash or vector_search_hash. It only mentions parameter defaults, not usage context.

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

dbsizeA

Get the number of keys stored in the Redis database

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden; it states a read operation but does not mention that it returns an integer or that it is non-blocking. However, the output schema likely covers this.

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, no wasted words; perfectly concise for the tool's simplicity.

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 zero parameters and an existing output schema, the description is nearly complete; it could note that it operates on the current database, but not essential.

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?

No parameters exist, so baseline 4 applies; the schema coverage is 100% and description adds no additional meaning 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 uses a specific verb ('Get') and resource ('number of keys stored in the Redis database'), clearly distinguishing it from sibling tools that operate on keys or other aspects.

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?

No explicit guidance on when to use this tool vs alternatives; the simplicity implies it should be used when only the total key count is needed, but no exclusions are provided.

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

deleteC

Delete a Redis key.

Args: key (str): The key to delete.

Returns: str: Confirmation message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for transparency. It only states that the tool deletes a key and returns a confirmation or error, without disclosing behaviors like whether it fails on missing keys, side effects, or required permissions. The return type is vaguely described.

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 with a clear structure: purpose, arguments, returns. It uses a Python-style docstring format that is easy to parse, though the returns section could be more specific.

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?

Given the low complexity of the tool (one parameter), the description covers the basic input and return. However, it lacks details on error handling, typical response formats, and any behavioral nuances that might be helpful for safe invocation.

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

Parameters2/5

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

The schema has no parameter descriptions (0% coverage), and the description adds only 'The key to delete', which restates the schema's type and name. It provides minimal added value, not explaining what constitutes a valid key or format.

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 'Delete a Redis key', which clearly specifies the verb (delete) and resource (Redis key). It distinguishes from sibling tools like hdel (hash field deletion) and json_del (JSON deletion), though no explicit differentiation is made.

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 like hdel, srem, or json_del. It does not mention any conditions, prerequisites, or exclusions, leaving the agent to infer usage context from the tool name alone.

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

expireA

Set an expiration time for a Redis key.

Args: name: The Redis key. expire_seconds: Time in seconds after which the key should expire.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
expire_secondsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

Without annotations, the description bears full responsibility for behavioral disclosure. It fails to mention what happens if the key does not exist, whether it overwrites existing TTLs, or any side effects. The description is minimal and lacks critical behavioral context.

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, using a single sentence for purpose, followed by structured Args and Returns sections. Every sentence provides value, and the most important information is front-loaded. No wasted words.

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 two parameters and an output schema (implied), the description covers the basics: purpose, parameters, and return type. However, it lacks details on error conditions or edge cases, which would be useful for a complete understanding. Still, it is largely sufficient.

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?

With 0% schema description coverage, the description must compensate. It adds semantic meaning to both parameters: 'name' is described as 'The Redis key' and 'expire_seconds' as 'Time in seconds after which the key should expire'. This goes beyond the schema's type-only definitions, providing essential 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 clearly states the action ('Set an expiration time') and the resource ('a Redis key'), providing a specific verb+resource combination that distinguishes it from sibling tools like 'set' or 'delete'. It is unambiguous and directly communicates 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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, nor does it reference any sibling tools or context. The agent receives no decision-making support beyond the basic function.

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

getB

Get a Redis string value.

Args: key (str): The key to retrieve.

Returns: str, bytes: The stored value or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The description details the return type as 'str, bytes' and notes that an error message may be returned on failure. However, it does not disclose that the operation is read-only (non-destructive) or specify behavior for missing keys beyond returning an error message.

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, using a standard docstring format with Args and Returns sections. Every sentence delivers information without redundancy, though additional context on usage would improve completeness.

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?

Given the simplicity of the tool (single parameter, no annotations, output schema present but not detailed), the description covers the essential I/O. However, it lacks context on the Redis string data type and does not mention that the tool is read-only, which is relevant for an agent's decision-making.

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 lacks parameter descriptions (0% coverage), and the description compensates by explaining the 'key' parameter as 'The key to retrieve.' This adds basic meaning, but no format constraints, examples, or further elaboration are provided.

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 a Redis string value', specifying both the action (get) and the specific resource type (string). This distinguishes it from sibling tools like 'hget', 'json_get', etc., which target different data structures.

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. With many sibling tools offering varied retrieval methods, such as hget for hashes or json_get for JSON, explicit usage conditions are absent.

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

get_indexed_keys_numberA

Retrieve the number of indexed keys by the index

Args: index_name (str): The name of the index to retrieve information about.

Returns: str: Number of indexed keys as a string

ParametersJSON Schema
NameRequiredDescriptionDefault
index_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It indicates a read operation and states the return type, but does not disclose potential errors (e.g., nonexistent index) or other behavioral nuances. It's adequate but minimal.

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 a clear docstring format, no redundant information, and all content is essential.

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 parameter and an output schema, the description covers the basics but lacks mention of error handling or edge cases (e.g., missing index). It 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.

Parameters4/5

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

The description adds meaning to the single parameter 'index_name' by explaining it is 'the name of the index to retrieve information about,' which compensates for the 0% schema description coverage. The return type is also described.

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 the number of indexed keys for a given index, using a specific verb and resource. This distinguishes it from sibling tools like get_indexes or get_index_info, which list indexes or provide general info.

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, nor on prerequisites such as the index needing to exist. The description is purely functional without usage context.

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

get_indexesA

List of indexes in the Redis database

Returns: str: A JSON string containing the list of indexes or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the return format (JSON string) and potential error messages. However, it does not state that the operation is read-only or idempotent, nor does it discuss authorization or side effects beyond the error note.

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 lines plus a return type annotation. Every sentence is necessary. The key action is front-loaded ('List of indexes'), making it immediately understandable.

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 existence of an output schema (mentioned in context), the description need not detail return values further. It already mentions the format. The tool is simple with no parameters, so the description covers the necessary information. A slightly higher score would require mention of no required arguments, but that is implied by the empty 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?

There are zero parameters, and the schema coverage is 100%. Per guidelines, baseline is 4 for no parameters. The description adds value by explaining the return type (JSON string), which is not in the input schema, thus compensating for the lack of parameters.

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 of indexes in the Redis database'. The verb 'List' and resource 'indexes' are specific, and the return type is provided. This distinguishes it from siblings like 'get_index_info' which focuses on a single index.

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 offers no guidance on when to use this tool versus alternatives. For example, it does not mention that 'get_index_info' provides details for a specific index, nor does it specify any exclusions or prerequisites. Usage context is implied but not explicit.

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

get_index_infoA

Retrieve schema and information about a specific Redis index using FT.INFO.

Args: index_name (str): The name of the index to retrieve information about.

Returns: str: Information about the specified index or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
index_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided. Description mentions underlying command FT.INFO and that it returns information or an error, but does not explicitly state that it is a read-only operation or any behavioral traits. The description carries the burden but only partially addresses safety.

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?

Description is concise and structured with Args and Returns sections. No unnecessary words, but could be slightly more streamlined by integrating the parameter description into the main sentence.

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 required parameter and an output schema, the description covers the core functionality. However, it lacks context about error handling, prerequisites, or when the index might not exist.

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 single parameter 'index_name' is described in the Args section as 'The name of the index to retrieve information about.' This adds meaning beyond the input schema which only provides title and type (schema description coverage 0%).

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 the verb 'retrieve' and the resource 'schema and information about a specific Redis index' using the FT.INFO command. Distinguishes from sibling tools that perform other operations like set, get, delete, etc.

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 explicit guidance on when to use this tool versus alternatives like get_indexes or get_indexed_keys_number. Lacks when-not-to-use or prerequisite information.

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

get_vector_from_hashA

Retrieve a vector from a Redis hash and convert it back from binary blob.

Args: name: The Redis hash key. vector_field: The field name inside the hash. Unless specifically required, use the default field name

Returns: The vector as a list of floats, or an error message if retrieval fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
vector_fieldNovector

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must shoulder the burden. It mentions the retrieval, conversion from binary blob, and error returns, but omits important behaviors like what happens if the key does not exist or if the field is missing. The transparency is adequate but not thorough.

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, with clear sections for Args and Returns. Every sentence serves a purpose: stating the main action, explaining parameters, and describing the return value. No unnecessary information is present.

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 (2 parameters, no output schema), the description covers the main aspects: retrieval, conversion, parameter explanations, and return value. Minor gaps exist (e.g., no mention of key existence requirements), but overall it is sufficient for a basic retrieval tool.

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 no parameter descriptions (0% coverage), so the description compensates by explaining the meaning of 'name' (Redis hash key) and 'vector_field' (field name with default usage guidance). This adds significant value beyond the schema's type and default, earning a high 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 description clearly states the action ('Retrieve a vector') and the resource ('from a Redis hash and convert it back from binary blob'). The sibling tool 'set_vector_in_hash' is the opposite operation, making the purpose distinct. The verb and resource are specific, earning a top score.

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 lacks explicit guidance on when to use this tool versus alternatives. While the sibling 'set_vector_in_hash' implies this is the read counterpart, no direct comparison or exclusion criteria are provided. The default field name is noted, but no context for choosing different fields is given.

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

hdelA

Delete a field from a Redis hash.

Args: name: The Redis hash key. key: The field name inside the hash.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavior. It only states the action and a vague return message, but does not explain what happens if the field or hash does not exist, nor does it mention idempotency or 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 extremely concise with three short lines: action, args, returns. Every sentence adds value, and the purpose is front-loaded. There is no redundant information.

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?

Given the simplicity of the tool (2 parameters, no nesting) and existence of an output schema, the description covers basic functionality. However, considering the lack of annotations and the need to differentiate from many sibling tools, it could be more complete by mentioning edge cases or typical return types.

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 0%, so the description must add meaning. It clarifies that 'name' is the Redis hash key and 'key' is the field name, which goes beyond the schema's bare titles. However, it does not specify types, but the schema already does that.

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 'Delete a field from a Redis hash,' providing a specific verb and resource. This distinguishes it from sibling tools like hget, hset, and hexists, which operate on the same data structure but with different actions.

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 offers no guidance on when to use hdel versus alternatives such as delete (entire key), srem (remove from set), or zrem (remove from sorted set). There are no preconditions or usage contexts mentioned.

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

hexistsA

Check if a field exists in a Redis hash.

Args: name: The Redis hash key. key: The field name inside the hash.

Returns: True if the field exists, False otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Despite no annotations, the description discloses return values (True/False) and is adequate for a simple read-only operation. It does not mention side effects (none expected) or performance characteristics.

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?

Very concise, two sentences plus structured Args/Returns. Front-loaded with the main action. No unnecessary words.

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 only two parameters and an output schema, the description covers purpose, arguments, and return value. Could mention behavior for non-existent hash (returns False) but is otherwise complete.

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?

With 0% schema description coverage, the description compensates by explaining 'name: The Redis hash key' and 'key: The field name inside the hash,' adding meaning beyond the schema's generic 'Name' and 'Key' labels.

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 'Check if a field exists in a Redis hash.' The verb 'check' and resource 'field in a Redis hash' are specific, distinguishing it from sibling tools like hget, hset, hdel, and hgetall.

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 vs alternatives such as hget. Does not mention that it is more efficient for existence checks compared to fetching the value.

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

hgetA

Get the value of a field in a Redis hash.

Args: name: The Redis hash key. key: The field name inside the hash.

Returns: The field value or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states 'Get the value' indicating a read operation and mentions returning the field value or error. This is basic but adequate for a simple read; no additional behavioral context (e.g., consistency, locking) is disclosed.

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: three lines covering purpose, parameters, and return. Every sentence adds value with no wasted words.

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 tool's simplicity (single field retrieval) and the presence of an output schema (as indicated by context signals), the description provides sufficient context. It mentions the return value and error case, making it complete for this straightforward 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 description coverage is 0%, so the description must compensate. It explains 'name: The Redis hash key. key: The field name inside the hash.', which adds meaning beyond the schema titles but lacks extra details like data type constraints or examples.

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 the value of a field in a Redis hash.' It uses a specific verb and resource, distinguishing it from siblings like 'hgetall' (gets all fields) and 'get' (gets a string key).

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 usage for a single field but does not provide explicit guidance on when to use this tool versus alternatives like 'hgetall' or when not to use it. No exclusion criteria or context is given.

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

hgetallA

Get all fields and values from a Redis hash.

Args: name: The Redis hash key.

Returns: A dictionary of field-value pairs or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It does not disclose performance implications (e.g., O(N) for large hashes), side effects, or safety profile. The return type is mentioned but not detailed.

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: a single sentence for the purpose, plus structured Args/Returns. Every word is valuable and 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?

For a simple single-parameter read operation, the description provides basic functionality, parameter, and return info. However, it lacks usage notes, error details, and performance considerations, making it minimally adequate.

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 schema has 0% description coverage, but the description adds essential context for the sole parameter 'name: The Redis hash key,' clarifying what the name refers to beyond the schema's minimal type definition.

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 all fields and values from a Redis hash,' using a specific verb and resource. It distinguishes itself from siblings like hget (single field) and hset (set fields).

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 usage context through its purpose but does not explicitly state when to use this tool versus alternatives (e.g., hget for single fields, scan for large hashes). No when-not-to guidance is provided.

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

hsetA

Set a field in a hash stored at key with an optional expiration time.

Args: name: The Redis hash key. key: The field name inside the hash. value: The value to set. expire_seconds: Optional; time in seconds after which the key should expire.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
keyYes
valueYes
expire_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations, so description carries burden. It explains action and return type. Could mention overwriting behavior or creation of hash, but adequate for simple operation.

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 concise sentence plus clear arg list and return note. No fluff, well-structured.

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?

Output schema exists so return not needed. Covers main functionality; could add details on overwrite/create behavior but sufficient for typical use.

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?

Adds meaning beyond schema titles: explains 'name' as hash key, 'key' as field, 'value' value, and 'expire_seconds' as optional time. Compensates for 0% schema coverage.

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 the action: 'Set a field in a hash stored at key' with optional expiration. Distinguishes from siblings like hget, hdel, etc.

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?

Provides basic context but lacks explicit when-to-use vs alternatives or when to include expire_seconds. Implied usage is clear but no exclusions.

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

infoA

Get Redis server information and statistics.

Args: section: The section of the info command (default, memory, cpu, etc.).

Returns: A dictionary of server information or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNodefault

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the burden of disclosing behavioral traits. The description mentions that the tool returns a dictionary or error message, but does not address side effects, permissions, rate limits, or other behavioral characteristics.

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 very concise, consisting of three short sentences. The main purpose is front-loaded, and every sentence adds value without extraneous words.

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 tool has only one parameter and no output schema or nested objects, the description covers the essential aspects: purpose, parameter usage, and return type. It is fairly complete for a simple info command.

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 0% description coverage, but the tool description explains the 'section' parameter, listing examples like default, memory, cpu. This adds meaningful information beyond the schema, though not exhaustive.

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 Redis server information and statistics,' providing a specific verb and resource. It effectively distinguishes the tool from sibling tools, which are other Redis commands like get, set, etc., by focusing on server-level stats.

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 usage for retrieving server info but does not explicitly guide when to use this tool over siblings, nor does it mention prerequisites or when not to use it. Usage is implied but lacks explicit direction.

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

json_delA

Delete a JSON value from Redis at a given path.

Args: name: The Redis key where the JSON document is stored. path: The JSON path to delete (default: root '$').

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathNo$

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided; description mentions parameters and return value but does not disclose if deletion is destructive, what happens if path doesn't exist, or other side effects. Adequate but not detailed.

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?

Very concise, uses clear args section, no redundant words. Efficient for agent understanding.

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?

Covers main purpose and parameters, but lacks details on error handling, preconditions, or specific return messages. Acceptable for a simple tool.

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 0%, but description explains both parameters, including default for path. Adds meaning beyond schema, though basic.

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 (delete), resource (JSON value in Redis), and path. It distinguishes from sibling tools like json_get and json_set.

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 explicit guidance on when to use this tool versus alternatives like 'delete' (whole key), 'hdel', or 'zrem'. The description only implies usage for JSON path deletion.

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

json_getA

Retrieve a JSON value from Redis at a given path.

Args: name: The Redis key where the JSON document is stored. path: The JSON path to retrieve (default: root '$').

Returns: The retrieved JSON value or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathNo$

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description must disclose behavioral traits. It indicates read-only operation ('Retrieve') and mentions error messages, but lacks details on side effects, permissions, or performance.

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?

Description is brief and front-loaded with purpose, followed by Args and Returns sections. It avoids unnecessary detail but could be more streamlined.

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 (read JSON from Redis) and existence of an output schema, the description adequately covers usage and 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?

Description adds minimal value beyond schema by naming parameters in Args docstring, but schema coverage is 0%. It explains name as Redis key and path as JSON path, which is sufficient for basic understanding.

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 (Retrieve), the resource (JSON value from Redis), and the path parameter, distinguishing it from sibling tools like json_del and json_set.

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 vs alternatives like get or json_set. No context on prerequisites or when not to use.

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

json_setB

Set a JSON value in Redis at a given path with an optional expiration time.

Args: name: The Redis key where the JSON document is stored. path: The JSON path where the value should be set. value: The JSON value to store. expire_seconds: Optional; time in seconds after which the key should expire.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathYes
valueYes
expire_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It fails to disclose whether the tool creates the key if missing, whether intermediate paths are created, or what happens if the path does not exist. It only mentions return type generically ('success or error'). For a mutation tool, these are critical behavioral traits.

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 with a clear opening sentence followed by an Args list. It is front-loaded with the core action. Each sentence adds value, though the Args section could be slightly more compact.

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 essential inputs and purpose but lacks details on behavior for edge cases (missing key, invalid path). An output schema exists but is not described. For a 4-parameter tool with no annotations, it is partially complete but leaves gaps.

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 0% description coverage, so the description's Arg section adds meaning for all four parameters. It explains name, path, value, and expire_seconds, going beyond the bare schema types.

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 sets a JSON value in Redis at a given path with an optional expiration. It uses a specific verb-resource pair (set JSON value) and distinguishes from siblings like json_get, json_del, and set (which handles whole keys).

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 vs alternatives. It does not mention that it modifies a specific JSON path within a document, unlike set which replaces the entire value, or json_del which removes a path. No when-not or alternative recommendations.

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

llenB

Get the length of a Redis list.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It does not mention what happens if the key does not exist (returns 0) or if the key holds a non-list type (error). The read-only nature is implied but not explicit, and no rate limits or permissions are noted.

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, concise sentence with no unnecessary words. It perfectly front-loads the purpose without extraneous information.

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?

Given the tool's simplicity (one parameter) and the presence of an output schema (likely specifying return type), the description is minimally adequate. However, it lacks detail on behavior for edge cases like missing keys or type mismatches, which would be expected for full completeness.

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

Parameters1/5

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

Schema description coverage is 0%, and the description fails to explain the meaning of the 'name' parameter beyond the schema. It does not clarify that 'name' is the Redis key for the list, leaving the agent to guess the parameter's semantics.

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 operation: 'Get the length of a Redis list.' The verb 'Get' and resource 'length of a Redis list' are specific and distinct from sibling list operations like lpop or lpush, leaving no ambiguity about 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 (e.g., using lrange to count elements). The description does not mention when-not-to-use or any prerequisites, leaving the agent to infer usage context.

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

lpopB

Remove and return the first element from a Redis list.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description must disclose behaviors. It states removal and return but omits crucial details like behavior on empty list, atomicity guarantee, or type restrictions.

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?

Single concise sentence (9 words) is efficient, but could add a short second sentence for common edge case (empty list) without harming conciseness.

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 simple tool and output schema assumed to exist, description covers the basic purpose but lacks completeness on edge cases and error handling typical for a pop operation.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description provides no clarification for the single parameter 'name' (e.g., that it is the key of the list), leaving ambiguity.

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 clearly states the action ('Remove and return') and the resource ('first element from a Redis list'), distinguishing it from siblings like rpop (remove last) and lrange (get without removal).

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?

Description implies usage for removing from left of a list but provides no explicit context on when to choose this over alternatives (e.g., rpop, lpop vs lrange) or conditions like empty lists.

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

lpushB

Push a value onto the left of a Redis list and optionally set an expiration time.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes
expireNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It doesn't mention what happens if the key doesn't exist (creates new list), if the key holds non-list type (error), or side effects. The handling of different value types is not explained.

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 conveys the core functionality without unnecessary words. It is appropriately 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 the primary action but misses important context like error conditions, type handling, and default behavior. The output schema exists but the description doesn't need to explain it. Overall somewhat incomplete for a simple 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 description adds meaning to all three parameters: name as key, value as item to push, expire as expiration. However, it doesn't specify expiration units or how non-string values are handled. Given 0% schema coverage, it partially compensates but lacks depth.

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 'push', the resource 'Redis list', and the direction 'left', which distinguishes it from siblings like rpush and lpop. It also mentions the optional expiration.

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, such as rpush for right-side push or lpush for multiple values. There is no mention of prerequisites or exclusions.

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

lrangeC

Get elements from a Redis list within a specific range.

Returns: str: A JSON string containing the list of elements or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
startYes
stopYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description mentions return format (JSON string or error) but does not state that the operation is read-only and non-destructive. Lacks behavioral context beyond return value.

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?

Very concise at two sentences, front-loaded with action. However, could include parameter explanations without significant bloat. Still efficient overall.

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 tool with 3 required parameters and no schema descriptions, the description should clarify parameter semantics and behavior. It only provides a high-level purpose and return type, leaving gaps for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%. Description does not explain parameters (name, start, stop) or their constraints (e.g., start/stop meaning). Relies entirely on parameter names which may be ambiguous.

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 verb 'Get', resource 'elements from a Redis list', and operation 'within a specific range'. Effectively distinguishes from sibling tools like llen, lpop, etc.

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 other list operations (e.g., lrange vs lpop for specific elements). No mention of alternatives or context.

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

publishB

Publish a message to a Redis channel.

Args: channel: The Redis channel to publish to. message: The message to send.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
messageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

Without annotations, the description bears full burden. It only mentions 'success message or error message' but omits details on fire-and-forget nature, delivery guarantees, or error scenarios.

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?

Extremely concise: one sentence for purpose, followed by a clear listing of args and returns. No redundant information.

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 tool's simplicity (2 required string params) and presence of an output schema, the description covers core functionality and return type. However, it lacks mention of prerequisites like Redis connection status.

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 has 0% description coverage; the description provides basic context for parameters ('channel to publish to', 'message to send') but no additional constraints or format details.

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 the action 'Publish' and the resource 'Redis channel', distinguishing it from sibling tools like 'subscribe' which perform opposite operations.

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 alternatives (e.g., compared to 'subscribe' or other write operations), and no prerequisites or exclusions mentioned.

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

renameB

Renames a Redis key from old_key to new_key.

Args: old_key (str): The current name of the Redis key to rename. new_key (str): The new name to assign to the key.

Returns: Dict[str, Any]: A dictionary containing the result of the operation. On success: {"status": "success", "message": "..."} On error: {"error": "..."}

ParametersJSON Schema
NameRequiredDescriptionDefault
old_keyYes
new_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states the operation and return format, but does not disclose side effects (e.g., mutation), error conditions (e.g., old_key missing, new_key already exists), or whether it is atomic.

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 at three sentences, includes a clear purpose statement in the first sentence, and structures parameters and returns efficiently. No extraneous content.

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?

Given the tool's simplicity and the presence of an output schema describing the return structure, the description covers parameters and return format. However, it omits behavioral details like error conditions, making it only minimally 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?

The description adds slight meaning beyond the schema by labeling old_key as 'current name' and new_key as 'new name.' However, schema coverage is 0% (schema only has titles), and the description does not provide constraints, examples, or further detail, so only moderate value.

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: "Renames a Redis key from old_key to new_key." It uses a specific verb (rename) and identifies the resource (Redis key), distinguishing it from sibling tools like delete, expire, or get.

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. It does not mention prerequisites (e.g., key must exist) or behaviors like overwriting an existing new_key. The description lacks context for appropriate usage.

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

rpopA

Remove and return the last element from a Redis list.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses the destructive nature (remove and return), but it lacks details on behavior when the list is empty (returns nil) or type mismatch. No annotations are provided, so the description carries the burden but is not comprehensive.

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 sentence with no redundancy. It is concise, but given the simplicity of the tool, it could be slightly more informative without losing conciseness.

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 one-parameter tool with an output schema, the description is adequate but lacks edge case details (e.g., empty list behavior). It does not reference the output schema or mention potential errors.

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

Parameters2/5

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

Schema coverage is 0%, so the description must clarify the parameter. It says 'from a Redis list', implying 'name' is the key, but does not explicitly state that. For a single parameter, direct mapping between 'name' and the list key would improve clarity.

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 ('Remove and return') and the resource ('last element from a Redis list'). It effectively distinguishes from sibling tools like lpop (remove first) and lrange (get range).

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?

Usage context is implied (use when needing the last element), but no explicit guidance on when not to use or alternatives are provided. For example, it does not mention that lpop might be preferred for first-element removal.

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

rpushC

Push a value onto the right of a Redis list and optionally set an expiration time.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes
expireNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It mentions the optional expiration but omits critical details: that it creates the list if missing, errors on type mismatch, atomicity, and the return value (list length). The description is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. It is appropriately concise for its complexity, though it could benefit from a slightly more structured format (e.g., separating action and optional behavior).

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?

Given the lack of annotations and low schema coverage, the description is incomplete. It does not cover edge cases (missing list, type mismatch), does not specify return value (though output schema exists, the description still lacks behavioral completeness), and omits usage context. A more comprehensive description is needed.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It names all three parameters (name, value, expire) but lacks details: no explanation that 'name' is the list key, no value type constraints (binary, string, int, number), and no unit for expire (seconds). The description adds minimal value over the schema's titles.

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 ('Push a value onto the right of a Redis list') and distinguishes it from sibling tools like lpush (push left) by specifying 'right'. The verb-resource combination is specific and unambiguous.

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 like lpush, rpop, or lrange. The description only states the action without any contextual hints for selection.

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

saddB

Add a value to a Redis set with an optional expiration time.

Args: name: The Redis set key. value: The value to add to the set. expire_seconds: Optional; time in seconds after which the set should expire.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes
expire_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It omits key traits: duplicate handling (SADD ignores duplicates), return value (normally number added, but says 'success message'), and whether expiration overrides existing TTL.

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 with a clear purpose statement followed by parameter list and return type. No extraneous content.

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 set add operation, the description covers purpose and parameters. However, missing behavioral details (e.g., idempotency, key creation) and return format make it incomplete for an agent to fully understand side effects.

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?

With 0% schema description coverage, the description provides basic parameter explanations (e.g., 'time in seconds' for expire_seconds). However, it lacks details like accepted value types or constraints.

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 'Add a value to a Redis set with an optional expiration time', using a specific verb and resource. It distinguishes from sibling tools like srem or smembers by explicitly naming the operation type.

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 alternatives such as hset or zadd. The description does not mention scenarios, prerequisites, or exclusions.

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

scan_all_keysA

Scan and return ALL keys matching a pattern using multiple SCAN iterations.

This function automatically handles the SCAN cursor iteration to collect all matching keys. It's safer than KEYS * for large databases but will still collect all results in memory.

⚠️ WARNING: With very large datasets (millions of keys), this may consume significant memory. For large-scale operations, consider using scan_keys() with manual iteration instead.

Args: pattern: Pattern to match keys against (default is "*" for all keys). batch_size: Number of keys to scan per iteration (default 100).

Returns: A list of all keys matching the pattern or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo*
batch_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains automatic cursor iteration, in-memory collection, memory warning, and return type. However, it does not explicitly state the tool is read-only (non-destructive), which would be ideal for full transparency.

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 without fluff, front-loaded with main purpose, and includes a warning block for emphasis. Every sentence adds value.

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 potentially memory-intensive tool, description covers operation, memory warning, alternatives, parameters, and return type. Minor gap: does not specify error conditions beyond 'error message'.

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 0%, but description adds meaning by explaining pattern is for matching keys and batch_size controls iteration count. However, it does not provide constraints, examples, or format details beyond defaults.

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 'Scan and return' and the resource 'ALL keys matching a pattern', distinguishing it from sibling 'scan_keys' which requires manual iteration. It also notes it's safer than KEYS * for large databases.

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 when to use (safer than KEYS *) and when not to use (very large datasets with memory concerns), and suggests an alternative: scan_keys() with manual iteration.

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

scan_keysA

Scan keys in the Redis database using the SCAN command (non-blocking, production-safe).

⚠️ IMPORTANT: This returns PARTIAL results from one iteration. Use scan_all_keys() to get ALL matching keys, or call this function multiple times with the returned cursor until cursor becomes 0.

The SCAN command iterates through the keyspace in small chunks, making it safe to use on large databases without blocking other operations.

Args: pattern: Pattern to match keys against (default is "" for all keys). Common patterns: "user:", "cache:", ":123", etc. count: Hint for the number of keys to return per iteration (default 100). Redis may return more or fewer keys than this hint. cursor: The cursor position to start scanning from (0 to start from beginning). To continue scanning, use the cursor value returned from previous call.

Returns: A dictionary containing: - 'cursor': Next cursor position (0 means scan is complete) - 'keys': List of keys found in this iteration (PARTIAL RESULTS) - 'total_scanned': Number of keys returned in this batch - 'scan_complete': Boolean indicating if scan is finished Or an error message if something goes wrong.

Example usage: First call: scan_keys("user:") -> returns cursor=1234, keys=[...], scan_complete=False Next call: scan_keys("user:", cursor=1234) -> continues from where it left off Final call: returns cursor=0, scan_complete=True when done

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo*
countNo
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, but description explains non-blocking nature, partial results, count hint variability, and iterative pattern. Discloses no destructive 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?

Description is long but well-structured with sections, warning, example, and clear explanations. Could be slightly more concise but appropriate for complexity.

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?

Fully explains iterative usage, return structure, and distinguishes from sibling scan_all_keys. Output schema details are included in text.

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?

Schema coverage is 0%, so description fully explains each parameter: pattern with common patterns, count as hint, cursor for iteration. Adds defaults and 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?

Description clearly states tool scans keys using SCAN command, non-blocking and production-safe. It distinguishes from sibling scan_all_keys by emphasizing partial results and iterative usage.

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 says to use scan_all_keys for full results, or call multiple times with cursor. Provides complete example of first, second, final calls.

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

setA

Set a Redis string value with an optional expiration time.

Args: key (str): The key to set. value (str, bytes, int, float, dict): The value to store. expiration (int, optional): Expiration time in seconds.

Returns: str: Confirmation message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes
expirationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description provides some behavioral context (optional expiration, return type), but it omits important traits such as overwrite behavior on existing keys, size limits, or automatic serialization of dict values to JSON.

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, with a clear one-sentence purpose followed by parameter details. It is appropriately sized for a simple tool, though it could be slightly more concise by omitting the 'Args:' formatting.

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 (3 parameters, no annotations, output schema present), the description covers the essential behavior and parameters. It lacks some edge-case details but is generally sufficient for a basic Redis SET 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?

The description clarifies that value can be 'str, bytes, int, float, dict' and that expiration is optional, adding meaning beyond the raw schema types. However, it does not explain the serialization of dicts or the exact behavior of expiration (e.g., units).

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 the resource 'a Redis string value', which distinguishes it from sibling tools like 'get', 'delete', or 'hset'. The addition of 'with an optional expiration time' further clarifies the scope.

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 like 'hset' or 'json_set'. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage without additional support.

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

set_vector_in_hashB

Store a vector as a field in a Redis hash.

Args: name: The Redis hash key. vector_field: The field name inside the hash. Unless specifically required, use the default field name vector: The vector (list of numbers) to store in the hash.

Returns: True if the vector was successfully stored, False otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
vectorYes
vector_fieldNovector

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior. It only states return type (True/False) but omits side effects (e.g., overwrite behavior, index requirements, what happens if hash doesn't exist).

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?

Very concise, uses clear docstring format with Args/Returns. No redundant information, every sentence adds value.

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?

Given no annotations and 3 parameters, the description is incomplete. It lacks context on prerequisites (e.g., hash existence), error cases, and when to use default vs custom vector_field. Output schema exists but is minimal.

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 0%, so description must explain parameters. It does so for name, vector, and vector_field, including default and a usage note. However, lacks details like vector length limits or constraints.

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 ('Store a vector as a field in a Redis hash'), specifying the verb and resource. It distinguishes from sibling tools like get_vector_from_hash and create_vector_index_hash.

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 explicit guidance on when to use this tool versus alternatives like hset or vector_search_hash. The only hint is 'Unless specifically required, use the default field name,' which is not enough to guide selection.

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

smembersA

Get all members of a Redis set.

Args: name: The Redis set key.

Returns: A list of values in the set or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Without annotations, the description partially covers behavior: it states the return type (list or error). However, it omits edge cases like empty sets, non-existent keys, or non-set keys. The read-only nature is implied but not explicitly stated.

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 with two short sections (Args, Returns), no redundant words. It is well-structured and front-loaded, earning its place with no waste.

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?

Given the tool's simplicity and the presence of an output schema, the description is minimally adequate but lacks completeness: it does not mention that the set is unordered, that the key must be a set type, or the behavior for missing keys.

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?

With 0% schema description coverage, the description compensates by explaining the single parameter 'name' as 'The Redis set key', adding semantic meaning beyond the schema's type-only definition. This is sufficient for a simple 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 clearly states the verb 'Get' and the resource 'all members of a Redis set', distinguishing it from siblings like sadd (add) and srem (remove). The purpose is direct and unambiguous.

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 like smembers vs. scan_keys for set iteration, or prerequisites like the key must be a set type. The description does not mention exclusions or context.

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

sremA

Remove a value from a Redis set.

Args: name: The Redis set key. value: The value to remove from the set.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must carry the burden. It only mentions a success or error message return, but does not discuss idempotency, behavior when the value is not in the set, or any permissions needed.

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 with three lines, no redundant information, and the main action is front-loaded. Each sentence adds value.

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?

Given the tool's simplicity and the presence of an output schema (not shown), the description is moderately complete. However, it lacks information on edge cases like non-existent keys or values, and could benefit from more context about error conditions.

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 0%, but the description explains each parameter: 'name: The Redis set key' and 'value: The value to remove from the set.' This adds meaning beyond the schema's type-only definitions, though could be slightly more detailed.

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 'Remove a value from a Redis set,' which is a specific verb and resource. This distinguishes it from sibling tools like sadd (add) and smembers (get all members).

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, nor any conditions or prerequisites for use. It lacks when-not-to-use or alternative tool mentions.

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

subscribeB

Subscribe to a Redis channel.

Args: channel: The Redis channel to subscribe to.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. The description only mentions returns a success or error message, but fails to disclose that subscribing to a Redis channel typically enters a blocking loop, which is critical for an agent to know.

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 with two sentences and an args/returns section. No unnecessary words, but could be more structured for agent parsing.

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?

Missing key context about subscription behavior (blocking, thread management). With an output schema present, the description still lacks enough to fully understand the tool's lifecycle.

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 description adds the explanation 'The Redis channel to subscribe to' for the single parameter. While basic, it adds meaning beyond the schema's string type. Schema coverage is 0%, so description partially compensates.

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 explicitly states 'Subscribe to a Redis channel' with a clear verb and resource. It distinguishes from sibling tools like 'unsubscribe' and 'publish'.

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 vs alternatives like 'unsubscribe' or 'publish'. Lacks context for prerequisites or subscription lifecycles.

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

typeA

Returns the string representation of the type of the value stored at key

Args: key (str): The key to check.

Returns: str: The type of key, or none when key doesn't exist

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses that the return value is a string and that 'none' is returned when the key doesn't exist, which is a key behavioral trait. Without annotations, the description carries the transparency burden and adequately conveys it is a read-only operation. It does not explicitly state 'no side effects,' but the nature implies it.

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: one sentence of purpose, followed by an Args and Returns section. Every sentence is necessary, and the structure (docstring-like) is clear and front-loaded with the key information. No waste.

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 simplicity (one parameter, no nested objects), the description fully covers its purpose, input, and output. The existence of an output schema is noted, but the description already states the return type and the special 'none' case. There is no missing information to use this 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 has 0% description coverage (only title and type). The description compensates by explaining that 'key' is the key to check, providing semantic meaning beyond the schema's minimal definition. It also indicates the return type and the 'none' case, adding value for parameter understanding.

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 the string representation of the type of the value stored at a key. It uses a specific verb ('Returns') and identifies the resource ('type of the value at key'). Among sibling tools like 'get' (returns value) or 'exists' (checks existence), 'type' is distinct and the description makes its 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 Guidelines3/5

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

The description states what the tool does but provides no explicit guidance on when to use it versus alternatives or when not to use it. While the purpose is clear, it lacks usage context like 'Use this to check the type of a key before performing type-specific operations.' The absence of when-not conditions or alternative mentions is a gap.

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

unsubscribeC

Unsubscribe from a Redis channel.

Args: channel: The Redis channel to unsubscribe from.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It only states that the tool returns 'a success message or an error message', which is vague. No information about side effects, idempotency, permissions required, or behavior on nonexistent subscriptions is disclosed.

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

Conciseness3/5

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

The description is short (three lines) and structured with Args and Returns sections. However, it sacrifices informative content for brevity, leaving out crucial details about usage and behavior. It is concise but not optimally helpful.

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 simple tool with one parameter and an output schema (implied but not shown), the description omits important context: whether unsubscribing is reversible, what constitutes a success/error message, and if the channel must be actively subscribed. The agent lacks sufficient information to use the tool confidently.

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

Parameters2/5

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

The schema description coverage is 0%, so the description must compensate. It repeats the parameter name ('channel') and adds 'The Redis channel to unsubscribe from', but this adds minimal meaning beyond the schema field name. No format, constraints, or examples are provided.

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 'unsubscribe' and the resource 'Redis channel', making the purpose obvious. It implicitly distinguishes from the sibling 'subscribe' tool, but does not explicitly mention the inverse relationship, which would strengthen clarity.

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 on when to use this tool versus alternatives. It does not mention prerequisites (e.g., must be subscribed to the channel) or that it should be paired with 'subscribe'. The agent has no context on appropriate usage scenarios.

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

vector_search_hashA

Perform a KNN vector similarity search using Redis 8 or later version on vectors stored in hash data structures.

Args: query_vector: List of floats to use as the query vector. index_name: Name of the Redis index. Unless specifically specified, use the default index name. vector_field: Name of the indexed vector field. Unless specifically required, use the default field name k: Number of nearest neighbors to return. return_fields: List of fields to return (optional).

Returns: A list of matched documents or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_vectorYes
index_nameNovector_index
vector_fieldNovector
kNo
return_fieldsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Since no annotations are provided, the description carries full burden. It states it returns 'a list of matched documents or an error message' but does not disclose side effects, performance characteristics, or confirm read-only nature. The operation is inherently a search, but transparency is adequate but not comprehensive.

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: a one-sentence summary followed by a structured Args list and Returns. It is front-loaded with the core purpose, and every sentence adds 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?

Given the complexity of KNN search and the presence of an output schema (as per context signals), the description provides essential details: version requirement, defaults, and parameter explanations. It could mention ordering or error specifics, but the output schema likely covers return format.

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 0%, so the description compensates well by explaining each parameter: query_vector as 'List of floats', defaults for index_name, vector_field, k, and return_fields. It adds domain context like 'KNN' and 'Redis 8', going beyond 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 clearly states 'Perform a KNN vector similarity search using Redis 8 or later version on vectors stored in hash data structures.' It specifies the verb (perform), resource (vectors in hash), and distinguishes from sibling tools like create_vector_index_hash and set_vector_in_hash.

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 lacks guidance on when to use this tool versus alternatives. It mentions a version requirement but does not explain when KNN search is appropriate or how it differs from other search/retrieval tools. No exclusions or alternatives are suggested.

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

xaddA

Add an entry to a Redis stream with an optional expiration time.

Args: key (str): The stream key. fields (dict): The fields and values for the stream entry. expiration (int, optional): Expiration time in seconds.

Returns: str: The ID of the added entry or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
fieldsYes
expirationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must disclose all behavioral traits. It mentions expiration but lacks details on side effects, error conditions, or permissions. The return format is briefly described but incomplete.

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?

Description is very concise: a single sentence summarizing purpose followed by parameter descriptions in a structured format. No redundant or unnecessary text.

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?

Despite many sibling tools, the description adequately covers the tool's function. The output schema is mentioned (returns str), but lacks details on error handling or behavior of expiration when not set.

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?

With 0% schema description coverage, the description adds significant meaning: key is 'stream key', fields is 'fields and values for the stream entry', expiration is 'expiration time in seconds'. This compensates well for the bare 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 specific verb 'Add' and resource 'entry to a Redis stream', and uniquely includes 'optional expiration time', which distinguishes it from sibling tools like xdel or xrange.

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 alternatives (e.g., lpush for lists, json_set for JSON). The description only states what it does without context for tool selection.

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

xdelB

Delete an entry from a Redis stream.

Args: key (str): The stream key. entry_id (str): The ID of the entry to delete.

Returns: str: Confirmation message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
entry_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states 'Delete an entry' and returns confirmation/error, lacking details on idempotency, prerequisites (e.g., stream existence), or 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 concise with a clear front-loaded action. It uses a standard docstring format (Args/Returns) without extra fluff. Could be slightly more streamlined.

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?

Given the simple tool (2 params, no nesting, output schema exists), the description covers basic functionality but lacks usage hints, error scenarios, or behavioral depth. Adequate but not thorough.

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 0%, but the description adds meaning by naming parameters and their types ('key (str)', 'entry_id (str)'). This partially compensates for the bare schema, though not extensively.

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 'Delete an entry from a Redis stream.', using a specific verb and resource. This distinguishes it from siblings like 'delete' (generic key deletion) and 'hdel' (hash field deletion).

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 like 'delete' or 'json_del'. No exclusions or context for selection are given.

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

xrangeC

Read entries from a Redis stream.

Args: key (str): The stream key. count (int, optional): Number of entries to retrieve.

Returns: str: The retrieved stream entries or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are absent, so the description carries full burden. It only states the return type as a string and mentions error messages. No disclosure of ordering (e.g., by time), range semantics, or idle handling. The agent gets minimal behavioral insight.

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, using a docstring format with Args and Returns sections. No redundant information. It is front-loaded with the purpose.

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?

Given the existence of a separate output schema, the return value is partially explained, but the description's 'str' return is too vague for stream entries. The tool has many siblings, yet no mention of typical Redis stream behavior (e.g., ID range, order). The description feels incomplete.

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 0% description coverage (no property descriptions). The description compensates by listing the key and count parameters with brief explanations. However, it omits the fact that xrange typically uses start/end IDs, leaving the count parameter's role incomplete.

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 'Read entries from a Redis stream' with a specific verb and resource. It distinguishes from sibling tools like xadd (write) and xdel (delete), but does not explicitly differentiate from other stream-reading methods like xread.

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 alternatives. There is no mention of prerequisites, limitations, or comparison to other stream reading approaches. The agent is left to infer usage context.

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

zaddB

Add a member to a Redis sorted set with an optional expiration time.

Args: key (str): The sorted set key. score (float): The score of the member. member (str): The member to add. expiration (int, optional): Expiration time in seconds.

Returns: str: Confirmation message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
scoreYes
memberYes
expirationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations provided. Description covers the basic operation, optional expiration, and return value. However, it omits standard Redis ZADD behavior (e.g., updating score if member exists) and effects of expiration on the key.

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?

Short, front-loaded with the main purpose. Uses a clear structured format with Args and Returns. Could be slightly more concise but no wasted sentences.

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?

Adequate for a simple Redis command. Lacks details on edge cases (e.g., duplicate member, error messages) and does not describe the return format beyond 'confirmation or error'. Output schema exists but no details provided.

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 has 0% description coverage. Description adds brief explanations for each parameter (key, score, member, expiration in seconds), adding meaning beyond the schema property names, though still minimal.

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?

Description clearly states the verb 'Add' and resource 'member to a Redis sorted set' with optional expiration. It distinguishes from siblings like zrange and zrem but not from sadd or other add operations.

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 alternatives (e.g., sadd for sets, zadd for sorted sets). Missing context about prerequisites or scenarios.

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

zrangeA

Retrieve a range of members from a Redis sorted set.

Args: key (str): The sorted set key. start (int): The starting index. end (int): The ending index. with_scores (bool, optional): Whether to include scores in the result.

Returns: str: The sorted set members in the given range or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
startYes
endYes
with_scoresNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It states the function returns members or an error, but does not mention that the operation is read-only or disclose any performance characteristics.

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, using a clear Python docstring format with Args and Returns sections. Each sentence is informative and there is no extraneous 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?

Given the tool has 4 parameters, no annotations, no nested objects, and an output schema, the description covers parameters and return value adequately. However, it could explicitly state that start and end are inclusive indices for completeness.

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?

Schema description coverage is 0%, meaning the description provides all parameter information. It adds meaning by explaining each parameter's role (e.g., 'with_scores (bool, optional): Whether to include scores'), going beyond the schema's type and default.

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 'Retrieve a range of members from a Redis sorted set,' using a specific verb and resource. This distinguishes it from sibling tools like lrange (for lists) and other z* commands.

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?

No explicit guidance on when to use this tool versus alternatives like lrange or zrangebyrank. The description does not mention when not to use it or provide context for choosing with_scores.

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

zremB

Remove a member from a Redis sorted set.

Args: key (str): The sorted set key. member (str): The member to remove.

Returns: str: Confirmation message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
memberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions return type (confirmation or error) but fails to disclose destructive nature, idempotency, or behavior when member does not exist (e.g., returns 0). Missing critical behavioral traits.

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 short and well-structured with clear Args and Returns sections. No unnecessary wording, but missing some details that could be included without bloating.

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?

Despite having many sibling tools, the description does not differentiate by emphasizing that this tool operates on sorted sets only. The return description is vague ('confirmation message or an error message'). Missing behavioral details that an output schema alone may not cover.

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 0%, so description compensates minimally by stating that 'key' is the sorted set key and 'member' is the member to remove. This adds meaning beyond parameter names, but no additional constraints or formats are provided.

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 'Remove a member' and the target 'Redis sorted set'. It distinguishes from sibling tools like srem (remove from set) and hdel (remove from hash) by specifying 'sorted set'.

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 alternatives (e.g., srem for regular sets). The description lacks context on prerequisites, such as the requirement that the key must be a sorted set, or when not to use it.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 44 tool updatesv0.3.5
    • First observedclient_list
    • First observedcreate_vector_index_hash
    • First observeddbsize
    • First observeddelete
    • First observedexpire
    • First observedget
    • First observedget_index_info
    • First observedget_indexed_keys_number
    • First observedget_indexes
    • First observedget_vector_from_hash
    • First observedhdel
    • First observedhexists
    • First observedhget
    • First observedhgetall
    • First observedhset
    • First observedinfo
    • First observedjson_del
    • First observedjson_get
    • First observedjson_set
    • First observedllen
    • First observedlpop
    • First observedlpush
    • First observedlrange
    • First observedpublish
    • First observedrename
    • First observedrpop
    • First observedrpush
    • First observedsadd
    • First observedscan_all_keys
    • First observedscan_keys
    • First observedset
    • First observedset_vector_in_hash
    • First observedsmembers
    • First observedsrem
    • First observedsubscribe
    • First observedtype
    • First observedunsubscribe
    • First observedvector_search_hash
    • First observedxadd
    • First observedxdel
    • First observedxrange
    • First observedzadd
    • First observedzrange
    • First observedzrem

TDQS

A3.5/5.0

Scored across 44 tools

Disambiguation5/5

Each tool targets a distinct Redis command or operation, with clear prefixes (h for hash, json for JSON, etc.) and no overlapping functionality. Even similar tools like scan_keys and scan_all_keys are well-differentiated by their return patterns.

Naming Consistency5/5

All tool names follow a consistent lowercase_with_underscores pattern, using prefixes for data types (h, json, z, x) and verbs for actions. There is no mixing of camelCase or other conventions.

Tool Count2/5

With 44 tools, this server significantly exceeds the typical well-scoped range (3-15). While many tools are justified by Redis's multiple data structures, the number is high enough to potentially overwhelm agents and suggests a need for consolidation.

Completeness5/5

The tool set covers all major Redis data types (strings, hashes, lists, sets, sorted sets, streams, JSON) plus pub/sub, key operations, server info, and vector search. Basic CRUD operations are present for each type, with no obvious gaps for typical use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
    99
    30
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    The official Redis MCP Server is a natural language interface designed for agentic applications to efficiently manage and search data in Redis.
    53
    617
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to perform comprehensive Redis database operations including managing strings, hashes, lists, sets, sorted sets, TTL management, and data backup/restore. Supports secure connections and provides batch operations for efficient Redis interaction through natural language.
    34
    12
    2
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive Redis database operations supporting all major data types (strings, lists, sets, hashes, sorted sets) with full CRUD functionality through natural language commands.
    9
    9
    MIT