Skip to main content
Glama
avaazquezz

io.github.avaazquezz/mcp-qdrant

by avaazquezz

qdrant_points_count

Read-onlyIdempotent

Count points in a Qdrant collection, optionally applying payload filters, to verify total or filtered record volume.

Instructions

Count points in a collection, optionally matching a filter.

    Example: {"collection_name": "docs"}
    

Input Schema

NameRequiredDescriptionDefault
exactNo
count_filterNo
collection_nameYes

Output Schema

NameRequiredDescriptionDefault
countYesNumber of points which satisfy the conditions

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.6.0
    • removedInput schema / $defs
      Removed value: -{
      -  "DatetimeRange": {
      -    "additionalProperties": false,
      -    "description": "Range filter request",
      -    "properties": {
      -      "gt": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "type": "string"
      -          },
      -          {
      -            "format": "date",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key > range.gt",
      -        "title": "Gt"
      -      },
      -      "gte": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "type": "string"
      -          },
      -          {
      -            "format": "date",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key >= range.gte",
      -        "title": "Gte"
      -      },
      -      "lt": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "type": "string"
      -          },
      -          {
      -            "format": "date",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key < range.lt",
      -        "title": "Lt"
      -      },
      -      "lte": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "type": "string"
      -          },
      -          {
      -            "format": "date",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key <= range.lte",
      -        "title": "Lte"
      -      }
      -    },
      -    "title": "DatetimeRange",
      -    "type": "object"
      -  },
      -  "FieldCondition": {
      -    "additionalProperties": false,
      -    "description": "All possible payload filtering conditions",
      -    "properties": {
      -      "geo_bounding_box": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/GeoBoundingBox"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check if points geolocation lies in a given area"
      -      },
      -      "geo_polygon": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/GeoPolygon"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check if geo point is within a given polygon"
      -      },
      -      "geo_radius": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/GeoRadius"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check if geo point is within a given radius"
      -      },
      -      "is_empty": {
      -        "anyOf": [
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check that the field is empty, alternative syntax for `is_empty: 'field_name'`",
      -        "title": "Is Empty"
      -      },
      -      "is_null": {
      -        "anyOf": [
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check that the field is null, alternative syntax for `is_null: 'field_name'`",
      -        "title": "Is Null"
      -      },
      -      "key": {
      -        "description": "Payload key",
      -        "title": "Key",
      -        "type": "string"
      -      },
      -      "match": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/MatchValue"
      -          },
      -          {
      -            "$ref": "#/$defs/MatchText"
      -          },
      -          {
      -            "$ref": "#/$defs/MatchTextAny"
      -          },
      -          {
      -            "$ref": "#/$defs/MatchPhrase"
      -          },
      -          {
      -            "$ref": "#/$defs/MatchPrefix"
      -          },
      -          {
      -            "$ref": "#/$defs/MatchAny"
      -          },
      -          {
      -            "$ref": "#/$defs/MatchExcept"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check if point has field with a given value",
      -        "title": "Match"
      -      },
      -      "range": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/Range"
      -          },
      -          {
      -            "$ref": "#/$defs/DatetimeRange"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check if points value lies in a given range",
      -        "title": "Range"
      -      },
      -      "values_count": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/ValuesCount"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Check number of values of the field"
      -      }
      -    },
      -    "required": [
      -      "key"
      -    ],
      -    "title": "FieldCondition",
      -    "type": "object"
      -  },
      -  "Filter": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "min_should": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/MinShould"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "At least minimum amount of given conditions should match"
      -      },
      -      "must": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "anyOf": [
      -                {
      -                  "$ref": "#/$defs/FieldCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/IsEmptyCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/IsNullCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/HasIdCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/HasVectorCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/SliceCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/NestedCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/Filter"
      -                }
      -              ]
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "$ref": "#/$defs/FieldCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/IsEmptyCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/IsNullCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/HasIdCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/HasVectorCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/SliceCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/NestedCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/Filter"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "All conditions must match",
      -        "title": "Must"
      -      },
      -      "must_not": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "anyOf": [
      -                {
      -                  "$ref": "#/$defs/FieldCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/IsEmptyCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/IsNullCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/HasIdCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/HasVectorCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/SliceCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/NestedCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/Filter"
      -                }
      -              ]
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "$ref": "#/$defs/FieldCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/IsEmptyCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/IsNullCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/HasIdCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/HasVectorCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/SliceCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/NestedCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/Filter"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "All conditions must NOT match",
      -        "title": "Must Not"
      -      },
      -      "should": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "anyOf": [
      -                {
      -                  "$ref": "#/$defs/FieldCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/IsEmptyCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/IsNullCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/HasIdCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/HasVectorCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/SliceCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/NestedCondition"
      -                },
      -                {
      -                  "$ref": "#/$defs/Filter"
      -                }
      -              ]
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "$ref": "#/$defs/FieldCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/IsEmptyCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/IsNullCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/HasIdCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/HasVectorCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/SliceCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/NestedCondition"
      -          },
      -          {
      -            "$ref": "#/$defs/Filter"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "At least one of those conditions should match",
      -        "title": "Should"
      -      }
      -    },
      -    "title": "Filter",
      -    "type": "object"
      -  },
      -  "GeoBoundingBox": {
      -    "additionalProperties": false,
      -    "description": "Geo filter request  Matches coordinates inside the rectangle, described by coordinates of lop-left and bottom-right edges",
      -    "properties": {
      -      "bottom_right": {
      -        "$ref": "#/$defs/GeoPoint",
      -        "description": "Geo filter request  Matches coordinates inside the rectangle, described by coordinates of lop-left and bottom-right edges"
      -      },
      -      "top_left": {
      -        "$ref": "#/$defs/GeoPoint",
      -        "description": "Geo filter request  Matches coordinates inside the rectangle, described by coordinates of lop-left and bottom-right edges"
      -      }
      -    },
      -    "required": [
      -      "top_left",
      -      "bottom_right"
      -    ],
      -    "title": "GeoBoundingBox",
      -    "type": "object"
      -  },
      -  "GeoLineString": {
      -    "additionalProperties": false,
      -    "description": "Ordered sequence of GeoPoints representing the line",
      -    "properties": {
      -      "points": {
      -        "description": "Ordered sequence of GeoPoints representing the line",
      -        "items": {
      -          "$ref": "#/$defs/GeoPoint"
      -        },
      -        "title": "Points",
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "points"
      -    ],
      -    "title": "GeoLineString",
      -    "type": "object"
      -  },
      -  "GeoPoint": {
      -    "additionalProperties": false,
      -    "description": "Geo point payload schema",
      -    "properties": {
      -      "lat": {
      -        "description": "Geo point payload schema",
      -        "title": "Lat",
      -        "type": "number"
      -      },
      -      "lon": {
      -        "description": "Geo point payload schema",
      -        "title": "Lon",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "lon",
      -      "lat"
      -    ],
      -    "title": "GeoPoint",
      -    "type": "object"
      -  },
      -  "GeoPolygon": {
      -    "additionalProperties": false,
      -    "description": "Geo filter request  Matches coordinates inside the polygon, defined by `exterior` and `interiors`",
      -    "properties": {
      -      "exterior": {
      -        "$ref": "#/$defs/GeoLineString",
      -        "description": "Geo filter request  Matches coordinates inside the polygon, defined by `exterior` and `interiors`"
      -      },
      -      "interiors": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "$ref": "#/$defs/GeoLineString"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Interior lines (if present) bound holes within the surface each GeoLineString must consist of a minimum of 4 points, and the first and last points must be the same.",
      -        "title": "Interiors"
      -      }
      -    },
      -    "required": [
      -      "exterior"
      -    ],
      -    "title": "GeoPolygon",
      -    "type": "object"
      -  },
      -  "GeoRadius": {
      -    "additionalProperties": false,
      -    "description": "Geo filter request  Matches coordinates inside the circle of `radius` and center with coordinates `center`",
      -    "properties": {
      -      "center": {
      -        "$ref": "#/$defs/GeoPoint",
      -        "description": "Geo filter request  Matches coordinates inside the circle of `radius` and center with coordinates `center`"
      -      },
      -      "radius": {
      -        "description": "Radius of the area in meters",
      -        "title": "Radius",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "center",
      -      "radius"
      -    ],
      -    "title": "GeoRadius",
      -    "type": "object"
      -  },
      -  "HasIdCondition": {
      -    "additionalProperties": false,
      -    "description": "ID-based filtering condition",
      -    "properties": {
      -      "has_id": {
      -        "description": "ID-based filtering condition",
      -        "items": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "format": "uuid",
      -              "type": "string"
      -            }
      -          ]
      -        },
      -        "title": "Has Id",
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "has_id"
      -    ],
      -    "title": "HasIdCondition",
      -    "type": "object"
      -  },
      -  "HasVectorCondition": {
      -    "additionalProperties": false,
      -    "description": "Filter points which have specific vector assigned",
      -    "properties": {
      -      "has_vector": {
      -        "description": "Filter points which have specific vector assigned",
      -        "title": "Has Vector",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "has_vector"
      -    ],
      -    "title": "HasVectorCondition",
      -    "type": "object"
      -  },
      -  "IsEmptyCondition": {
      -    "additionalProperties": false,
      -    "description": "Select points with empty payload for a specified field",
      -    "properties": {
      -      "is_empty": {
      -        "$ref": "#/$defs/PayloadField",
      -        "description": "Select points with empty payload for a specified field"
      -      }
      -    },
      -    "required": [
      -      "is_empty"
      -    ],
      -    "title": "IsEmptyCondition",
      -    "type": "object"
      -  },
      -  "IsNullCondition": {
      -    "additionalProperties": false,
      -    "description": "Select points with null payload for a specified field",
      -    "properties": {
      -      "is_null": {
      -        "$ref": "#/$defs/PayloadField",
      -        "description": "Select points with null payload for a specified field"
      -      }
      -    },
      -    "required": [
      -      "is_null"
      -    ],
      -    "title": "IsNullCondition",
      -    "type": "object"
      -  },
      -  "MatchAny": {
      -    "additionalProperties": false,
      -    "description": "Exact match on any of the given values",
      -    "properties": {
      -      "any": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "items": {
      -              "type": "integer"
      -            },
      -            "type": "array"
      -          }
      -        ],
      -        "description": "Exact match on any of the given values",
      -        "title": "Any"
      -      }
      -    },
      -    "required": [
      -      "any"
      -    ],
      -    "title": "MatchAny",
      -    "type": "object"
      -  },
      -  "MatchExcept": {
      -    "additionalProperties": false,
      -    "description": "Should have at least one value not matching the any given values",
      -    "properties": {
      -      "except": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "items": {
      -              "type": "integer"
      -            },
      -            "type": "array"
      -          }
      -        ],
      -        "description": "Should have at least one value not matching the any given values",
      -        "title": "Except"
      -      }
      -    },
      -    "required": [
      -      "except"
      -    ],
      -    "title": "MatchExcept",
      -    "type": "object"
      -  },
      -  "MatchPhrase": {
      -    "additionalProperties": false,
      -    "description": "Full-text phrase match of the string.",
      -    "properties": {
      -      "phrase": {
      -        "description": "Full-text phrase match of the string.",
      -        "title": "Phrase",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "phrase"
      -    ],
      -    "title": "MatchPhrase",
      -    "type": "object"
      -  },
      -  "MatchPrefix": {
      -    "additionalProperties": false,
      -    "description": "Match keyword values that start with the given string.  Byte-wise (hence, for valid UTF-8, character-wise) and case-sensitive, consistent with exact keyword matching. Served efficiently by a keyword index created with the `prefix` option.",
      -    "properties": {
      -      "prefix": {
      -        "description": "Match keyword values that start with the given string.  Byte-wise (hence, for valid UTF-8, character-wise) and case-sensitive, consistent with exact keyword matching. Served efficiently by a keyword index created with the `prefix` option.",
      -        "title": "Prefix",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "prefix"
      -    ],
      -    "title": "MatchPrefix",
      -    "type": "object"
      -  },
      -  "MatchText": {
      -    "additionalProperties": false,
      -    "description": "Full-text match of the strings.",
      -    "properties": {
      -      "text": {
      -        "description": "Full-text match of the strings.",
      -        "title": "Text",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "text"
      -    ],
      -    "title": "MatchText",
      -    "type": "object"
      -  },
      -  "MatchTextAny": {
      -    "additionalProperties": false,
      -    "description": "Full-text match of at least one token of the string.",
      -    "properties": {
      -      "text_any": {
      -        "description": "Full-text match of at least one token of the string.",
      -        "title": "Text Any",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "text_any"
      -    ],
      -    "title": "MatchTextAny",
      -    "type": "object"
      -  },
      -  "MatchValue": {
      -    "additionalProperties": false,
      -    "description": "Exact match of the given value",
      -    "properties": {
      -      "value": {
      -        "anyOf": [
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "string"
      -          }
      -        ],
      -        "description": "Exact match of the given value",
      -        "title": "Value"
      -      }
      -    },
      -    "required": [
      -      "value"
      -    ],
      -    "title": "MatchValue",
      -    "type": "object"
      -  },
      -  "MinShould": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "conditions": {
      -        "description": "",
      -        "items": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/FieldCondition"
      -            },
      -            {
      -              "$ref": "#/$defs/IsEmptyCondition"
      -            },
      -            {
      -              "$ref": "#/$defs/IsNullCondition"
      -            },
      -            {
      -              "$ref": "#/$defs/HasIdCondition"
      -            },
      -            {
      -              "$ref": "#/$defs/HasVectorCondition"
      -            },
      -            {
      -              "$ref": "#/$defs/SliceCondition"
      -            },
      -            {
      -              "$ref": "#/$defs/NestedCondition"
      -            },
      -            {
      -              "$ref": "#/$defs/Filter"
      -            }
      -          ]
      -        },
      -        "title": "Conditions",
      -        "type": "array"
      -      },
      -      "min_count": {
      -        "description": "",
      -        "title": "Min Count",
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "conditions",
      -      "min_count"
      -    ],
      -    "title": "MinShould",
      -    "type": "object"
      -  },
      -  "Nested": {
      -    "additionalProperties": false,
      -    "description": "Select points with payload for a specified nested field",
      -    "properties": {
      -      "filter": {
      -        "$ref": "#/$defs/Filter",
      -        "description": "Select points with payload for a specified nested field"
      -      },
      -      "key": {
      -        "description": "Select points with payload for a specified nested field",
      -        "title": "Key",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "key",
      -      "filter"
      -    ],
      -    "title": "Nested",
      -    "type": "object"
      -  },
      -  "NestedCondition": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "nested": {
      -        "$ref": "#/$defs/Nested",
      -        "description": ""
      -      }
      -    },
      -    "required": [
      -      "nested"
      -    ],
      -    "title": "NestedCondition",
      -    "type": "object"
      -  },
      -  "PayloadField": {
      -    "additionalProperties": false,
      -    "description": "Payload field",
      -    "properties": {
      -      "key": {
      -        "description": "Payload field name",
      -        "title": "Key",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "key"
      -    ],
      -    "title": "PayloadField",
      -    "type": "object"
      -  },
      -  "Range": {
      -    "additionalProperties": false,
      -    "description": "Range filter request",
      -    "properties": {
      -      "gt": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key > range.gt",
      -        "title": "Gt"
      -      },
      -      "gte": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key >= range.gte",
      -        "title": "Gte"
      -      },
      -      "lt": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key < range.lt",
      -        "title": "Lt"
      -      },
      -      "lte": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key <= range.lte",
      -        "title": "Lte"
      -      }
      -    },
      -    "title": "Range",
      -    "type": "object"
      -  },
      -  "Slice": {
      -    "additionalProperties": false,
      -    "description": "One of `total` disjoint deterministic slices of the id space.  A point belongs to the slice iff `hash(id) % total == index`, where `hash` is SipHash-2-4 with a zero key over the canonical id bytes: 8 little-endian bytes for numeric ids, the 16 RFC 4122 bytes for UUIDs. For a fixed `total`, slices `0..total` are disjoint and together cover all points; membership is uniform regardless of the id scheme and stable across queries, segments, platforms and Qdrant versions.  Slices with different `total` values are correlated (same hash, no salt): e.g. slice `0` of `total: 4` is a strict subset of slice `0` of `total: 2`. This keeps a smaller sample contained in a larger one.",
      -    "properties": {
      -      "index": {
      -        "description": "Which slice to select, must be in `0..total`",
      -        "title": "Index",
      -        "type": "integer"
      -      },
      -      "total": {
      -        "description": "Total number of disjoint slices the id space is split into",
      -        "title": "Total",
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "total",
      -      "index"
      -    ],
      -    "title": "Slice",
      -    "type": "object"
      -  },
      -  "SliceCondition": {
      -    "additionalProperties": false,
      -    "description": "Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling.",
      -    "properties": {
      -      "slice": {
      -        "$ref": "#/$defs/Slice",
      -        "description": "Select points that fall into one of `total` disjoint deterministic slices of the id space, for parallel scans and reproducible sampling."
      -      }
      -    },
      -    "required": [
      -      "slice"
      -    ],
      -    "title": "SliceCondition",
      -    "type": "object"
      -  },
      -  "ValuesCount": {
      -    "additionalProperties": false,
      -    "description": "Values count filter request",
      -    "properties": {
      -      "gt": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key.length() > values_count.gt",
      -        "title": "Gt"
      -      },
      -      "gte": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key.length() >= values_count.gte",
      -        "title": "Gte"
      -      },
      -      "lt": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key.length() < values_count.lt",
      -        "title": "Lt"
      -      },
      -      "lte": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "point.key.length() <= values_count.lte",
      -        "title": "Lte"
      -      }
      -    },
      -    "title": "ValuesCount",
      -    "type": "object"
      -  }
      -}
    • changedInput schema / properties / count_filter / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/$defs/Filter"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "Qdrant payload filter. Combine conditions with `must` (all hold), `should` (any holds), `must_not` (none holds) or `min_should` ({conditions, min_count}); each takes a list of conditions or a single one. A condition is one of: {\"key\": k, \"match\": M} where M is exactly one of {\"value\": v}, {\"any\": [..]}, {\"except\": [..]}, {\"text\": s}, {\"text_any\": s}, {\"phrase\": s}, {\"prefix\": s}; {\"key\": k, \"range\": {\"lt\"|\"lte\"|\"gt\"|\"gte\": number or datetime}}; {\"key\": k, \"values_count\": {\"lt\"|\"lte\"|\"gt\"|\"gte\": n}}; {\"key\": k, \"geo_radius\": {\"center\": {\"lat\", \"lon\"}, \"radius\": meters}}; {\"key\": k, \"geo_bounding_box\": {\"top_left\", \"bottom_right\"}}; {\"key\": k, \"geo_polygon\": {\"exterior\", \"interiors\"}}; {\"is_empty\": {\"key\": k}}; {\"is_null\": {\"key\": k}}; {\"has_id\": [ids]}; {\"has_vector\": name}; {\"slice\": {\"total\": n, \"index\": i}}; {\"nested\": {\"key\": k, \"filter\": <filter>}}; or a nested filter. Keys for nested objects use dots (`a.b`); objects inside arrays use `a[].b`.",
      +    "properties": {
      +      "min_should": {
      +        "anyOf": [
      +          {
      +            "properties": {
      +              "conditions": {
      +                "items": {
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "min_count": {
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "conditions",
      +              "min_count"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "must": {
      +        "anyOf": [
      +          {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "must_not": {
      +        "anyOf": [
      +          {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "should": {
      +        "anyOf": [
      +          {
      +            "anyOf": [
      +              {
      +                "items": {
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              {
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observedv1.1.1

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is fully covered elsewhere. The description adds nothing beyond that: it never explains that counts may be approximate unless `exact` is set, nor mentions cost/latency on large collections. The 'exact' flag is the key behavioral lever of this tool and it goes unmentioned.

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?

Two short sentences with the core action front-loaded and no wasted prose. The example adds little, since it only repeats the one required parameter and ignores the filter and exact options.

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?

An output schema exists, so return values need no explanation, but for a 3-parameter tool the description omits two of them and gives no behavioral context. It is closer to a restated name than a usable spec for anything but the simplest unfiltered count.

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?

Top-level schema coverage is 0%; the description only alludes to a filter without naming the `count_filter` parameter. The `exact` parameter (default true, controlling approximate vs exact counting) is completely undocumented in both the description and the schema, leaving an agent to guess its meaning.

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

Purpose4/5

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

The description states a specific verb and resource ('Count points in a collection') with a scope qualifier ('optionally matching a filter'). This is enough to separate it from qdrant_points_scroll or qdrant_query, though no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to prefer count over qdrant_points_scroll, qdrant_query, or qdrant_collection_info, which all touch overlapping data. The only usage hint is 'optionally matching a filter', which is implied rather than explained.

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