Skip to main content
Glama

Filter tickets

filter_tickets
Read-onlyIdempotent

Search Freshservice tickets with field-based queries to find records by status, priority, agent, dates, tags, or custom fields, returning paginated matches and total counts.

Instructions

Search tickets with the Freshservice query language (30 results per page).

Filterable fields: requester_id, email, agent_id, group_id, priority, status, impact, urgency, tag, due_by and fr_due_by (YYYY-MM-DD), created_at and updated_at (YYYY-MM-DD or UTC datetime), workspace_id (0 = all workspaces) and custom fields by API name (see get_ticket_fields). Field names are case-sensitive snake_case. Examples: "status:2 AND priority:4", "agent_id:null AND created_at:>'2025-01-01'", "(group_id:12 OR group_id:15) AND status:3", "tag:'vip'". :> and :< are documented as inclusive (>= and <=). Values must be valid ones (status 2-5, priority 1-4, ...) or the API answers 400. The response includes "total" with the overall match count.

Input Schema

NameRequiredDescriptionDefault
pageNoPage number, starting at 1
queryYesFreshservice query: field:value terms joined by AND / OR with optional (parentheses). Numbers bare (priority:3); strings and dates in single quotes (tag:'vip', created_at:>'2025-01-01'); booleans bare; null for empty (agent_id:null). ':>' and ':<' mean greater/less than OR EQUAL. Max 512 characters. The outer double quotes the API requires are added for you.
workspace_idNoWorkspace ID (multi-workspace accounts). Defaults to $FRESHSERVICE_WORKSPACE_ID; 0 means all workspaces where supported.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint true, so safety is covered. The description adds genuinely non-obvious behavior: a hard 30-result page cap, a 400 response on invalid enum values, case-sensitive snake_case field names, and that the response carries a 'total' match count. That is real operational context beyond the annotations; only paging behavior and sort order are left unstated.

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 purpose and the page-size caveat, then organized into field list, operator semantics, examples, and error behavior. Dense but every line carries operational value; the example block is the only part that runs long.

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?

An output schema exists and the description still usefully calls out the 'total' field, so return-value explanation is not missing. Combined with the field list, invalid-value behavior, and 512-char limit (in schema), an agent has enough to call this correctly; only pagination-through-many-pages and sorting are unaddressed.

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 goes further by enumerating the filterable fields, giving four realistic query examples, noting the :> / :< inclusive semantics, and pointing to get_ticket_fields for custom field API names. This meaningfully reduces bad-query risk beyond what the schema property text provides.

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 ('Search tickets') and names the mechanism (Freshservice query language) plus the scope limit (30 results per page). It is clearly a query-based search rather than a plain listing, but it never names the sibling tools (get_tickets, get_ticket_by_id) it complements, so 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 Guidelines3/5

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

Usage is implied by the query-language framing and the field list, which tells the agent this is the tool for conditional retrieval. However, there is no explicit 'use this instead of get_tickets when you need filtering' or guidance on paging through more than 30 results, so the agent must infer when this is the right choice.

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

Deploy Server

Other Tools