Skip to main content
Glama
avaazquezz

io.github.avaazquezz/mcp-qdrant

by avaazquezz

qdrant_points_scroll

Read-onlyIdempotent

Page through all points in a Qdrant collection with optional filters and payload-field ordering, using offset pagination to retrieve large result sets page by page.

Instructions

Page through all points in a collection, optionally filtered.

    Pass the returned `next_page_offset` as `offset` to fetch the next
    page; `null` means there are no more pages. `limit` is capped per call
    by the server's QDRANT_MCP_MAX_LIMIT (1000 by default).

    `order_by` sorts by a payload field instead of by id: a key, or
    `{"key": ..., "direction": "asc"|"desc", "start_from": value}`; the key
    needs a payload range index (integer, float or datetime). Paging works
    differently then: `offset` is rejected, and `next_page_offset` is always
    `null` even when more points remain — to continue, repeat the call with
    `start_from` set to the last value you received (points tied on that
    value are returned again, so de-duplicate by id).

    Example: {"collection_name": "docs", "limit": 50}
    Example (newest first): {"collection_name": "docs", "limit": 20,
        "order_by": {"key": "created_at", "direction": "desc"}}
    

Input Schema

NameRequiredDescriptionDefault
limitNo
offsetNo
order_byNo
with_payloadNo
with_vectorsNo
scroll_filterNo
collection_nameYes

Output Schema

NameRequiredDescriptionDefault
pointsYes
next_page_offsetYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed31 schema fields changedv2.6.0
    • removedInput schema / $defs / DatetimeRange
      Removed value: -{
      -  "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"
      -}
    • addedInput schema / $defs / Direction
      Added value: +{
      +  "enum": [
      +    "asc",
      +    "desc"
      +  ],
      +  "title": "Direction",
      +  "type": "string"
      +}
    • removedInput schema / $defs / FieldCondition
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / Filter
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / GeoBoundingBox
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / GeoLineString
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / GeoPoint
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / GeoPolygon
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / GeoRadius
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / HasIdCondition
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / HasVectorCondition
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / IsEmptyCondition
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / IsNullCondition
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MatchAny
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MatchExcept
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MatchPhrase
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MatchPrefix
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MatchText
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MatchTextAny
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MatchValue
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / MinShould
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / Nested
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / NestedCondition
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "nested": {
      -      "$ref": "#/$defs/Nested",
      -      "description": ""
      -    }
      -  },
      -  "required": [
      -    "nested"
      -  ],
      -  "title": "NestedCondition",
      -  "type": "object"
      -}
    • addedInput schema / $defs / OrderBy
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "direction": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/Direction"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Direction of ordering: `asc` or `desc`. Default is ascending."
      +    },
      +    "key": {
      +      "description": "Payload key to order by",
      +      "title": "Key",
      +      "type": "string"
      +    },
      +    "start_from": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        {
      +          "format": "date",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Which payload value to start scrolling from. Default is the lowest value for `asc` and the highest for `desc`",
      +      "title": "Start From"
      +    }
      +  },
      +  "required": [
      +    "key"
      +  ],
      +  "title": "OrderBy",
      +  "type": "object"
      +}
    • removedInput schema / $defs / PayloadField
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Payload field",
      -  "properties": {
      -    "key": {
      -      "description": "Payload field name",
      -      "title": "Key",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "key"
      -  ],
      -  "title": "PayloadField",
      -  "type": "object"
      -}
    • removedInput schema / $defs / Range
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / Slice
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / SliceCondition
      Removed value: -{
      -  "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"
      -}
    • removedInput schema / $defs / ValuesCount
      Removed value: -{
      -  "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"
      -}
    • addedInput schema / properties / order_by
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/OrderBy"
      +    },
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Order By"
      +}
    • changedInput schema / properties / scroll_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

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing server-side limit caps, how next_page_offset works, the null termination condition, and the non-obvious order_by paging behavior where offset is rejected and next_page_offset is always null. It also warns about duplicates when using start_from.

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?

Front-loaded with the core operation, then organized into pagination behavior, order_by special cases, and concrete examples. Every paragraph serves a distinct purpose and there is no filler.

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

Completeness4/5

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

Given the output schema and annotations, the description covers the most important non-obvious behaviors for correct invocation. It leaves minor gaps around with_payload and with_vectors, but those are largely self-explanatory and the complex filter schema is documented inline.

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

Parameters4/5

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

Schema description coverage is low, so the description must add meaning. It provides crucial semantics for offset, limit, and order_by paging, including offset rejection and start_from continuation, though it does not describe with_payload, with_vectors, or scroll_filter behavior in prose.

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?

States a specific verb and resource: page through all points in a collection, optionally filtered. It is clear enough to distinguish scrolling from querying or getting individual points, though it does not explicitly name the sibling alternatives.

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

Usage Guidelines3/5

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

The description explains how to use paging via next_page_offset and when order_by changes paging behavior, but it does not explicitly say when to use this tool instead of qdrant_query, qdrant_points_get, or qdrant_points_count. Usage is implied rather than fully guided.

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