Skip to main content
Glama

Manage a workspace trigger (SFTP/AWS S3 pull, spec chaining, or schedule)

manage_trigger
Destructive

Create, list, update, delete, or fire a workspace job trigger. Four types:

  • "sftp"/"aws_s3": pulls files from a connection (sftp: remote server; aws_s3: S3 bucket/prefix) into an already-analyzed data spec on a schedule (hourly/daily/monthly, UTC). Type must match the connection's type; aws_s3 also requires s3Bucket (s3Prefix optional). Natural-language preRules (which files to pick up) and postRules (what to do after upload) are compiled into executable code server-side — never pass raw code. The connection must already exist and have passed test (see manage_connection). For a first-time "set up a daily/scheduled pull" request, prefer setup_scheduled_pull, which sets up the connection and trigger together.

  • "spec_success": fires a spec automatically whenever a DIFFERENT spec's job completes successfully (set upstreamSpecName to that spec). No connection/frequency. Use this when the request ties the run to another job finishing (e.g. "run this after the customers load finishes").

  • "schedule": fires a spec directly on a plain frequency (hourly/daily/monthly, UTC), no connection and no upstream spec. Use this when the request is time-based with no dependency (e.g. "run this every morning").

IMPORTANT: "spec_success" and "schedule" triggers can only target a table-source (sourceType: "tables") spec (see onboard_data_source) — they have no file to load, only a generated query to re-run. If asked to set up a scheduled/recurring job that reads from an already-loaded table (e.g. "keep a daily summary of the orders table up to date"), create that as an onboard_data_source sourceType "tables" spec first, THEN create the trigger here. Prefer "spec_success" when the user's phrasing implies "after X loads/finishes"; prefer "schedule" when they just want a cadence with no stated dependency; ask if genuinely ambiguous. For sftp/aws_s3, the referenced spec must already have been analyzed once (see onboard_data_source).

After firing a trigger (action "run-now") — or any one-off manual run — use action "run-history" to monitor its outcome: it starts as status: running and settles to success, failed, or no-files, with filesPulled and a message.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNoTrigger type. Optional for create (defaults to "sftp"). For sftp/aws_s3 must match the connection's type.
actionYesWhich operation to perform.
cursorNorun-history: opaque `nextCursor` from a prior page (omit for the first page).
dedupeNosftp/aws_s3 only. Required for create — ask the user rather than assuming a value; do not default it silently. Whether repeat pulls should skip files already loaded into this spec, matched by file name. Has real consequences: with dedupe true, a file that reappears under the same name (e.g. re-uploaded with corrected data) will be silently skipped; with dedupe false, an unchanged file left on the server will be reloaded every run. Omit only for update, where omitting leaves the trigger's existing setting unchanged.
specIdNorun-history: filter to runs of triggers feeding this spec.
enabledNoWhether the trigger is active. Defaults to true on create.
endTimeNorun-history: ISO 8601 upper bound (inclusive) on when the run started.
pageSizeNorun-history: records per page (default 25).
preRulesNosftp/aws_s3 only. Natural language: which files to pick up (e.g. "only *.csv under /outbound").
s3BucketNoaws_s3 only. Bucket to poll. Required for create when type is "aws_s3", or to change it on update. Each run lists at most 5000 objects from the bucket/prefix (oldest key first) — past that, new files can be missed. On create, a successful response includes a `warnings` array with this note; relay it to the user and suggest an S3 lifecycle rule to expire/transition old objects.
s3PrefixNoaws_s3 only. Optional key prefix; defaults to the whole bucket.
specNameNoThe spec this trigger fires. Required for create.
frequencyNoRequired for create when type is "sftp", "aws_s3", or "schedule"; optional on update to change the schedule. Not applicable to spec_success.
postRulesNosftp/aws_s3 only. Natural language: what to do after a file loads (e.g. "rename with .done suffix").
startTimeNorun-history: ISO 8601 lower bound (inclusive) on when the run started.
triggerIdNoExisting trigger. Required for update/delete/run-now/clear-processed-files.
workspaceIdNoWorkspace to act on. Defaults to your only workspace if you have exactly one.
connectionIdNosftp/aws_s3 only. Connection to pull from. Required for create when type is "sftp"/"aws_s3". Also usable as a run-history filter.
upstreamSpecNameNospec_success only. The spec whose successful job completion fires this trigger. Required for create when type is "spec_success".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
runsNoaction "run-history" only
typeNo
countNoaction "list" only
dedupeNo
specIdNo
deletedNoaction "clear-processed-files" only
enabledNo
messageNo
pageSizeNoaction "run-history" only
preRulesNo
s3BucketNo
s3PrefixNo
specNameNo
triggersNoaction "list" only
warningsNoaction "create", type "aws_s3" only. Advisory notes, e.g. the 5000-object S3 listing cap — relay to the user.
createdAtNo
createdByNo
frequencyNo
lastJobIdNo
lastRunAtNo
postRulesNo
triggerIdNo
updatedAtNo
nextCursorNoaction "run-history" only
workspaceIdNo
connectionIdNo
lastRunStatusNo
upstreamSpecIdNotype "spec_success" only
upstreamSpecNameNotype "spec_success" only

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already flag readOnlyHint=false, destructiveHint=true, openWorldHint=true. The description adds rich context: for s3 it notes the 5000-object listing limit and warns to relay the `warnings` array and suggest an S3 lifecycle rule; for dedupe it details what happens when the same file reappears; for run-now it explains status transitions to success/failed/no-files. It also warns that preRules/postRules compile server-side (never pass raw code). Minor deduction: some behaviors (e.g., what happens on delete) are not enumerated, but the description goes well beyond the structured annotations.

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 substantial but every section serves a purpose: lead verbs, per-type paragraphs, an 'IMPORTANT' callout for the most common mistake, a bulleted list of trigger types, and a final 'after firing' note. Formatting with newlines and bold text improves scannability without bloat.

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 19-parameter, 7-action, 4-type tool, the description covers all operational contexts: create vs. update vs. run-history, prerequisites (connection tested, spec analyzed, table-source spec for spec_success/schedule), type-specific requirements (s3Bucket for aws_s3), and monitoring via run-history. The output schema's existence lowers the need to document return values, and the description still mentions `filesPulled`/`message` fields. Nothing critical left unexplained given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3. But the description goes further: it explains the `dedupe` parameter's real-world consequences (silently skipped re-uploads or reloaded files), documents connection prerequisites, clarifies the relationship between type and connection, and explains the `warnings` array in the response, adding meaning beyond the schema's prose.

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 opens with a specific verb ('Create, list, update, delete, or fire') and resource ('a workspace job trigger') and immediately distinguishes four trigger types (sftp/aws_s3, spec_success, schedule) with concrete examples ('run this after the customers load finishes'). This clearly differentiates from siblings like setup_scheduled_pull and manage_connection by naming them where relevant.

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 guidance is given throughout: 'prefer setup_scheduled_pull' for first-time scheduled pulls, 'Prefer spec_success when... prefer schedule when... ask if genuinely ambiguous,' and the special constraint that spec_success/schedule only target table-source specs. This goes beyond vague alternatives to provide decision rules with concrete user-phrasing examples.

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.

TDQS

A4.2/5.0
Disambiguation4/5

Most tools map to distinct lifecycle phases and the descriptions explicitly separate overlapping-sounding concepts, such as list_data versus submit_query and the generic call_dpf_api from dedicated tools. The three finish_* tools are similarly worded but each is clearly tied to a specific preceding operation, so confusion should be limited.

Naming Consistency4/5

The tool names are uniformly snake_case and mostly follow a readable verb_noun pattern like delete_data_spec, create_workspace, and run_data_job. It is not a perfect 5 because broader names like manage_connection and manage_trigger, the generic call_dpf_api, and list_my_workspaces with its pronoun make the naming pattern less predictable.

Tool Count4/5

At 16 tools, the set is just slightly above the ideal range, but the tools generally earn their place by representing distinct steps or workflow boundaries. The start/finish pairs create some apparent redundancy, but that is a natural consequence of the multi-step file-upload flow.

Completeness4/5

The toolset provides solid coverage of the core data-platform lifecycle: workspaces, data specs, jobs, connections, triggers, scheduled pulls, status polling, and SQL querying. Some additional DPF capabilities are only reachable through the generic call_dpf_api rather than dedicated tools, and billing mutations are explicitly left outside the MCP surface, so coverage is strong but not absolute.

Resources