Skip to main content
Glama

Search records

search_records
Read-only

List/filter any object; built-ins use typed search filters. Returns records, count, object_type, next_cursor, has_more and search_coverage. Follow every page for exhaustive answers. Unsupported filters are ignored and echoed in ignored_filters with coverage status unsupported_query: these rows do not answer the question; fix inputs before claiming matches or none. Unknown types return valid types. Most objects sort newest first; tasks by due ascending, undated last. Opportunity rows include account_last_inbound_at/account_last_touch_at for reply-recency questions. Task projection:'actions' includes sequence steps, deduplicates reminders, and returns exact counts plus paged rows. Write using taskId/enrollmentId, never projection ids. Nothing is sent.

When to use: A plain list — open tasks, deals in a stage, contacts at an account — before run_report; email matches carry a highlighted snippet.

Example: Find the emails to sally@acme.com.

Input Schema

NameRequiredDescriptionDefault
limitNoPage size, 1–100 (default 20). Out-of-range values are clamped.
queryNoFree-text names on account, contact, opportunity, lead, task, touch and meeting; for touch/activity also email subject/summary, stored email body content, and participant addresses. Object types without free-text search ignore it (noted in the result).
cursorNoOpaque keyset cursor: pass the previous page's next_cursor to fetch the next page; omit for the first page (a stale or invalid cursor restarts from page one).
filtersNoField key → exact scalar (string/number/boolean); relationships use target ids. Built-in typed search keys apply. Example for opportunity: {stage:'proposal',open_only:true} or {type:'renewal',open_only:true}. Non-scalars and unsupported keys are ignored with a note.
projectionNoRead-only unified Actions queue for object_type task, including sequence steps. Filters: scope mine/team/all (assignment, not book); bucket due/upcoming/paused/completed/all; channel email/call/linkedin/other; source task/sequence; sequence or owner UUID; day YYYY-MM-DD; time_zone IANA; timed_only.
object_typeYesObject key to list — a built-in (account, contact, opportunity, task, touch, meeting, report…), a custom object's key, or an opportunity type key such as renewal (auto-routed).

Output Schema

NameRequiredDescriptionDefault
noteNo
countNo
totalNo
countsNo
resultNo
recordsNo
has_moreNo
projectionNo
next_cursorNo
object_typeNo
ignored_filtersNo
search_coverageNo
cursor_restartedNo
custom_field_definitionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / filters / description
      Previous value: -"Field key → exact scalar value (string / number / boolean). Non-scalar values can't be matched and are ignored with a note."New value: +"Field key → exact scalar (string/number/boolean); relationships use target ids. Built-in typed search keys apply. Example for opportunity: {stage:'proposal',open_only:true} or {type:'renewal',open_only:true}. Non-scalars and unsupported keys are ignored with a note."
    • changedInput schema / properties / projection / description
      Previous value: -"Read-only unified Actions queue, for object_type task."New value: +"Read-only unified Actions queue for object_type task, including sequence steps. Filters: scope mine/team/all (assignment, not book); bucket due/upcoming/paused/completed/all; channel email/call/linkedin/other; source task/sequence; sequence or owner UUID; day YYYY-MM-DD; time_zone IANA; timed_only."
    • changedInput schema / properties / query / description
      Previous value: -"Free-text search. Matches names + (for touch/activity) email subject/summary, stored email body content, and participant addresses. Object types without free-text search ignore it (noted in the result)."New value: +"Free-text names on account, contact, opportunity, lead, task, touch and meeting; for touch/activity also email subject/summary, stored email body content, and participant addresses. Object types without free-text search ignore it (noted in the result)."
  2. Changed1 schema field changed
    • addedOutput schema / properties / cursor_restarted
      Added value: +{
      +  "type": "boolean"
      +}
  3. Changed2 schema fields changed
    • removedInput schema / properties / limit / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / limit / type
      Added value: +[
      +  "number",
      +  "string"
      +]
  4. Changed1 schema field changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
  5. Changed17 schema fields changed
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / counts / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / counts / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / custom_field_definitions / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / custom_field_definitions / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / next_cursor / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / next_cursor / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / records / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / records / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / result / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / result / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / search_coverage / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / search_coverage / properties / has_more / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / search_coverage / properties / has_more / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / search_coverage / properties / next_cursor / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / search_coverage / properties / next_cursor / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  6. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes far beyond the readOnly/destructive annotations: discloses pagination via next_cursor/has_more, silent filter ignoring echoed in ignored_filters with unsupported_query coverage status, unknown object types returning valid types, per-object sort orders, and that nothing is sent (consistent with readOnlyHint=true). The unsupported_query warning is exactly the kind of failure-mode disclosure that prevents a wrong answer being reported as fact.

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?

Dense but nearly every sentence carries operative information for a genuinely complex tool; the purpose leads and behavior follows. Minor deductions: the when-to-use section and example sit at the tail rather than up front, and several distinct topics (sorting, opportunity fields, projection) run together without visual separation.

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 6 parameters, nested filter objects, and a high-stakes silent-failure mode, the description covers routing, pagination, error semantics, ordering, and object-specific quirks. Return fields are restated even though an output schema exists, but that repetition is harmless and the coverage is complete for correct invocation.

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, but the description adds genuine meaning: projection 'actions' semantics for tasks (sequence steps, deduped reminders, exact counts plus paged rows), the write-with-taskId/enrollmentId caveat guarding against using projection ids as write targets, and how filters behave when unsupported. The limits parameter and cursor mechanics are left to the schema, which is fine.

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+resource+scope: "List/filter any object" with built-in typed filters, and immediately distinguishes what it is not by routing report-shaped questions to run_report. An agent can tell it apart from get_record, run_report, and read_changes without opening a 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?

Explicit when-to-use clause ("a plain list — open tasks, deals in a stage, contacts at an account — before run_report") with the alternative named and the selecting condition. It also gives operational directives — follow every page, fix inputs before claiming matches or none — which prevent the most likely misuse of a paged, filter-silently-ignoring endpoint.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources