Skip to main content
Glama

set_task_recurrence

Set a recurring schedule for a task. Use natural language patterns like 'every week' or 'every Monday' to update or clear recurrence.

Instructions

Set task recurrence pattern.

Args: repeat: Recurrence pattern (e.g., "every week", "every 2 days", "every monday", "after 1 week"). Empty string to clear. task_name: Task name to search for task_id: Specific task ID taskseries_id: Task series ID list_id: List ID

Returns: Updated task details

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
repeatYes
task_nameNo
task_idNo
taskseries_idNo
list_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Handler function that sets a task's recurrence pattern by calling rtm.tasks.setRecurrence API with a repeat string (e.g., 'every week', 'every monday') or empty string to clear. Resolves task IDs, makes the API call, and returns the updated task details.
    @mcp.tool()
    async def set_task_recurrence(
        ctx: Context,
        repeat: str,
        task_name: str | None = None,
        task_id: str | None = None,
        taskseries_id: str | None = None,
        list_id: str | None = None,
    ) -> dict[str, Any]:
        """Set task recurrence pattern.
    
        Args:
            repeat: Recurrence pattern (e.g., "every week", "every 2 days",
                   "every monday", "after 1 week"). Empty string to clear.
            task_name: Task name to search for
            task_id: Specific task ID
            taskseries_id: Task series ID
            list_id: List ID
    
        Returns:
            Updated task details
        """
        client: RTMClient = await get_client()
        ids = await _resolve_task_ids(client, task_name, task_id, taskseries_id, list_id)
        if "error" in ids:
            return build_response(data=ids)
    
        result = await client.call(
            "rtm.tasks.setRecurrence",
            require_timeline=True,
            repeat=repeat,
            **ids,
        )
    
        tasks = parse_tasks_response(result)
        task_data = tasks[0] if tasks else {}
        timezone = await _get_user_timezone(client)
    
        message = f"Recurrence set: {repeat}" if repeat else "Recurrence cleared"
        return build_response(
            data={
                "task": format_task(task_data, timezone=timezone),
                "message": message,
            },
            transaction_id=get_transaction_id(result),
        )
  • Registration function that wraps all task tool definitions including set_task_recurrence via the @mcp.tool() decorator on line 675.
    def register_task_tools(mcp: Any, get_client: Any) -> None:
        """Register all task-related tools."""
  • Server entry point that registers all tool modules including register_task_tools which contains set_task_recurrence.
    # Register all tools
    register_task_tools(mcp, get_client)
    register_list_tools(mcp, get_client)
    register_note_tools(mcp, get_client)
    register_utility_tools(mcp, get_client)
  • Helper function to resolve task identifiers by name or direct IDs, used by set_task_recurrence to locate the target task.
    async def _resolve_task_ids(
        client: RTMClient,
        task_name: str | None,
        task_id: str | None,
        taskseries_id: str | None,
        list_id: str | None,
    ) -> dict[str, Any]:
        """Resolve task identifiers, searching by name if needed."""
        if task_name and not task_id:
            task = await _find_task(client, task_name)
            if not task:
                return {"error": f"Task not found: {task_name}"}
            return {
                "task_id": task["id"],
                "taskseries_id": task["taskseries_id"],
                "list_id": task["list_id"],
            }
    
        if not all([task_id, taskseries_id, list_id]):
            return {"error": "Must provide task_name or all three IDs"}
    
        return {
            "task_id": task_id,
            "taskseries_id": taskseries_id,
            "list_id": list_id,
        }
Behavior2/5

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

No annotations provided, and the description does not disclose side effects, such as overriding existing recurrence, or authorization needs. It implies mutation but lacks behavioral details.

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?

The description is compact with a clear Args/Returns structure. It conveys essential information without unnecessary verbosity, though could be tightened slightly.

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

Completeness3/5

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

With 5 parameters and no annotations, the description covers the basic purpose and parameter meanings but lacks explanation of error conditions, behavior on existing recurrence, or output schema details. Output schema exists but is not referenced.

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?

Despite 0% schema coverage, the description adds meaning for the repeat parameter with examples and notes that an empty string clears recurrence. However, the relationship between optional identification parameters is unclear.

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 'Set task recurrence pattern' with a specific verb and resource. It provides examples of recurrence patterns, differentiating it from sibling tools like set_task_due_date or postpone_task.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, or prerequisites. The description does not mention when to use set_task_recurrence vs other task modification tools.

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/ljadach/rtm-mcp'

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