Skip to main content
Glama

Search items

search_items
Read-only

Search through OmniFocus tasks, projects, folders, and tags in one pass using a case-insensitive substring match on names or notes, returning grouped IDs with per-type totals.

Instructions

Search tasks, projects, folders, and tags in one pass by name (optionally notes). Case-insensitive substring match; returns ids grouped by type with honest per-type totals.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesText to look for. Plain case-insensitive SUBSTRING match — not fuzzy, not a regular expression
typesNoWhich entity types to search (default: all four — task, project, folder, tag)
searchInNoWhere to look (default: names). Notes only exist on tasks and projects, so 'notes' returns nothing for folders and tags
limitPerTypeNoMaximum rows returned PER TYPE (default: 20, max: 100). Every match is counted before the cut, so the output always reports the true total
includeCompletedNoInclude finished work (default: false, which hides completed/dropped tasks and done/dropped projects)
includeProjectRootsNoInclude project root tasks (default false).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
metaNo
toolYes
successYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.7.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the description correctly aligns with a safe read operation. It adds valuable behavioral context beyond the annotations: it specifies the exact matching semantics (plain substring, case-insensitive, not fuzzy or regex), that results are grouped by type, that per-type totals are honest (counted before the limit is applied), and that notes only exist on tasks/projects. These details help the agent set expectations and avoid misinterpreting results.

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?

The entire description is a single, well-structured sentence that front-loads the core purpose and then packs in the key behavioral facts (case-insensitive substring, grouped ids, honest totals) without any filler. It earns every word and remains immediately scannable, which is ideal for an agent deciding whether to invoke the tool.

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?

The tool has an output schema, so the description doesn't need to detail return structures. The description covers the core search semantics, the type limitation for notes, and the honest-total guarantee. It omits the default for includeCompleted and limitPerType, but those are already in the schema with clear defaults. Overall, an agent has everything needed to call it correctly without extra probing.

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?

The schema provides a description for every parameter (100% coverage), so the description itself doesn't need to re-explain each one. However, it does add a couple of useful cross-cutting cues, like the substring match behavior and the note limitation, that aren't captured in any single parameter description. Since the schema already does the heavy lifting and the description adds only marginal param-specific value, a 3 is appropriate per the 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 states a specific verb ('Search') and a concrete resource scope ('tasks, projects, folders, and tags in one pass'), which immediately distinguishes it from narrower siblings like search_projects and search_tags. It also clarifies the matching mode ('Case-insensitive substring match') and the output shape ('returns ids grouped by type'), so an agent knows exactly what this tool does and how it differs from the rest.

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?

The description implies this is the go-to tool for searching across multiple entity types at once, but it never explicitly names alternatives like search_projects or search_tags, nor does it say 'use this when you need a unified search' or 'when you only need one type, use the specific search'. The behavioral details (notes only on tasks/projects) provide context, but there is no direct guidance on when to choose this over a dedicated sibling, so the agent must infer the routing.

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