Skip to main content
Glama
talonicdev

talonic-mcp

Official
by talonicdev

Search Talonic Workspace

talonic_search
Read-only

Find documents, fields, schemas, or sources by exact keyword. Use to retrieve document IDs or filterable fields before extraction.

Instructions

Find documents, fields, schemas, or sources in the workspace. One call returns ranked results across all types.

MATCHING IS LITERAL KEYWORD, not semantic. Query with ONE short SINGULAR term or an exact filename: 'invoice', 'bank statement', 'sample-invoice.pdf'. Sentences ('documents related to invoices') and plurals ('invoices') return empty. If a search comes back empty, retry with a shorter singular keyword before concluding the workspace has nothing. USE WHEN: the user names or describes a document without an id, or you need a document_id or a filterable field name before extract / to_markdown / get_document / filter. NOT FOR: structured field-value filters like 'amount > 1000' (use talonic_filter). ARGS: query (short literal keyword); optional limit. RETURNS: documents[], fields[]/fieldMatches[] (only filterable: true entries work in talonic_filter), schemas[], sources[]. Use the id from documents[] to act on a named file.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results per entity type. Default: 5. Increase for broader exploration.
queryYesONE short, SINGULAR keyword or an exact filename — 'invoice', 'insurance certificate', 'sample-invoice.pdf'. Matching is literal: sentences and plurals return empty.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hintNoPresent only when nothing matched: actionable guidance to retry with a shorter singular keyword.
fieldsYesField-registry entries matching the query. filterable: true entries are usable with talonic_filter.
schemasYesSaved schemas matching the query.
sourcesYesSource connections matching the query.
documentsYesDocuments matching the query.
fieldMatchesYesField-level matches with a filterable flag indicating whether the entry can drive talonic_filter.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.1.66
    • changedInput schema / properties / query / description
      Previous value: -"Natural-language search query, e.g. 'indemnification clauses' or 'Acme invoices Q4'."New value: +"ONE short, SINGULAR keyword or an exact filename — 'invoice', 'insurance certificate', 'sample-invoice.pdf'. Matching is literal: sentences and plurals return empty."
    • addedOutput schema / properties / hint
      Added value: +{
      +  "description": "Present only when nothing matched: actionable guidance to retry with a shorter singular keyword.",
      +  "type": "string"
      +}
  2. Changed2 schema fields changedv0.1.45
    • addedOutput schema / properties / fieldMatches / items / properties / dataType
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Field's declared data type (e.g. `string`, `number`, `array`). Use this to guard numeric operators in `talonic_filter` (`gt`/`gte`/`lt`/`lte`/`between`) — they only resolve correctly when `dataType === 'number'`. `null` on non-materialized informational entries."
      +}
    • addedOutput schema / properties / fields / items / properties / dataType
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Field's declared data type (e.g. `string`, `number`, `array`). Use this to guard numeric operators in `talonic_filter` (`gt`/`gte`/`lt`/`lte`/`between`) — they only resolve correctly when `dataType === 'number'`."
      +}
  3. Changed4 schema fields changedv0.1.38
    • addedOutput schema / properties / fieldMatches / items / properties / documentCount / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / fieldMatches / items / properties / documentCount / type
      Removed value: -"number"
    • addedOutput schema / properties / fields / items / properties / documentCount / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / fields / items / properties / documentCount / type
      Removed value: -"number"
  4. Changed1 schema field changedv0.1.25
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "documents": {
      +      "description": "Documents matching the query.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "sourceId": {
      +            "type": "string"
      +          },
      +          "sourceName": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "fieldMatches": {
      +      "description": "Field-level matches with a filterable flag indicating whether the entry can drive talonic_filter.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "displayName": {
      +            "type": "string"
      +          },
      +          "documentCount": {
      +            "type": "number"
      +          },
      +          "filterable": {
      +            "description": "Only filterable: true entries can be used with talonic_filter.",
      +            "type": "boolean"
      +          },
      +          "matchedValue": {
      +            "type": "string"
      +          },
      +          "resolvedFieldId": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "resolvedFieldId",
      +          "filterable"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "fields": {
      +      "description": "Field-registry entries matching the query. filterable: true entries are usable with talonic_filter.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "canonicalName": {
      +            "type": "string"
      +          },
      +          "displayName": {
      +            "type": "string"
      +          },
      +          "documentCount": {
      +            "type": "number"
      +          },
      +          "filterable": {
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Field UUID for materialized field-registry entries; `null` for schema-only fields that are declared in a schema but have no extracted values yet. Always non-null when `filterable: true`."
      +          }
      +        },
      +        "required": [
      +          "id"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "schemas": {
      +      "description": "Saved schemas matching the query.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "sources": {
      +      "description": "Source connections matching the query.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "documents",
      +    "fieldMatches",
      +    "sources",
      +    "schemas",
      +    "fields"
      +  ],
      +  "type": "object"
      +}
  5. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds critical behavioral details: matching is literal keyword, sentences/plurals return empty, and fields must have filterable:true to work with talonic_filter. No contradiction.

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?

Efficient structure: first sentence states purpose, then details matching behavior, then usage guidelines, then parameter description, then returns listing. Every sentence serves a purpose. No wasted words.

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 output schema exists, the description is complete enough. It covers purpose, behavior (literal matching, empty results), usage constraints, return types with actionable ids, and integrates with sibling tools. No gaps.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by clarifying that query must be a short singular keyword or exact filename, and gives examples like 'invoice' vs 'invoices'. Also states limit default is 5. This utility boosts the score above baseline.

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 and resources: 'Find documents, fields, schemas, or sources'. It clearly distinguishes from siblings by noting that this tool is for keyword search across all types, while talonic_filter is for structured filters.

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?

Explicit conditions: 'USE WHEN: the user names or describes a document without an id... NOT FOR: structured field-value filters (use talonic_filter).' Also provides retry advice for empty results, which is actionable context.

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