Skip to main content
Glama

Apply a setacf change

setacf_apply

Apply a MAX+plus II .acf change, backing up the file first and returning a line diff. Requires confirm:true to write.

Instructions

Execute a setacf change. Backs the .acf up first and returns a line diff. Requires confirm:true. Prefer calling setacf_plan first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pinNoPin number to assign.
kindNoAssignment kind. INPUT_PIN, OUTPUT_PIN or BIDIR_PIN sets a pin; omit it when setting a device or a raw variable.
rootNoMAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths.
asyncNoRun in the background and return a jobId immediately instead of blocking. Use for any compile or simulation that may outrun the client timeout: a client timeout does NOT stop the child process, so a blocking call that is abandoned keeps running with nobody holding the result. Poll with job_status.
valueNoValue paired with variable for advanced use.
backupNoBack up the .acf first (default true).
createNoCreate the .acf if it does not exist (-c). Use only when bootstrapping a new project.
deviceNoDevice to assign, for example EP1K30TC144-1. Written as the DEVICE variable in the CHIP section.
signalNoSignal name to constrain, for example "|CLK" or "CLK". A leading pipe is added automatically if absent.
confirmYesMust be true to actually write.
projectYesProject name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
sectionNoACF section name. Device and pin edits default to CHIP; other settings live in sections such as SIMULATOR_CONFIGURATION.
modifyToNoNew value for an existing section (-m). Requires section and sectionValue.
variableNoRaw setacf variable for advanced use, for example "DEVICE" or a full "\"|SIG\":PIN" form.
timeoutMsNoHard timeout in milliseconds. A client timeout is wall-clock and progress does not extend it, so keep this below the client budget.
workspaceNoDirectory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.
prependPathNoHierarchy path prefix to prepend to the variable (-p), for a signal inside a sub-design.
sectionValueNoSection value, for example the chip name in "CHIP top". Required when the section does not exist yet, because setacf cannot name a section it is creating.
deleteVariableNoName of the variable to delete from its section (-d).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.10.3

TDQS

A4.2/5.0
Behavior4/5

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

Adds behavior the annotations do not convey: the .acf is backed up first, the call returns a line diff, and a confirm gate is enforced. This is meaningful context for a mutating tool whose annotations only say readOnlyHint=false/idempotentHint=false; the backup-first detail also explains why destructiveHint=false is plausible. No contradiction.

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?

Four terse sentences, front-loaded with the action and the backup/diff behavior, followed by the two operational requirements. Every sentence carries information; nothing is padding.

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

Completeness4/5

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

For a high-complexity, 19-parameter mutation tool with no output schema, the description covers the essential gates (confirm, plan-first) and return shape (line diff). What remains, the per-parameter semantics for sections/variables/paths, is fully handled by the schema.

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?

With 100% schema description coverage across 19 parameters, the schema already documents every argument in detail. The description only restates the confirm requirement and the backup behavior (both already in the schema), adding no new format or interaction guidance, so the baseline 3 applies.

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?

States a specific verb ('Execute') and resource ('a setacf change'), and explicitly positions itself against its sibling by saying 'Prefer calling setacf_plan first,' so an agent can distinguish the apply step from the planning step 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 Guidelines4/5

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

Gives a hard prerequisite ('Requires confirm:true') and names the recommended alternative workflow ('Prefer calling setacf_plan first'). It does not state explicit when-not-to-use conditions or failure modes, so it stops just short of a 5.

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