Skip to main content
Glama

task_defer_smart

Defer a task to a date computed from a high-level intent like 'next work day' or 'in 3 business days', avoiding weekends or off-hours. Supports dry-run and idempotency.

Instructions

Defer a task to a date computed from a high-level intent (e.g. 'next work morning', 'skip weekends', 'in 3 business days'), instead of guessing an ISO date that may land on a weekend or off-hours. Variants: next-work-day, next-weekday, in-business-days, after-event (gated on calendar bridge), next-month-start, explicit-with-skip-weekends. Morning/afternoon defaults are configurable via OMNIFOCUS_MORNING_HOUR / OMNIFOCUS_AFTERNOON_HOUR env (default 09:00 / 14:00). Do NOT use this for unconditional ISO-date defers — prefer task_update with deferDate. Returns { taskId, resolvedDeferDate, reason } so the agent can echo the resolved date verbatim. Side effects: writes the resolved deferDate via task_update; supports dry_run, idempotency_key, and expectedModifiedAt for safety. Triggers a sync. Example: task_defer_smart({ taskId: '...', intent: { kind: 'next-work-day' } })

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
intentYesHigh-level defer intent. Discriminated union on `kind` — see tool description for variants.
taskIdYesID of the task to defer.
dry_runNoWhen true, validates input and resolves the intent but does NOT write to OmniFocus. Returns the resolved date + reason in the response with meta.dryRun = true.
idempotency_keyNoIdempotency key for retry-safe defers. Identical subsequent calls within the TTL window replay the original envelope with meta.idempotentReplay = true instead of re-applying.
expectedModifiedAtNoOptimistic-concurrency guard: ISO-8601 timestamp from a recent task_get. If the task's current modifiedAt differs, the call fails with OF_CONFLICT and no update is performed. Omit to skip the check.
Behavior4/5

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

With no annotations, the description adequately discloses side effects: it writes the resolved deferDate via task_update, triggers a sync, and supports idempotency, concurrency control, and dry_run. It also returns resolvedDeferDate and reason. However, it does not explicitly state that it is a write operation or detail all possible error states, but it is fairly transparent.

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 description is a single dense paragraph that front-loads the primary purpose, then systematically covers variants, environment variables, exclusions, return values, side effects, safety features, and an example. Every sentence adds value with no redundancy.

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 there is no output schema, the description explains the return object (taskId, resolvedDeferDate, reason). It covers side effects (writes, sync), safety (dry_run, idempotency, expectedModifiedAt), and provides an example. The sibling tools list includes task_update and batch variants, which are adequately addressed by the 'when not to use' note.

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?

The input schema has 100% description coverage, but the tool description adds value by explaining the high-level intent concept for the 'intent' parameter, listing all variants, and noting environment variables for defaults. This exceeds what the schema alone provides.

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 clearly states that the tool defers a task to a date computed from a high-level intent, with specific verb 'Defer' and resource 'task'. It distinguishes from unconditional ISO-date defers by explicitly saying to use task_update instead, and lists multiple variants, making the purpose unambiguous.

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?

The description provides explicit guidance on when to use this tool (for smart defer based on intent) and when not to (for unconditional ISO-date defers, prefer task_update). It enumerates intent variants and gives an example, offering clear context and alternatives.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/torsday/omnifocus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server