Skip to main content
Glama

Server Details

Every match, not the top 10. Searches your documents and returns each relevant one, with quotes.

Ownership verified
Status
Healthy
Uptime
96.8% over 20 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct role: ask_documents returns a cited answer, search_documents returns every match, browse_documents lists by date without a query, and read_document fetches one full document. The ask/search boundary is explicitly addressed in the descriptions, reducing misselection risk.

Naming Consistency4/5

All names follow a consistent verb_noun pattern: ask_documents, browse_documents, read_document, search_documents. The only minor deviation is singular 'document' in read_document versus plural elsewhere, but the pattern remains predictable.

Tool Count5/5

Four tools is well-scoped for a document knowledge base: search, browse, read, and ask cover the core retrieval workflows without redundancy. Each tool earns its place and there is no obvious bloat.

Completeness4/5

The read-only retrieval surface is well covered: listing, searching, reading, and answering from documents. Minor gaps exist around lifecycle operations like adding or deleting documents, but those may be out of scope for this server.

Available Tools

4 tools
ask_documentsAsk documentsA
Read-only
Inspect

Answer a question from your own documents (your knowledge base), citing its sources. Reads every matching document across all dates unless from/to narrow it. Returns a short written answer that cites its sources as [1], [2], and the evidence: each cited quote with its document id, metadata and score. Use search_documents instead when you want every match rather than an answer. Takes the same from, to, metadata, dry_run and read_limit_usd as search_documents; the limit includes the answer fee, and mode (fast reads only the best-matching results; complete reads every match; by default the question decides). coverage says how the answer read and how many documents.

NameRequiredDescriptionDefault
toNoOnly documents whose timestamp is before this: an ISO 8601 date-time, or a YYYY-MM-DD date (through its end, UTC).
fromNoOnly documents whose timestamp is at or after this: an ISO 8601 date-time, or a YYYY-MM-DD date (from its start, UTC).
modeNofast = read only the best-matching results (a lookup: quicker and cheaper, may miss matches). complete = read every matching document, up to read_limit_usd (lists, counts, "every" questions). Default: chosen from the question.
queryYesThe question, in plain language.
dry_runNotrue = return how many documents match and how many tokens this call would scan, and its price, without searching. Free; reads no text.
metadataNoExact metadata matches, e.g. {"client": "acme"}. A list matches any of its values.
read_limit_usdNoThe most this one call may spend from your balance, in US dollars. Over it, the best-matching documents are read first.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, closed-world behavior, and the description adds materially: the return shape (short answer with [1], [2] citations plus each cited quote with document id, metadata and score), the cost model (read_limit_usd includes the answer fee, best matches read first), and what coverage reports. It stops short of stating failure modes or what dry_run returns beyond the schema, so not a full 5.

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?

Front-loaded with the core purpose and the sibling routing, and nearly every clause carries information (return shape, cost, mode, coverage). The final parenthetical about mode and the trailing clause about coverage are dense and slightly run-on, costing a point.

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?

With seven parameters, nested metadata, and no output schema, the description does the heavy lifting well: it describes the returned answer, the evidence array, cost accounting, and the coverage field. Minor gaps remain around error/empty-result behavior and exactly what coverage's values look like.

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 the baseline is 3; the description still adds value by declaring that from, to, metadata, dry_run and read_limit_usd are shared with search_documents and that the USD limit also covers the answer fee. The mode explanation largely restates the enum documentation, which caps this at 4.

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?

States a specific verb and resource ('answer a question from your own documents'), plus the distinguishing output (a cited written answer with evidence). It explicitly separates itself from search_documents, so an agent can pick between them without opening either schema.

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?

Names the alternative and the exact condition that selects it: 'Use search_documents instead when you want every match rather than an answer.' It also gives when-to-choose guidance for mode (fast = lookup, complete = lists/counts/'every' questions) and notes that from/to narrow an otherwise all-dates read.

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

browse_documentsBrowse documentsA
Read-only
Inspect

List your own documents (your knowledge base) by date, newest first unless order=asc. No query needed. Each result has its document id, connection id, title, date, metadata and the start of its text. Narrow with from/to (the document's timestamp) and metadata (exact match; a list = any of). Returns results, total_results and next_cursor: pass it back as cursor for the next page. Free: browsing never spends your balance.

NameRequiredDescriptionDefault
toNoOnly documents whose timestamp is before this: an ISO 8601 date-time, or a YYYY-MM-DD date (through its end, UTC).
fromNoOnly documents whose timestamp is at or after this: an ISO 8601 date-time, or a YYYY-MM-DD date (from its start, UTC).
limitNoResults per page, default 50, up to 100.
orderNodesc (default) = newest first; asc = oldest first.
cursorNonext_cursor from the previous page of this same call, to get the next page.
metadataNoExact metadata matches, e.g. {"client": "acme"}. A list matches any of its values.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive=false and closed-world, so the safety profile is covered; the description adds the pieces that aren't in annotations: default result shape (id, connection id, title, date, metadata, text prefix), pagination contract (results, total_results, next_cursor), and the zero-cost guarantee. Missing only edge behavior such as what happens when no documents exist.

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 action and default sort, then ordering, filters, result shape, pagination and cost in that sequence. Every sentence carries a distinct fact; none restates the name or title.

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

Completeness5/5

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

For a 6-parameter, no-required-args, nested-metadata list tool with no output schema, the description covers ordering, timestamp filtering, metadata matching semantics, result fields, pagination and cost. An agent has everything needed to call it and to handle the response without guessing.

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%, which sets the baseline at 3, but the description earns extra credit by tying the parameters together operationally: from/to filter on 'the document's timestamp', metadata is exact-match with list=any-of, and next_cursor must be fed back as cursor. It reinforces rather than repeats, and adds the cursor round-trip that a per-parameter schema cannot express.

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 ('List your own documents ... by date') with the default ordering baked into the first clause. The 'No query needed' + 'Free' framing implicitly separates it from search_documents, but no sibling is named, so the differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

Gives a clear selecting condition ('No query needed') and a cost-based reason to prefer it ('browsing never spends your balance'), which lets an agent route here when it has no query and wants to avoid spend. It stops short of explicitly naming search_documents or ask_documents as the alternative for query-driven retrieval.

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

read_documentRead documentA
Read-only
Inspect

Read one whole document from your own documents (your knowledge base), by the document_id and connection_id of a search or browse result. Returns its full text, title, date and metadata. A long document comes in parts: when the result has next_content_offset, call again with content_offset set to it. Free: reading never spends your balance.

NameRequiredDescriptionDefault
document_idYesdocument_id from a search or browse result (your own id from ingest).
connection_idYesconnection_id from the same result.
content_offsetNoOnly for a long document: next_content_offset from the previous part. Omit to read from the start.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds real value beyond them: what gets returned (full text, title, date, metadata), the paginated read pattern, and the cost fact that reading never spends the balance.

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?

Three compact sentences, front-loaded with what the tool does, followed by the pagination mechanic and the cost note. No filler or restatement of the title.

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?

There is no output schema, yet the description enumerates the returned fields and explains how to page through a long document, which is exactly what an agent needs to call and drive this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema, including content_offset's 'next_content_offset from the previous part'. The description restates the pagination loop rather than adding new format or constraint detail, so the baseline 3 applies.

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?

Specific verb (Read) plus resource (one whole document from your own knowledge base) and the exact identifiers required. It implicitly separates itself from search_documents/browse_documents by naming them as the source of the ids, and from ask_documents by returning raw full text rather than an answer.

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

Usage Guidelines4/5

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

It states the precondition (ids come from a search or browse result) and gives clear guidance for the long-document case, including the follow-up call with content_offset. It does not explicitly say when to prefer ask_documents over reading raw text, so an exclusion is missing.

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

search_documentsSearch documentsA
Read-only
Inspect

Search your own documents (your knowledge base) and get every match, not just the top few: a quote from each matching document, with its document id, connection id and date. Returns results, total_results (across all pages), tokens_scanned and next_cursor: pass it back as cursor, with the same query, for the next page. Next pages are free. Narrow with from/to (the document's timestamp) and metadata (exact match; a list = any of). dry_run=true returns documents_matched, tokens_to_scan and the price without searching, for free. read_limit_usd caps what one call may spend: over it, the best-matching documents are read first, and coverage says how many were read of all that match. When coverage.complete is false, pass continue_cursor back to read the next ones. A lookup (one fact or answer) reads only the best-matching results, quicker and cheaper; coverage.mode says fast. Set mode=complete to read every match, or mode=fast for a lookup.

NameRequiredDescriptionDefault
toNoOnly documents whose timestamp is before this: an ISO 8601 date-time, or a YYYY-MM-DD date (through its end, UTC).
fromNoOnly documents whose timestamp is at or after this: an ISO 8601 date-time, or a YYYY-MM-DD date (from its start, UTC).
modeNofast = read only the best-matching results (a lookup: quicker and cheaper, may miss matches). complete = read every matching document, up to read_limit_usd (lists, counts, "every" questions). Default: chosen from the question.
limitNoResults per page, default 50, up to 100.
queryYesWhat to find, in plain language.
cursorNonext_cursor from the previous page of this same call, to get the next page.
dry_runNotrue = return how many documents match and how many tokens this call would scan, and its price, without searching. Free; reads no text.
metadataNoExact metadata matches, e.g. {"client": "acme"}. A list matches any of its values.
read_limit_usdNoThe most this one call may spend from your balance, in US dollars. Over it, the best-matching documents are read first.
continue_cursorNoFrom a response whose coverage is not complete: reads the next best-matching documents, up to read_limit_usd again.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, non-destructive), and the description adds substantial behavioral context beyond them: next pages are free, dry_run reads no text, read_limit_usd triggers priority reading with coverage reporting, and coverage.complete=false requires continue_cursor. This billing and pagination disclosure is exactly the context an agent needs.

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?

Front-loaded with the core purpose and return shape, then layers on pagination, cost, and mode details in a logical order. It is dense and slightly sprawling, with the mode fast/complete idea revisited at several points, but most sentences carry distinct, useful information.

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?

For a 10-parameter tool with no output schema, the description covers the important return fields (results, total_results, tokens_scanned, next_cursor, coverage) and cost mechanics thoroughly. It stops short of stating what falls outside its knowledge-base scope or how it relates to sibling tools, but is otherwise nearly complete.

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, but the description adds interaction semantics the schema cannot express, such as how read_limit_usd and coverage jointly determine continued reads and how cursor must be paired with the same query. This meaningfully extends parameter understanding beyond the structured descriptions.

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

Purpose5/5

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

States a specific verb and resource ('Search your own documents (your knowledge base)') and explicitly distinguishes its scope from a top-few/ranking tool by promising 'every match, not just the top few.' An agent can tell what it returns (quote + document id, connection id, date) without opening the schema.

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

Usage Guidelines4/5

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

Provides clear in-tool guidance: dry_run for cost-free estimation, read_limit_usd to cap spend, continue_cursor when coverage is incomplete, and mode=fast for a quick lookup vs mode=complete for every match. It does not explicitly name when to prefer a sibling like ask_documents or browse_documents, leaving cross-tool routing to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedask_documents2 fields changed
      • changedInput schema / properties / from / anyOf
        Previous value: -[
        -  {
        -    "format": "date-time",
        -    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -    "type": "string"
        -  },
        -  {
        -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +    "type": "string"
        +  },
        +  {
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / to / anyOf
        Previous value: -[
        -  {
        -    "format": "date-time",
        -    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -    "type": "string"
        -  },
        -  {
        -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +    "type": "string"
        +  },
        +  {
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  }
        +]
    • Changedbrowse_documents2 fields changed
      • changedInput schema / properties / from / anyOf
        Previous value: -[
        -  {
        -    "format": "date-time",
        -    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -    "type": "string"
        -  },
        -  {
        -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +    "type": "string"
        +  },
        +  {
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / to / anyOf
        Previous value: -[
        -  {
        -    "format": "date-time",
        -    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -    "type": "string"
        -  },
        -  {
        -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +    "type": "string"
        +  },
        +  {
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  }
        +]
    • Changedsearch_documents2 fields changed
      • changedInput schema / properties / from / anyOf
        Previous value: -[
        -  {
        -    "format": "date-time",
        -    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -    "type": "string"
        -  },
        -  {
        -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +    "type": "string"
        +  },
        +  {
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / to / anyOf
        Previous value: -[
        -  {
        -    "format": "date-time",
        -    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -    "type": "string"
        -  },
        -  {
        -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        +    "type": "string"
        +  },
        +  {
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  }
        +]
  2. 2 tool updates
    • Changedask_documents1 field changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "fast = read only the best-matching results (a lookup: quicker and cheaper, may miss matches). complete = read every matching document, up to read_limit_usd (lists, counts, \"every\" questions). Default: chosen from the question.",
        +  "enum": [
        +    "fast",
        +    "complete"
        +  ],
        +  "type": "string"
        +}
    • Changedsearch_documents1 field changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "fast = read only the best-matching results (a lookup: quicker and cheaper, may miss matches). complete = read every matching document, up to read_limit_usd (lists, counts, \"every\" questions). Default: chosen from the question.",
        +  "enum": [
        +    "fast",
        +    "complete"
        +  ],
        +  "type": "string"
        +}
  3. 4 tool updates
    • Changedask_documents4 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"true = return how many documents match and the tokens and price this query would scan. Free; reads no text."New value: +"true = return how many documents match and how many tokens this call would scan, and its price, without searching. Free; reads no text."
      • changedInput schema / properties / read_limit_usd / description
        Previous value: -"The most this call may cost, in US dollars. Default 1. Over it, the best-matching documents are read first."New value: +"The most this one call may spend from your balance, in US dollars. Over it, the best-matching documents are read first."
      • removedInput schema / properties / since
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "description": "Optional, older form of from. YYYY-MM-DD: only read documents dated on or after this day."
        -}
      • removedInput schema / properties / until
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "description": "Optional, older form of to. YYYY-MM-DD: only read documents dated on or before this day."
        -}
    • Addedbrowse_documents
    • Addedread_document
    • Changedsearch_documents20 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / connection_id
        Removed value: -{
        -  "description": "Required for read; use the source's exact connection.",
        -  "maxLength": 128,
        -  "type": "string"
        -}
      • removedInput schema / properties / content_offset
        Removed value: -{
        -  "maximum": 9007199254740991,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • addedInput schema / properties / cursor / description
        Added value: +"next_cursor from the previous page of this same call, to get the next page."
      • addedInput schema / properties / cursor / minLength
        Added value: +1
      • removedInput schema / properties / document_id
        Removed value: -{
        -  "description": "Required for read.",
        -  "maxLength": 2048,
        -  "type": "string"
        -}
      • changedInput schema / properties / dry_run / description
        Previous value: -"true = return how many documents match and the tokens and price this query would scan. Free; reads no text."New value: +"true = return how many documents match and how many tokens this call would scan, and its price, without searching. Free; reads no text."
      • removedInput schema / properties / operation
        Removed value: -{
        -  "default": "search",
        -  "enum": [
        -    "search",
        -    "browse",
        -    "read"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / order
        Removed value: -{
        -  "enum": [
        -    "asc",
        -    "desc"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / page_offset
        Removed value: -{
        -  "maximum": 9007199254740991,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / participant
        Removed value: -{
        -  "maxLength": 320,
        -  "type": "string"
        -}
      • changedInput schema / properties / query / description
        Previous value: -"Required for search."New value: +"What to find, in plain language."
      • changedInput schema / properties / read_limit_usd / description
        Previous value: -"The most this call may cost, in US dollars. Default 1. Over it, the best-matching documents are read first."New value: +"The most this one call may spend from your balance, in US dollars. Over it, the best-matching documents are read first."
      • removedInput schema / properties / scan_after
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "at": {
        -      "format": "date-time",
        -      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -      "type": "string"
        -    },
        -    "id": {
        -      "maxLength": 2048,
        -      "minLength": 1,
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "at",
        -    "id"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / properties / since
        Removed value: -{
        -  "format": "date-time",
        -  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -  "type": "string"
        -}
      • removedInput schema / properties / source_version
        Removed value: -{
        -  "maxLength": 128,
        -  "type": "string"
        -}
      • removedInput schema / properties / sources
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "maxLength": 128,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "maxItems": 20,
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "description": "Optional sources for this subquery, within the user's task boundaries."
        -}
      • removedInput schema / properties / time_field
        Removed value: -{
        -  "enum": [
        -    "activity_at",
        -    "event_start",
        -    "source_updated_at",
        -    "indexed_at"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / until
        Removed value: -{
        -  "format": "date-time",
        -  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
        -  "type": "string"
        -}
      • addedInput schema / required
        Added value: +[
        +  "query"
        +]
  4. 4 tool updates
    • Removedask
    • Addedask_documents
    • Removedcontext
    • Addedsearch_documents
  5. 2 tool updates
    • First observedask
    • First observedcontext

Publisher details

Operator
Synoptic Data Ltd · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Requires a Lochless workspace. Sign in with Google at console.lochless.io; the workspace opens right away with $5 of free credit, no card, then pay as you go. Connect with OAuth or an API key. Browse and read are free. Free demo without an account: https://api.lochless.io/demo/mcp. · Publisher source

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents and MCP hosts to search and query a local hybrid vector/BM25 index of scattered notes, docs, PDFs, Office files, web pages, org files, and chat exports. It returns section-level citations so agents can ground answers in the user's own files.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables semantic search and grounded answering over customer-research interviews, with every answer traceable to source quotes.
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents and MCP hosts to search a locally indexed second brain built from scattered notes, docs, PDFs, and chat exports, returning hybrid vector-plus-keyword results with section-level citations rather than whole files.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Searches a local literature database to find and compare wording, returning sourced example sentences with references for use by AI writing assistants.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources