Skip to main content
Glama
customaise

customaise

Official

set_script_decisions

Idempotent

Select the Script Decisions provider (jev, Decisions API, or off) for one script and control which question lists switch on, so CM_decisions calls run with saved provider keys.

Instructions

Choose the Script Decisions provider for one script on this device: jev, openai-decisions (Decisions API), or off. Once a provider is chosen, the script's CM_decisions calls run without asking and are billed to the person's saved key for that provider, so choose one only when the person wants it. sets switches On exactly the question lists it names, by the hashes get_script_decisions returns for this scriptId, and every other list Off. Without sets, unchanged code keeps its On/Off choices and changed code switches every list On. Choosing a provider again also resumes a script the loop guard paused for repeating the same input (pausedReason loop_repeat).

Choosing jev or openai-decisions needs the person to have turned on Script Decisions under Full access in Customaise Settings, Agent permissions; only they can, in the extension. Switching a script off is always allowed. These stay with the person: provider keys, this device's Allow Script Decisions switch, daily limits, pausing this device, a script paused for a runaway loop (loop_runaway), and scripts shared with them. When the error type is person_required, tell the person the next step the message names and do not retry. Other refusals carry type rejected, not_found, auth_required or invalid_argument, with the precise reason in code. After service_unavailable or a timeout the outcome is uncertain: read the state with get_script_decisions before trying again. Returns the script's state as get_script_decisions does for one script. Needs extension 1.4.0 or later.

Input Schema

NameRequiredDescriptionDefault
setsNoHashes of the question lists to switch On, from get_script_decisions with this scriptId; every other list goes Off. Only with jev or openai-decisions. Omit to keep the current choices for unchanged code.
providerYesjev, openai-decisions (Decisions API), or off to switch the script provider off.
scriptIdYesThe script ID, from list_scripts or get_script_decisions.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv3.2.9

TDQS

A4.8/5.0
Behavior5/5

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

Well beyond the annotations, which only declare idempotent, non-read-only, non-destructive. The description discloses billing to the person's saved provider key, the permission prerequisite and who must grant it, which settings remain human-controlled, the full refusal taxonomy (person_required, rejected, not_found, auth_required, invalid_argument) with code-level reasons, the loop-guard resume behavior, and an extension version floor. This is exactly the context annotations cannot carry.

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?

Front-loaded with the action and the enum, followed by consequences, then prerequisites, then error handling — a sensible order. It is dense and sentence-heavy, though: the second and third sentences pack billing, scoping, default behavior and loop-guard resumption into long run-ons that an agent must parse carefully. No sentence is truly wasted, but tighter segmentation would improve scanability.

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 mutation with no output schema, the description covers the return value by reference ('Returns the script's state as get_script_decisions does for one script'), plus prerequisites, side effects, default semantics, error handling and version requirements. Nothing an agent needs to call this safely and correctly appears to be missing.

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?

Schema coverage is 100%, so the baseline is 3, and the description does add the non-obvious semantics of 'sets': it switches On exactly the named hashes and everything else Off, and without sets, unchanged code keeps its choices while changed code switches every list On. The 'changed code' nuance is the real value-add here; the rest largely restates the schema's own description of `sets` and `provider`.

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: 'Choose the Script Decisions provider for one script on this device', and enumerates the three valid values (jev, openai-decisions, off). The pairing with the read-only sibling get_script_decisions is implicit in the description ('as get_script_decisions does'), so an agent can tell the write path from the read path without opening either 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?

Gives explicit gating conditions: 'choose one only when the person wants it', jev/openai-decisions require the person to enable Script Decisions under Full access, while 'Switching a script off is always allowed'. It also handles the failure path ('when the error type is person_required, tell the person the next step... and do not retry') and the recovery path ('After service_unavailable or a timeout... read the state with get_script_decisions before trying again'), which is more than a when-to-use statement.

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