Skip to main content
Glama

Set or change how often a live table refreshes

reschedule_table

Sets a live table's refresh schedule, or replaces the one it has, without starting a run or fetching anything. A table that went live on its first run has NO schedule yet (get_table shows schedule null, the chat shows "No refresh schedule"): this is the tool that gives it one. When the table's recipe cannot refresh yet, the schedule is HELD rather than applied and the answer carries schedule null: report that, and do not call again. It is also the way to change a cadence without the demote and promote that would reset the table and buy a catch-up refresh. State exactly one of cron (five fields, evaluated in UTC) or interval_seconds (the interval counts from now). rationale records why, kept verbatim beside the schedule. lock: true freezes the schedule so the platform stops adjusting it to the source; leave it out to let it keep learning from there. Pass expected_version from get_table so a table that moved in between is refused rather than overwritten. Example: {"table_id": "…", "cron": "15 6 * * *", "rationale": "The agency publishes the previous day by 06:00 UTC."}. Returns {table_id, dataset_id, promotion_status, schedule, version, dashboard_url}. Only a table that is not live is refused (demoted or never built); a live table with no schedule is exactly what this sets. A schedule that fires more often than the table allows is refused with the floor named. A recorded schedule refreshes a table only where its recipe can refresh — read get_table before saying it does.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cronNo
lockNo
table_idYes
timezoneNo
rationaleNo
expected_versionNo
interval_secondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=false), so the description carries the real burden and does: no run is started, the schedule is HELD rather than applied when the recipe cannot refresh, lock freezes platform adjustment, expected_version causes a conflict refusal rather than an overwrite, and rationale is kept verbatim. It even discloses the return shape. No contradiction with destructiveHint=false, since resetting a table is explicitly what this tool avoids.

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?

Purpose is front-loaded and most sentences carry distinct operational information (held schedules, floor refusal, lock, version guard). It is dense and unusually long, with a few clauses that could be tightened, but almost nothing is purely redundant.

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?

For a complex mutation tool with no output schema and undocumented parameters, the description covers purpose, prerequisites, conflict handling, refusal modes, the held-schedule edge case, and even the returned fields. An agent has everything needed to call it correctly and interpret the result.

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?

With 0% schema description coverage the description must compensate, and it explains cron (five fields, UTC), interval_seconds (counts from now), rationale (verbatim), lock (freezes adjustment), and expected_version (from get_table). However, the 'timezone' parameter is never mentioned and 'evaluated in UTC' arguably conflicts with its existence, leaving a small gap for a 7-parameter tool.

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?

Opens with a specific verb and resource: 'Sets a live table's refresh schedule, or replaces the one it has, without starting a run or fetching anything.' It immediately distinguishes itself from start_run, promote_table, and demote_table by stating what it does not do, so an agent can identify it without opening the 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 about when to use it (a live table with no schedule, 'get_table shows schedule null'), when not to act (schedule HELD when recipe cannot refresh — report and do not call again), the alternative it replaces (demote+promote that resets the table), and refusal conditions (non-live table, cadence below the floor). Names get_table as the prerequisite read.

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