Skip to main content
Glama
zvec-ai

zvec-mcp-server

Official
by zvec-ai

Zvec MCP Server

A Model Context Protocol (MCP) server for Zvec, a high-performance embedded vector database by Alibaba.

Overview

This MCP server enables LLMs to interact with Zvec vector database through well-designed tools. It provides comprehensive functionality for:

  • Collection Management: Create, open, and manage vector database collections

  • Document Operations: Insert, update, delete, and fetch documents with full CRUD support

  • Vector Search: Single-vector and multi-vector similarity search with re-ranking

  • Index Management: Create and manage vector indexes (HNSW, IVF, FLAT) for fast retrieval

  • AI Embedding: OpenAI-powered dense embedding with automatic text-to-vector conversion

Related MCP server: Qdrant MCP Server

Features

  • šŸš€ 17 Comprehensive Tools: Full API coverage for common vector database operations

  • šŸ¤– AI-Powered Embedding: Built-in OpenAI embedding for semantic search

  • šŸ“Š Multiple Response Formats: Support both JSON and Markdown output formats

  • šŸ” Multi-Vector Search: Combine multiple embeddings with advanced re-ranking

  • šŸŽÆ Hybrid Search: Combine vector similarity with scalar filters

  • šŸ›”ļø Type Safety: Full Pydantic v2 validation for all inputs

  • šŸ“ Rich Documentation: Detailed tool descriptions with examples

Installation

Requirements

  • Python 3.10 - 3.14

  • Supported platforms: Linux (x86_64, ARM64), macOS (ARM64), Windows (x86_64)

Install from PyPI

# Using uv (recommended)
uv pip install zvec-mcp-server

# Or using pip
pip install zvec-mcp-server

Install from Source

# Clone the repository
git clone https://github.com/zvec-ai/zvec-mcp-server.git
cd zvec-mcp-server

# Using uv (recommended)
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"

# Or using pip
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

Quick Start

Running the Server

# Using the installed package
python -m zvec_mcp

# Or with uv
uv run python -m zvec_mcp

# Test with MCP Inspector
npx @modelcontextprotocol/inspector python -m zvec_mcp

IDE Integration (Qoder/Cursor/Claude Desktop)

Add to your IDE's MCP configuration file:

Qoder MCP Config (~/.qoder/mcp.json or ~/.config/qoder/mcp.json):

{
  "mcpServers": {
    "zvec-mcp": {
      "command": "uvx",
      "args": ["zvec-mcp-server"],
      "env": {
        "OPENAI_API_KEY": "your-api-key",
        "OPENAI_BASE_URL": "https://api.openai.com/v1",
        "OPENAI_EMBEDDING_MODEL": "text-embedding-3-small"
      }
    }
  }
}

Claude Desktop Config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "zvec-mcp": {
      "command": "uvx",
      "args": ["zvec-mcp-server"],
      "env": {
        "OPENAI_API_KEY": "your-api-key"
      }
    }
  }
}

Environment Variables:

  • OPENAI_API_KEY (required): OpenAI API key for embedding generation

  • OPENAI_BASE_URL (optional): Custom API endpoint (e.g., for DashScope)

  • OPENAI_EMBEDDING_MODEL (optional): Model name, default is text-embedding-3-small

Basic Usage Example

# 1. Create and open a collection
create_and_open_collection({
    "path": "./my_vectors",
    "collection_name": "docs_col",
    "vector_fields": [
        {
            "name": "embedding",
            "data_type": "VECTOR_FP32",
            "dimension": 1536
        }
    ],
    "scalar_fields": [
        {
            "name": "title",
            "data_type": "STRING",
            "nullable": False
        }
    ]
})

# 2. Insert documents with auto-generated embeddings (requires OPENAI_API_KEY)
embedding_write({
    "collection_name": "docs_col",
    "field_name": "embedding",
    "documents": [
        {
            "id": "doc1",
            "text": "This is a sample document about machine learning.",
            "fields": {"title": "ML Introduction"}
        }
    ]
})

# 3. Semantic search with natural language query
embedding_search({
    "collection_name": "docs_col",
    "field_name": "embedding",
    "query_text": "artificial intelligence and neural networks",
    "topk": 10
})

Available Tools

Collection Management (4 tools)

  • create_and_open_collection - Create new collection with schema and auto-create indexes

  • open_collection - Open existing collection into session cache

  • get_collection_info - Get schema and statistics

  • destroy_collection - Permanently delete collection

Document Operations (5 tools)

  • insert_documents - Insert new documents (fail if exists)

  • upsert_documents - Insert or update documents

  • update_documents - Update existing documents

  • delete_documents - Delete documents by ID

  • fetch_documents - Retrieve documents by ID

Vector Search (2 tools)

  • vector_query - Single-vector similarity search with optional filtering

  • multi_vector_query - Multi-vector search with re-ranking (Weighted/RRF)

Index Management (3 tools)

  • create_index - Create vector index (HNSW/IVF/FLAT) or scalar index (INVERT)

  • drop_index - Remove index from field

  • optimize_collection - Optimize collection for better performance

AI Embedding (3 tools)

  • generate_dense_embedding - Generate embedding for text using OpenAI API

  • embedding_write - Auto-embed text documents and upsert to collection

  • embedding_search - Natural language semantic search with auto-embedding

Tool Details

Vector Data Types

  • VECTOR_FP32, VECTOR_FP64, VECTOR_FP16 - Dense float vectors

  • VECTOR_INT8 - Dense integer vectors

  • SPARSE_VECTOR_FP32, SPARSE_VECTOR_FP16 - Sparse vectors (Dict[int, float])

Scalar Data Types

  • INT32, INT64, UINT32, UINT64 - Integer types

  • FLOAT, DOUBLE - Floating point types

  • STRING, BOOL - Text and boolean

Index Types

Vector Indexes:

  • HNSW - Hierarchical Navigable Small World (recommended for most cases)

  • IVF - Inverted File Index (good for large datasets)

  • FLAT - Brute-force exact search (small datasets)

Scalar Indexes:

  • INVERT - Inverted index for scalar fields with optional range optimization

Distance Metrics

  • COSINE - Cosine similarity

  • IP - Inner product

  • L2 - Euclidean distance

Re-ranking Strategies (Multi-Vector Query)

  • WEIGHTED - Weighted score fusion with custom weights per field

  • RRF - Reciprocal Rank Fusion (rank-based fusion)

Architecture

Modular Structure

zvec-mcp-server/
ā”œā”€ā”€ src/
│   └── zvec_mcp/
│       ā”œā”€ā”€ __init__.py       # Package entry point
│       ā”œā”€ā”€ server.py         # MCP server implementation (17 tools)
│       ā”œā”€ā”€ schemas.py        # Pydantic input validation models
│       ā”œā”€ā”€ types.py          # Enums and type definitions
│       └── utils.py          # Helper functions and formatters
ā”œā”€ā”€ tests/
│   └── test_server.py        # Pytest test suite
ā”œā”€ā”€ pyproject.toml            # Project configuration
ā”œā”€ā”€ README.md                 # This file
ā”œā”€ā”€ CONTRIBUTING.md           # Contribution guidelines
└── LICENSE                   # Apache 2.0 License

MCP Resources

The server exposes two MCP resources for introspection:

  • zvec://collections - List all opened collections in the current session

  • zvec://collection/{collection_name} - Get detailed schema and stats for a specific collection

Error Handling

All tools provide clear, actionable error messages:

  • Resource not found errors with suggestions

  • Validation errors from Pydantic v2

  • Zvec API errors with context

Response Formats

Tools support two output formats:

  • JSON: Structured data for programmatic processing

  • Markdown: Human-readable formatted text with headers and lists

Development

Running Tests

The project includes a comprehensive pytest test suite with 21 test cases covering all functionality.

# Install dev dependencies (includes pytest and pytest-asyncio)
uv pip install -e ".[dev]"

# Run all tests
pytest tests/test_server.py -v

References

License

Apache 2.0

Contributing

Please see CONTRIBUTING.md for guidelines on how to contribute to this project.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Available Tools

17 tools
create_and_open_collectionA

Create a new Zvec collection and open it for use.

This tool creates a new vector database collection at the specified path with the given schema definition. The collection is automatically opened and cached for subsequent operations. Use this when you need to initialize a new vector database.

Args: params (CreateCollectionInput): Validated input parameters containing: - path (str): Filesystem path where collection will be created (e.g., './my_vectors') - collection_name (str): Name of the collection (also used as unique session key) - vector_fields (List[VectorFieldInput]): Vector field definitions (required, min 1); each field may include an optional index_param to auto-create its index - scalar_fields (Optional[List[ScalarFieldInput]]): Scalar field definitions; each field may also include an optional index_param

Returns: str: Success message with collection details or error message

Examples: - Use when: "Create a new collection for storing document embeddings" - Use when: "Initialize a vector database at ./embeddings with 768-dim vectors" - Don't use when: Collection already exists (use open_collection instead)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses that the collection is 'automatically opened and cached for subsequent operations', which is useful behavioral context. It also mentions the return value is a success or error message. No contradictions with annotations.

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

Conciseness5/5

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

The description is concise, well-organized with a brief summary, Args section, Returns, and Examples. It is front-loaded and every sentence provides useful information without unnecessary fluff.

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

Completeness5/5

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

Given the complexity of the tool (many nested parameter types), the description covers purpose, usage, parameter roles, side effect (auto-open and caching), return value, and examples. It is complete enough for an agent to correctly invoke the 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?

Although the schema has detailed descriptions, the description's Args section adds context like 'unique session key' for collection_name and 'min 1' for vector_fields. With schema coverage reported as 0%, the description compensates by summarizing parameter roles and constraints, adding value 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 explicitly states 'Create a new Zvec collection and open it for use', which is a specific verb-resource pairing. It distinguishes from siblings like 'open_collection' by noting this tool creates and automatically opens, while 'open_collection' is for existing collections.

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

Usage Guidelines5/5

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

The description includes explicit guidance: 'Use this when you need to initialize a new vector database' and 'Don't use when: Collection already exists (use open_collection instead)'. It provides examples for when to use and when not, making it clear for the agent.

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

create_indexA

Create an index on a field to accelerate queries.

Use HnswIndexParamInput / FlatIndexParamInput / IVFIndexParamInput for vector fields, and InvertIndexParamInput for scalar fields.

Args: params (CreateIndexInput): Validated input parameters containing: - collection_name (str): Collection identifier - field_name (str): Name of the field to index - index_param: One of HnswIndexParamInput, FlatIndexParamInput, IVFIndexParamInput, or InvertIndexParamInput (use 'type' field as discriminator)

Returns: str: Success message or error message

Examples: - Use when: "Create an HNSW index on the embedding field" - Use when: "Build an inverted index on the category scalar field"

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

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?

The description discloses that the tool creates an index, which is consistent with readOnlyHint=false. It mentions that the index accelerates queries. However, it does not specify what happens if the index already exists (overwrite? error?) or any prerequisites like required permissions or collection existence. Given the annotations provide little additional context, the description could be more transparent.

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

Conciseness4/5

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

The description is well-structured with a clear purpose statement, conditional usage guidelines, an Args section, and examples. It avoids unnecessary repetition. Slightly longer than necessary but each sentence contributes 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?

The description covers the main variants (vector vs scalar indexes) and mentions the return type. However, it does not address important contextual aspects such as whether the index creation is idempotent, what happens on failure, or prerequisites like requiring an existing collection and field. Given the tool's complexity, this information would be useful for an agent to invoke correctly.

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

Parameters3/5

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

The input schema already contains descriptions for all parameters (collection_name, field_name, index_param with sub-schemas). The description adds minimal extra semantics by providing examples and stating the tool uses validated input parameters. Schema description coverage is high due to the detailed schema, so the description's added value is marginal.

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: 'Create an index on a field to accelerate queries.' It uses a specific verb-resource pair and distinguishes itself from siblings like 'drop_index' and 'destroy_collection' by focusing on creation of indexes. The mention of different index types (HNSW, Flat, IVF, Invert) 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 Guidelines4/5

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

The description provides explicit guidance on when to use each index parameter type: HnswIndexParamInput/FlatIndexParamInput/IVFIndexParamInput for vector fields and InvertIndexParamInput for scalar fields. However, it lacks explicit guidance on when not to use this tool (e.g., if an index already exists or if the collection doesn't exist), so it's not a 5.

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

delete_documentsB
DestructiveIdempotent

Delete documents by their IDs.

Args: params (DeleteDocumentsInput): Validated input parameters containing: - collection_name (str): Collection identifier - document_ids (List[str]): Document IDs to delete

Returns: str: Success message with deletion count or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

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?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds that it returns a deletion count or error message, but does not elaborate on side effects like whether deletion is hard/soft, permissions required, or impact on related data.

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 relatively concise with a clear opening sentence. However, the docstring-style Args/Returns adds slight verbosity. It is well-structured 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?

Given the destructive nature, the description covers the return type but lacks details on error handling, validation failures, or partial success scenarios. The schema covers input completeness but behavior is minimally described.

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 redundantly lists the same parameters already documented in the input schema (collection_name, document_ids). With schema descriptions present for both fields, the description adds no new meaning; it only restates them.

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') and resource ('documents by their IDs'). It distinguishes from sibling tools like insert, fetch, update, etc., which perform different operations. The purpose is immediately clear.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives such as update_documents or upsert_documents. The description does not mention prerequisites, error conditions, or scenarios where deletion is appropriate.

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

destroy_collectionA
Destructive

Permanently delete a collection from disk.

WARNING: This operation is irreversible. All data will be permanently lost.

Args: params (DestroyCollectionInput): Validated input parameters containing: - collection_name (str): Collection identifier

Returns: str: Success confirmation or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior5/5

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

Annotations already provide destructiveHint: true and readOnlyHint: false. The description goes beyond by explicitly stating 'This operation is irreversible. All data will be permanently lost.' This adds critical context about the permanence and impact, matching the annotations without contradiction.

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

Conciseness4/5

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

The description is concise (4 sentences) and front-loaded with the purpose. The Args section is somewhat redundant with the schema but still clear. The warning is appropriately placed. 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 annotations and output schema (returning a string), the description covers the core intent, irreversibility, parameter, and return. Minor gaps: does not specify that the collection must exist or handle error cases, but these are not critical for a delete operation with annotations.

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% (description does not describe params; schema only lists 'collection_name' with minimal description). The description's Args section calls 'collection_name' a 'Collection identifier,' adding some semantic meaning but not enough to compensate for the lack of param details in the schema.

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

Purpose5/5

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

The description clearly states the tool's primary function: 'Permanently delete a collection from disk.' The verb 'delete' and resource 'collection' are specific. The tool is distinct from siblings like 'delete_documents' (deletes documents, not collection) and 'drop_index' (drops index).

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 includes a warning about irreversibility, implying permanent deletion. However, it does not explicitly state when to use this tool versus alternatives (e.g., 'drop_index' for indexes) or provide guidance on prerequisites like ensuring the collection is not in use.

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

drop_indexB
DestructiveIdempotent

Remove the index from a field.

Args: params (DropIndexInput): Validated input parameters containing: - collection_name (str): Collection identifier - field_name (str): Name of the indexed field

Returns: str: Success message or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true, so the description adds little beyond disclosing the return format (success or error message). It does not elaborate on behavioral aspects like idempotency behavior (e.g., dropping a non-existent index) or potential side effects on collections.

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, consisting of one sentence explaining the tool's purpose followed by a structured parameter list and return type. Every sentence adds value, and the key action is front-loaded.

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 that this is a destructive tool (annotations show destructiveHint=true) with sibling tools like 'create_index' and 'destroy_collection', the description is insufficient. It omits important context such as whether the index must exist, the behavior if it doesn't, and the exact format of the return string. The presence of an output schema is not leveraged to explain return values.

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 description merely rephrases the schema's parameter descriptions ('Collection identifier', 'Name of the indexed field') without adding constraints, examples, or format details. With schema description coverage at 0%, the description fails to compensate by providing meaningful semantic enrichment.

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

Purpose5/5

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

The description clearly states the tool's function: 'Remove the index from a field.' This provides a specific verb and resource, distinguishing it from sibling tools like 'create_index' (which creates an index) and 'destroy_collection' (which removes entire collections).

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like 'create_index' or 'destroy_collection'. The description does not mention prerequisites, such as the need for the collection to be open or the index to exist, nor does it suggest alternative actions.

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

embedding_writeA

Embed text documents and upsert them into a Zvec collection.

Converts each document's text field to a dense vector using OpenAIDenseEmbedding, then upserts all documents into the specified collection. This is the high-level write interface: supply plain text, get vectors stored automatically.

OpenAI connection is read from environment variables: OPENAI_API_KEY, OPENAI_BASE_URL (optional), OPENAI_EMBEDDING_MODEL (optional). The embedding dimension is inferred from the collection schema automatically.

Args: params (EmbeddingWriteInput): - collection_name: Target collection - field_name: Vector field to populate - documents: List of {id, text, fields} — text is auto-embedded

Returns: str: Success message with upsert count, or error

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

The description discloses the use of OpenAI for embedding, environment variables, and automatic dimension inference, adding context beyond the annotations. Annotations already indicate non-destructive (destructiveHint=false) and readOnlyHint=false, and the description does not contradict them. It could further mention potential overwrite on upsert.

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 (4 sentences), front-loaded with the main action, and includes an Args/Returns section. However, the Args section largely duplicates schema information, slightly reducing efficiency.

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 complexity, the description covers core aspects: action, embedding mechanism, environment configuration, and return message. An output schema exists, reducing need for detailed return documentation. Leaves out error handling and performance considerations.

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's properties already have descriptions covering all parameters (collection_name, field_name, documents, and their sub-properties). The description adds marginal value by summarizing the OpenAI connection and dimension inference, but the schema provides the bulk of parameter semantics. Baseline 3 appropriate.

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

Purpose5/5

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

The description uses specific verbs ('embed' and 'upsert') and identifies the resource ('Zvec collection'), clearly distinguishing it from sibling tools like 'generate_dense_embedding' which only creates embeddings, and 'upsert_documents' which likely does not auto-embed.

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 implies it is the high-level write interface but does not explicitly state when to use this tool versus alternatives like 'generate_dense_embedding' or 'insert_documents'. No when-not-to-use or exclusion criteria are provided.

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

fetch_documentsB
Read-onlyIdempotent

Retrieve documents by their IDs.

Args: params (FetchDocumentsInput): Validated input parameters containing: - collection_name (str): Collection identifier - document_ids (List[str]): Document IDs to fetch - response_format (ResponseFormat): Output format

Returns: str: Documents in the requested format or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

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?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds only response format detail; does not explain error behavior for missing IDs.

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 fairly concise at 10 lines with clear Args/Returns structure, though could be more front-loaded and less redundant.

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?

Lacks mention of error cases, collection openness (openWorldHint=false), or handling of missing IDs; adequate for a simple fetch but incomplete for robustness.

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 lists params but largely repeats schema descriptions; adds no new semantics beyond what schema provides. Baseline score due to schema detail.

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 states 'Retrieve documents by their IDs' – a specific verb+resource that clearly differentiates from sibling search tools like embedding_search and vector_query.

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; it does not mention direct ID lookup vs search nor any preconditions.

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

generate_dense_embeddingA
Read-onlyIdempotent

Generate a dense embedding vector for a piece of text using OpenAIDenseEmbedding.

Converts text into a fixed-length dense vector via the OpenAI (or compatible) embedding API. The resulting vector can be directly used for similarity search.

Args: params (GenerateDenseEmbeddingInput): - text: Text to embed - api_key: OpenAI API key (or OPENAI_API_KEY env var) - base_url: Custom API base URL for OpenAI-compatible endpoints - model: Embedding model name (default: text-embedding-3-small) - dimension: Output vector dimension (default: 1536)

Returns: str: JSON with text preview, model, dimension, and the dense vector

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

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?

Annotations already indicate readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is clear. The description adds return format details (JSON with preview, model, dimension, vector) but does not disclose behavioral traits like rate limits, cost implications, or fallback behavior when env vars are missing, which would be valuable given the reliance on an external API.

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

Conciseness4/5

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

The description is well-structured with an opening sentence stating the purpose, followed by an Args list and return type. It is appropriately sized for the complexity of the tool, though the bullet list could be slightly more concise. No redundant information is present.

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

Completeness5/5

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

The description provides a complete picture of the tool's behavior: what it does, how to use it (parameters with defaults and env var fallbacks), and what it returns (JSON with specific fields). No output schema is provided, so the description compensates fully. The tool is simple and the description covers all necessary information for correct invocation.

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

Parameters4/5

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

Despite schema description coverage being 0% (schema has descriptions for each parameter), the tool description adds meaningful context beyond the schema by summarizing each parameter with defaults and env var fallback (e.g., 'api_key: OpenAI API key (or OPENAI_API_KEY env var)'). This helps an agent understand the parameter semantics without inspecting the schema.

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

Purpose5/5

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

The description clearly states the tool generates a dense embedding vector from text using OpenAIDenseEmbedding, with explicit mention of converting text into a fixed-length vector for similarity search. This distinct purpose is well differentiated from sibling tools like embedding_search or vector_query, which use embeddings rather than generate them.

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 use for generating embeddings for similarity search but does not explicitly state when to use this tool versus alternatives like embedding_search or vector_query. No exclusion criteria or comparison to siblings is provided, leaving the agent to infer usage without clear guidance.

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

get_collection_infoA
Read-onlyIdempotent

Get detailed information about an opened collection.

Retrieves schema definition, statistics, and configuration of a collection.

Args: params (GetCollectionInfoInput): Validated input parameters containing: - collection_name (str): Collection identifier - response_format (ResponseFormat): Output format ('markdown' or 'json')

Returns: str: Collection information in the requested format or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description adds value by specifying what information is retrieved (schema, stats, config) and that the collection must be opened. No negative behaviors hidden.

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 reasonably concise at around 70 words, with a clear front-loaded purpose. The inclusion of args and returns is helpful, though it could be slightly tighter.

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, the description adequately covers the tool's behavior: it requires an opened collection and returns formatted info. It does not detail the structure of the returned info, but output schema fills that gap.

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

Parameters3/5

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

The input schema already provides clear descriptions for both parameters (collection name and response format). The description adds minimal extra meaning beyond confirming they are validated.

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 detailed information about an opened collection, specifying schema, statistics, and configuration. It distinguishes well from sibling tools that perform mutations or searches.

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 inspecting collection details but does not explicitly state when to use this over alternatives like open_collection or when not to use it. No exclusions or context provided.

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

insert_documentsA

Insert new documents into a collection.

Documents must have unique IDs and conform to the collection schema. This operation fails if a document with the same ID already exists.

Args: params (InsertDocumentsInput): Validated input parameters containing: - collection_name (str): Collection identifier - documents (List[DocumentInput]): Documents to insert

Returns: str: Success message with insertion count or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate this is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds specific mutation behavior: insertion with uniqueness constraint, failure on duplicate ID, and return of success message with count or error. This provides useful context beyond annotations.

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

Conciseness4/5

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

The description is concise, front-loaded with purpose, and includes structured Args/Returns sections. It avoids verbosity, though the Args section partially duplicates schema information. Still efficient and clear.

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 a single parameter (nested) and an output schema, the description covers the essentials: purpose, constraints, input structure, output type (string with success/error). It explains the failure case but does not detail validation or side effects beyond annotations. Adequate for its complexity.

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

Parameters3/5

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

The description repeats parameter names (collection_name, documents) and document fields (id, vectors, fields) from the schema, but adds minimal new meaning. The schema already provides detailed descriptions for each property, so the description adds no new semantics. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Insert new documents into a collection.' and specifies constraints: 'Documents must have unique IDs and conform to the collection schema. This operation fails if a document with the same ID already exists.' This distinguishes it from siblings like upsert_documents or update_documents.

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 inserting new documents with unique IDs, but does not explicitly state when to avoid this tool or suggest alternatives such as upsert_documents or update_documents. Given sibling tools, more explicit guidance would improve differentiation.

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

multi_vector_queryA
Read-onlyIdempotent

Perform multi-vector similarity search with score fusion and re-ranking.

This tool searches across multiple vector embeddings simultaneously and combines their results using a re-ranking strategy. This is useful when documents have multiple types of embeddings (e.g., dense + sparse, text + image).

Args: params (MultiVectorQueryInput): Validated input parameters containing: - collection_name (str): Collection identifier - vectors (List[MultiVectorQuerySpec]): List of vector queries (min 2) - topk (int): Candidates to retrieve from each vector field (default: 10) - topn (int): Final documents to return after re-ranking (default: 5) - reranker_type (str): 'weighted' or 'rrf' (default: weighted) - weights (Optional[Dict[str, float]]): Field weights for weighted re-ranker - rank_constant (int): RRF rank constant (default: 60) - metric_type (str): Metric for weighted re-ranker (default: IP) - filter (Optional[str]): Filter expression - response_format (str): Output format

Returns: str: Re-ranked search results or error message

Examples: - Use when: "Search using both dense and sparse embeddings" - Use when: "Combine text and image similarity for multi-modal search"

Re-ranking Strategies: - Weighted: Combines normalized scores with custom weights per field Best when scores are comparable and you know field importance - RRF (Reciprocal Rank Fusion): Combines based on rank positions only Best when scores use different metrics/scales or prefer tuning-free approach

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about the search and fusion process, explaining that results are re-ranked and returned, without contradicting annotations. It discloses the return format and that no side effects occur.

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

Conciseness5/5

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

Well-structured with sections for Args, Returns, Examples, and Re-ranking Strategies. Every sentence is informative and concise, avoiding redundancy. The length is appropriate for the tool's 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?

Given the tool's complexity (multi-vector fusion, two re-ranking methods), the description covers all necessary aspects: input parameters, output format, use cases, and strategy comparisons. The output schema exists, so no need to detail return structure further. Complete and self-contained.

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?

The description thoroughly explains the 'params' argument, breaking down each sub-field (collection_name, vectors, topk, topn, reranker_type, weights, rank_constant, metric_type, filter, response_format) with examples and rationale for re-ranking strategies. This adds significant value beyond the input schema's own descriptions.

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

Purpose5/5

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

The title and first sentence clearly state the tool performs multi-vector similarity search with score fusion and re-ranking. It distinguishes itself from single-vector search (vector_query) by specifying multiple embeddings, and from embedding_search by mentioning fusion and re-ranking.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' examples (e.g., 'Search using both dense and sparse embeddings') and compares re-ranking strategies (Weighted vs. RRF) with guidance on when to choose each. This helps the agent decide between this tool and alternatives.

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

open_collectionA
Idempotent

Open an existing Zvec collection from disk.

This tool opens a previously created collection and caches it for subsequent operations. The collection must have been created with zvec_create_and_open_collection.

Args: params (OpenCollectionInput): Validated input parameters containing: - path (str): Filesystem path of the existing collection - collection_name (str): Unique session identifier for caching - read_only (bool): Open in read-only mode (default: False)

Returns: str: Success message with collection details or error message

Examples: - Use when: "Open the collection at ./my_vectors" - Use when: "Load existing vector database from ./embeddings" - Don't use when: Collection doesn't exist (use create_and_open_collection)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate idempotentHint=true and readOnlyHint=false, so the tool is idempotent and may involve state changes. The description adds behavioral context: caching for subsequent operations, prerequisite that the collection was created with create_and_open, and that it returns success/error messages. It does not contradict annotations, which is good, and provides additional detail beyond the annotations.

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

Conciseness5/5

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

The description is concise and well-structured: a brief intro, clearly labeled Args and Returns sections, and concise examples. Every sentence serves a purpose with no redundant information, achieving a high signal-to-noise ratio.

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 (open an existing collection) and the presence of an output schema, the description is complete. It covers the prerequisite, caching behavior, and error conditions, leaving no significant gaps for an AI agent to understand what the tool does and how to use it 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?

Although the input schema already has descriptions for each property (e.g., 'path', 'collection_name', 'read_only'), the description adds value by summarizing the parameters contextually and giving example usage. However, since schema coverage is effectively high (descriptions exist in schema), the description's contribution is moderate but helpful.

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 'Open an existing Zvec collection from disk,' specifying the verb (open) and resource (existing Zvec collection). It distinguishes from sibling tool create_and_open_collection by emphasizing 'existing' and referencing the creation tool, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit usage instructions with 'Use when' and 'Don't use when' examples, including a direct alternative mention: 'Don't use when: Collection doesn't exist (use create_and_open_collection).' This gives clear context for when to invoke this tool versus alternatives.

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

optimize_collectionA
Idempotent

Optimize the collection (e.g., merge segments, rebuild index).

This operation improves query performance and reduces storage overhead.

Args: params (OptimizeCollectionInput): Validated input parameters containing: - collection_name (str): Collection identifier

Returns: str: Success message or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

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?

Annotations already indicate idempotency and non-destructiveness. The description adds specific behavioral details (merge segments, rebuild index) and return type, but does not mention concurrency or locks.

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, front-loaded with the core purpose, and organized with Args and Returns sections. No unnecessary information.

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

Completeness5/5

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

For a simple tool with one parameter and an output schema, the description covers the operation's effect, input, and return value sufficiently. No gaps.

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?

Despite context signals showing 0% schema description coverage, the tool description clearly documents the required parameter collection_name with its meaning. This compensates fully.

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 it optimizes collections (merge segments, rebuild index) to improve performance and reduce storage, distinguishing it from creation/deletion tools among siblings.

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

Usage Guidelines3/5

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

The description implies optimization for better performance but lacks explicit guidance on when to use vs. alternatives or when not to use it. No comparison to sibling tools is provided.

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

update_documentsA
Idempotent

Update existing documents by ID.

Only specified fields are updated; others remain unchanged. Documents must already exist.

Args: params (UpdateDocumentsInput): Validated input parameters containing: - collection_name (str): Collection identifier - documents (List[DocumentInput]): Documents with updates

Returns: str: Success message with update count or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

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?

Adds beyond annotations: 'Only specified fields are updated; others remain unchanged' and 'Documents must already exist.' Consistent with idempotentHint=true. No contradictions.

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

Conciseness5/5

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

Well-structured with clear sections, no fluff. 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?

Given output schema (success/error message), description adequately covers input and behavior. However, could better contrast with sibling tools.

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?

Despite 0% schema coverage, the description provides detailed Args section explaining each parameter (collection_name, documents) and nested DocumentInput fields (id, vectors, fields). Adds significant meaning.

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 'Update existing documents by ID' and explains partial update behavior. Differentiates from siblings like insert_documents and delete_documents.

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?

Mentions documents must exist, implying not for creation, but lacks explicit guidance on when to update versus upsert or insert. No direct comparison with alternatives.

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

upsert_documentsA
Idempotent

Insert new documents or update existing ones by ID.

This operation inserts documents if they don't exist, or updates them if they do.

Args: params (UpsertDocumentsInput): Validated input parameters containing: - collection_name (str): Collection identifier - documents (List[DocumentInput]): Documents to upsert

Returns: str: Success message with upsert count or error message

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

The description explains the upsert logic (insert if missing, update if exists) and mentions return type (success message with count). Annotations only provide idempotentHint, so the description adds behavioral detail beyond structured data.

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 (two paragraphs plus parameter listing) and front-loaded with the core operation. Every sentence serves a purpose, though the parameter listing could be 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 the basic operation and return type, but lacks details on error scenarios, default values, or limitations. Given the presence of an output schema (not shown) and rich input schema, it is minimally adequate but could be more complete.

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 description restates parameter names and types from the schema without adding new meaning. Since schema descriptions are already detailed (e.g., DocumentInput fields), the tool description offers minimal additional semantic 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 tool's purpose with specific verb and resource: 'Insert new documents or update existing ones by ID.' This distinguishes it from sibling tools like insert_documents and update_documents.

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 does not provide guidance on when to use upsert versus insert or update, nor does it mention prerequisites or exclusions. It only describes the combined behavior, 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.

vector_queryA
Read-onlyIdempotent

Perform vector similarity search with optional filtering.

This tool searches for the most similar documents based on vector similarity. Optionally apply scalar filters to restrict results to a subset of documents.

Args: params (VectorQueryInput): Validated input parameters containing: - collection_name (str): Collection identifier - field_name (str): Name of the vector field to query - vector (List[float]): Query vector - topk (int): Number of results to return (default: 10, max: 1000) - filter (Optional[str]): Filter expression (e.g., 'age > 25 AND city == "NYC"') - response_format (ResponseFormat): Output format

Returns: str: Search results sorted by similarity score or error message

Examples: - Use when: "Find the 10 most similar documents to this embedding" - Use when: "Search for similar vectors with age > 30" - Filter syntax: "field_name > value", "field == 'string'", combined with AND/OR

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

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?

Annotations already indicate read-only, non-destructive, idempotent. The description adds context about returning sorted results or errors, and specifies constraints like topk max=1000. No contradictions.

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

Conciseness5/5

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

Well-organized with clear sections (purpose, args, returns, examples). Front-loaded with main action. Every sentence contributes meaning without fluff.

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?

Explains main functionality and parameters well, but lacks details on the exact structure of returned search results (e.g., whether it includes scores or metadata). Adequate for a similarity search tool with good schema and annotations.

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

Parameters4/5

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

The input schema already has descriptions for all nested properties, so baseline is 3. The description adds value by providing filter syntax examples and clarifying the purpose of each parameter in context, but it largely replicates schema info.

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 vector similarity search with optional filtering' with a specific verb and resource. It distinguishes itself from siblings like multi_vector_query by focusing on single-vector search with filters.

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

Usage Guidelines4/5

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

Provides explicit use cases (e.g., 'Find the 10 most similar documents') and filter syntax examples. However, it does not mention when not to use it or compare to alternative sibling tools like multi_vector_query.

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. Dates show when Glama detected each change.

  1. 17 tool updatesv0.1.0
    • First observedcreate_and_open_collection
    • First observedcreate_index
    • First observeddelete_documents
    • First observeddestroy_collection
    • First observeddrop_index
    • First observedembedding_search
    • First observedembedding_write
    • First observedfetch_documents
    • First observedgenerate_dense_embedding
    • First observedget_collection_info
    • First observedinsert_documents
    • First observedmulti_vector_query
    • First observedopen_collection
    • First observedoptimize_collection
    • First observedupdate_documents
    • First observedupsert_documents
    • First observedvector_query

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct operation: collection lifecycle (create/open/destroy/info/optimize), document CRUD (insert/update/upsert/delete/fetch), index management (create/drop), and search variants (vector_query, embedding_search, multi_vector_query). There is no apparent overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (e.g., create_and_open_collection, fetch_documents, generate_dense_embedding). There is no mixing of conventions, and the naming clearly conveys the action and resource.

Tool Count5/5

17 tools cover the full vector database workflow without being excessive. Each tool serves a clear purpose, from collection management to high-level embedding search, making the surface appropriately scoped.

Completeness4/5

The tool set covers most essential operations: collection CRUD, document CRUD, indexing, multiple search modes, and embedding generation. A minor gap is the lack of a tool to list all available collections, which may require external file system access, but the core workflow is complete.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides advanced document search and processing capabilities through vector stores, including PDF processing, semantic search, web search integration, and file operations. Enables users to create searchable document collections and retrieve relevant information using natural language queries.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables semantic search and document management using a local Qdrant vector database with OpenAI embeddings. Supports natural language queries, metadata filtering, and collection management for AI-powered document retrieval.
    72
    37
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables large language models to interact with Milvus vector databases through natural language, supporting semantic search with built-in OpenAI-compatible embedding services and comprehensive collection management.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to store, search, and manage a local vector database for RAG knowledge retrieval and long-term memory, powered by zvec.
    1
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zvec-ai/zvec-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server