QANATIX
API Reference

MCP Protocol Reference

MCP Streamable HTTP endpoint — tools and resources.

MCP Protocol Reference

QANATIX exposes an MCP (Model Context Protocol) server via Streamable HTTP at /mcp/.

Endpoint

POST https://api.qanatix.com/mcp/

Standard MCP Streamable HTTP transport. Compatible with any MCP client (Claude Desktop, Claude Code, Cursor, custom clients).

Authentication

Include your API key in the Authorization header:

Authorization: Bearer sk_live_abc123...

In development mode, you can use X-Tenant-Id instead.

Tools

qanatix_collections

Call this first to discover what data is available. Returns a compact table of collections with record counts, categories, and descriptions. Does not include field schemas inline — use qanatix_schema for that.

ParameterTypeRequiredDefaultDescription
querystringnoFilter collections by name or description substring
categorystringnoFilter by category tag
limitintegerno20Max collections to return

Returns:

  • Table of collections with record type, record count, category, and description
  • Points to qanatix_schema(collection) for field details

qanatix_schema

Get field schema and filter options for a specific collection. Returns field names, types, sample values, and filter syntax guide.

ParameterTypeRequiredDescription
collectionstringyesCollection name (from qanatix_collections results)

Returns:

  • Field names with inferred types, sampled from collection data
  • Sample values for each field (up to 4 unique values)
  • Filter syntax guide (exact match, range, multi-value, etc.)

Unified search tool — works with a query, filters, or both. Returns results with total count (e.g. "Showing 10 of 347 results").

ParameterTypeRequiredDefaultDescription
querystringnoNatural language search query. Optional when filters are provided.
collectionstringyesCollection to search
filtersobjectnoKey-value filters (see filter syntax below)
sortstringnoSort field. Prefix with - for descending. E.g. price_usd, -weight_kg.
limitintegerno10Results to return (1-50)
offsetintegerno0Skip N results for pagination
formatstringnomarkdownOutput format: markdown or json

Note: When both query and filters are provided and full-text search returns no results, the query is automatically dropped and filters are retried alone (zero-result fallback).

Filter syntax

Filters are applied server-side before ranking. Short field names auto-resolve to collection_data.* paths.

PatternOperationExample
field=valExact match{"brand": "SKF", "record_type": "product"}
field=val1,val2Multi-value (IN){"manufacturer": "SKF,ABB,FAG"}
field_min=val>={"price_min": "10", "stars_min": "4"}
field_max=val<={"price_max": "100", "expense_ratio_max": "0.1"}
field_gt=val>{"score_gt": "0.5"}
field_lt=val<{"lead_time_days_lt": "10"}
field_in=val1,val2IN (explicit){"status_in": "active,pending"}

Use qanatix_collections() to discover which fields are available for filtering.

Example tool calls:

{
  "name": "qanatix_search",
  "arguments": {
    "collection": "manufacturing",
    "query": "stainless M8 bolt ISO 4017",
    "filters": {"in_stock": "True", "price_max": "0.20"},
    "limit": 5
  }
}

Filter-only (no query):

{
  "name": "qanatix_search",
  "arguments": {
    "collection": "manufacturing",
    "filters": {"manufacturer": "SKF,ABB", "price_max": "50"},
    "sort": "-price_usd",
    "limit": 20
  }
}

qanatix_aggregate

Count, group, and compute stats on records. Use this for questions like "how many products by brand?" or "what's the price range?"

ParameterTypeRequiredDefaultDescription
collectionstringyesCollection to aggregate
filtersobjectnoSame filters as search
group_bystringnoField to group by. Returns top values with counts.
statsstring[]noNumeric fields for min/max/avg. E.g. ["price_usd", "weight_kg"]

Example:

{
  "name": "qanatix_aggregate",
  "arguments": {
    "collection": "manufacturing",
    "group_by": "manufacturer",
    "stats": ["price_usd", "weight_kg"]
  }
}

qanatix_list

Browse/paginate records in a collection. Kept for backward compatibility — qanatix_search with no query provides the same functionality with more options.

ParameterTypeRequiredDefaultDescription
collectionstringyesCollection to browse
record_typestringnoFilter by record type
statusstringnoFilter by status (active, draft, suspended)
qstringnoFull-text search (supports OR, phrases, negation)
filtersobjectnoKey-value filters (same syntax as qanatix_search)
sortstringnoSort field. Prefix with - for descending.
cursorstringnoPagination cursor from previous response
limitintegerno20Results per page (1-50)

Returns a markdown table with pagination cursor for the next page.

qanatix_lookup

Get complete details for a specific record by UUID.

ParameterTypeRequiredDescription
record_idstringyesFull record UUID from search or list results
formatstringnoOutput format: markdown (default) or json

Returns YAML-formatted record with all fields including full collection_data.

Resources

record://{record_id}

Read-only access to a single record by UUID.

record://550e8400-e29b-41d4-a716-446655440000

Returns the same output as qanatix_lookup.

schema://{collection}/{record_type}

Read-only access to a collection's inferred field schema. Field names and types are auto-detected by sampling collection data.

schema://manufacturing/fastener

Returns field names with inferred types, sampled from collection data.

MCP vs REST

MCPREST API
TransportStreamable HTTPStandard HTTP
AuthBearer tokenBearer token
Tools6 (collections, schema, search, aggregate, list, lookup)Full CRUD + upload + admin
FormatMarkdown or JSON (configurable)JSON/compact/YAML (configurable)
Search limit1-501-100
List limit1-501-100
RankingSameSame
Best forClaude, Cursor, MCP clientsGPT, Gemini, LangChain, apps

The MCP server is optimized for AI consumption — compact output, total counts, and structured filters.

On this page