Skip to main content
Glama

Server Details

Governance and grounding layer for engineering teams running AI coding agents (Claude Code, Cursor, Codex). Grounds agents in your codebase's knowledge graph, and adds session audit, policy controls and cost/token visibility.

Ownership verified
Status
Healthy
Uptime
4.3% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 16 tools

Disambiguation4/5

The workflow-definition vs workflow-run and task vs task-execution tools are clearly separated, and the very detailed descriptions explicitly carve boundaries (e.g. query_context says it is not for runs or executions). Minor residual overlap exists among the several read-oriented tools (query_context, list_pr_findings, list_tasks), but most agents can still select correctly.

Naming Consistency5/5

Nearly every tool follows a clean snake_case verb_noun pattern (list_workflows, get_workflow_run, start_task, approve_workflow_step), with the same verbs reused consistently across resources. The only slight outlier is get_started, but it does not break the overall convention.

Tool Count4/5

16 tools is reasonable for a platform spanning workflows, tasks, findings, and project context, with each tool earning its place. It sits just above the ideal 3-15 range but is far from bloated.

Completeness4/5

The surface covers the workflow lifecycle (list/get/start/cancel/approve), task execution (list/start/get), project context reads, and finding verdicts, so core workflows have no dead ends. Some referenced operations (e.g. record_finding, workflow authoring) live on another path, leaving minor gaps an agent can work around.

Available Tools

16 tools
approve_workflow_stepApprove an aictrl workflow stepA
Destructive
Inspect

Approve or reject the manual quality gate currently pausing a workflow run, bound to the exact expected code revision (and optionally the approval digest of the reviewed outputs). Every decision records an approval receipt that downstream nodes can read; rejection cancels the run. Only the run owner or an organization admin may decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional gate-decision audit note.
run_idYesWorkflow run ID returned by start_workflow or list_workflow_runs.
decisionYesExplicit gate decision.
expected_gateNoThe gate being decided, from get_workflow_run requiredAction (afterWave, gateIndex). A decision for a gate the run is no longer paused on is rejected with gate_changed.
expected_digestNoOptional approvalDigest shown by get_workflow_run requiredAction. Binds the decision to the exact upstream outputs reviewed; a stale digest is rejected with digest_mismatch.
organization_idYesAICtrl organization ID returned by list_organizations.
expected_revisionYesExact 40-character Git revision shown by get_workflow_run.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds important consequences: every decision records a receipt readable by downstream nodes, rejection cancels the run, and decisions are bound to revision/digest. It does not mention rate limits or auth beyond role, but adds enough beyond 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?

Two concise sentences; the first front-loads the action and binding constraints, the second covers outcomes and permissions. Every clause earns its place with no redundancy.

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?

Given 7 parameters, nested objects, and no output schema, the description covers the core decision mechanics, outcomes, and permissions. It omits return value details (no output schema) and error codes beyond schema mention, but is largely complete for invocation.

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?

Schema coverage is 100%, so the schema fully documents all parameters including nested objects and enums. The description mentions expected_revision and approval digest but does not add syntax or format details beyond the schema, so baseline 3 is appropriate.

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 states a specific verb ('Approve or reject') and resource ('manual quality gate currently pausing a workflow run'), and adds a distinguishing scope: bound to expected code revision and optional approval digest. It is clearly distinct from siblings like cancel_workflow_run or get_workflow_run.

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?

It describes the context of use (a paused manual gate) and authority ('Only the run owner or an organization admin may decide'), and implies the need for expected_revision. However, it does not explicitly name alternatives or when to use reject vs. cancel_workflow_run.

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

cancel_workflow_runCancel an aictrl workflow runA
Destructive
Inspect

Request cancellation of a queued, running, pausing, or paused workflow run; a run in any other status is rejected with conflict. Waiting and queued nodes are cancelled immediately. If nodes are still running, the run moves to cancelling while that work drains and becomes cancelled later; call get_workflow_run to observe completion. Cancellation does not promise to interrupt running work immediately and does not roll back effects that already completed. Only the run owner or an organization admin may cancel.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional cancellation reason.
run_idYesWorkflow run ID returned by start_workflow or list_workflow_runs.
organization_idYesAICtrl organization ID returned by list_organizations.

TDQS

A4.7/5.0
Behavior5/5

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

Despite destructiveHint=true, the description adds substantial context: nodes in waiting/queued are cancelled immediately, running nodes drain to a 'cancelling' state, cancellation is not an immediate interrupt, and completed effects are not rolled back. It also states the authorization rule (owner or org admin). This is exactly the kind of nuance 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each front-loaded with a key behavioral fact. No repetition of schema fields, no boilerplate. Every sentence earns its place.

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?

Covers eligibility, immediate vs deferred cancellation semantics, non-interrupt caveat, no-rollback caveat, observability path, and authorization. With no output schema, this is complete for an agent to call correctly and interpret the result.

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?

Schema coverage is 100%, so the schema already documents all three parameters including the reason field. The description adds no parameter-level detail beyond what is in the schema, so baseline 3 is appropriate.

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 (cancel) and resource (workflow run) and enumerates the statuses from which cancellation is valid. Distinguishes clearly from sibling get_workflow_run, which is only referenced for observation.

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?

Explicitly says which statuses are acceptable and that any other status is rejected with conflict. Also names get_workflow_run as the way to observe completion, giving the alternative for a follow-up need.

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

get_startedCheck aictrl account readinessA
Read-only
Inspect

Use this when a user wants to start using aictrl, asks what they can do with their account, or attempts a repository action whose setup prerequisites are unknown. Returns current readiness and the single best next action. Do not use for general product questions or when repository readiness is already known in the current turn.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentNoOptional allow-listed intent recorded for setup action selection only.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond them: the return is 'current readiness and the single best next action', and that the intent is recorded for setup-action selection. It stops short of describing permissions or any cost/latency traits, so it is not a 5.

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?

Two sentences, zero filler. The positive usage conditions are front-loaded, the return value is stated immediately after, and the exclusion clause is last where it belongs.

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?

Output schema exists, so return values need not be enumerated in the description. With annotations covering safety and the description covering both triggers and exclusions, an agent has enough to select and invoke it. Only the effect of the four intent enum values on behavior remains unexplained, which the schema partly covers.

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?

There is a single optional parameter with 100% schema description coverage and an enum, so the schema already carries the semantics. The description adds nothing about how 'intent' influences the result beyond the schema's own note that it is recorded for setup action selection; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete function — returning account readiness plus the single best next action — and the title reinforces it as an onboarding/readiness check. It is a specific verb+resource, though it never names or contrasts a specific sibling tool by name; the not-for clause handles differentiation indirectly.

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?

It gives three explicit trigger conditions (starting with aictrl, asking what the account can do, unknown setup prerequisites on a repository action) and two explicit exclusions (general product questions, readiness already known this turn). This is exactly the when/when-not guidance an agent needs, with nothing left to inference.

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

get_task_executionGet aictrl task statusA
Read-onlyIdempotent
Inspect

Get the current status and privacy-minimal durable result of a task execution started through public MCP. A PR Explanation execution returns its durable explanation once stored. A Code Review execution reports status only — its findings are delivered as review comments on the pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesExecution ID returned by start_task.
organization_idYesaictrl organization ID returned by list_organizations or get_started.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultNo
statusYes
failureNo
task_idYes
task_typeYes
created_atYes
started_atNo
completed_atNo
execution_idYes
repository_admissionYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and non-destructive behavior, so the bar is lower; the description goes beyond them by disclosing the privacy-minimal payload, that a PR Explanation result is durable and only available "once stored", and that Code Review returns status only. It does not state whether status partially completes, but the added behavioral context is real and non-obvious.

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?

Three tight sentences with no filler; the core operation is front-loaded and the per-execution-type caveats follow immediately. Every clause carries information an agent needs.

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?

An output schema exists, so return values need not be explained, and the description still supplies the key variation across execution types and the asynchrony implied by "once stored". For a 2-parameter read tool with full annotation and schema coverage, nothing material is missing.

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?

Schema description coverage is 100% and both parameters (execution_id from start_task, organization_id from list_organizations/get_started) are documented there. The description adds no format, syntax or constraint detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Get the current status ... of a task execution") and scopes it to executions "started through public MCP", then disambiguates the two execution kinds. It never names a sibling (e.g. get_workflow_run or list_tasks), so it stops short of explicit sibling differentiation.

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?

The description tells the agent the prerequisite (an execution started via start_task) and routes it away from this tool for Code Review findings, which are delivered as PR review comments. It gives clear usage context but states no exclusions or alternative tool names for the status-only case.

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

get_workflowGet an aictrl workflow definitionA
Read-only
Inspect

Get one published workflow definition, with secret trigger configuration removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow ID returned by list_workflows.
organization_idYesAICtrl organization ID returned by list_organizations.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world scope, so safety is covered. The description adds genuine behavioral context beyond that: secret trigger configuration is stripped from the returned definition, which tells the agent the output is redacted and not the full stored config.

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?

A single front-loaded sentence with zero waste; the redaction caveat is attached directly to the resource it qualifies.

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 simple two-param read tool with full annotation coverage, complete schema descriptions and no output schema, the description supplies what is needed, including the redaction note. It just lacks explicit routing guidance relative to the run/step siblings.

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?

Schema coverage is 100% and both required parameters are documented in the schema with provenance (IDs returned by list_workflows / list_organizations). The description adds no parameter-level meaning, so the baseline of 3 is correct.

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 (Get) and resource (one published workflow definition), and the scope word 'one' plus 'published' distinguishes it from list_workflows and get_workflow_run in the sibling set. An agent can identify the tool 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 Guidelines3/5

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

Usage is only implied: taking a single workflow_id suggests fetching a known definition, and the schema notes the ID comes from list_workflows, which hints at the workflow. But there is no explicit when-to-use versus get_workflow_run or list_workflows, and no stated preconditions.

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

get_workflow_runGet an aictrl workflow runA
Read-only
Inspect

Get status, progress, and node results for one known workflow run ID; use list_workflow_runs to discover runs. When requiredAction.type is "approval", the run is paused on a manual gate and polling alone will not resolve it: show the gate to the user and call approve_workflow_step only with their explicit approve or reject decision, passing requiredAction.expectedRevision and, when present, its approvalDigest, afterWave and gateIndex.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesWorkflow run ID returned by start_workflow or list_workflow_runs.
organization_idYesAICtrl organization ID returned by list_organizations.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, yet the description adds critical non-obvious behavior: a run can be paused on a manual approval gate and repeated polling will not advance it. It also discloses which fields must be carried into the follow-up approval call (expectedRevision, approvalDigest, afterWave, gateIndex), which no structured field provides.

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?

Two sentences, front-loaded with the retrieval purpose before the exceptional approval branch. Although the second sentence is long, every clause is operational (paused gate, show to user, require explicit decision, which fields to pass) and none is redundant with the annotations or schema.

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?

With no output schema, the description carries the return-value burden and does so: status, progress, node results, and the requiredAction object with its type. Combined with the approval-gate workflow instructions, an agent has everything needed to read a run and act correctly on a paused gate.

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 description coverage is 100% for the two required parameters (run_id and organization_id), so baseline is 3 and the schema already carries the syntax. The description adds meaning by stressing that run_id must be a known run (from start_workflow or list_workflow_runs) and by naming the requiredAction fields an agent must round-trip into the approval call.

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?

Starts with a specific verb+resource ('Get status, progress, and node results for one known workflow run ID'), which pinpoints exactly what is returned. It also distinguishes itself from the sibling list_workflow_runs by scoping to a single already-known run rather than discovery, so an agent can separate the two 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?

Explicitly names the alternative for discovery ('use list_workflow_runs to discover runs') and gives a concrete when-not condition: when requiredAction.type is 'approval', polling alone will not resolve the paused gate. It further routes the agent to approve_workflow_step and states the precondition (explicit user approve/reject decision), which is unusually complete routing guidance.

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

list_organizationsList available aictrl organizationsA
Read-only
Inspect

List organizations available to the authenticated principal for use with organization-scoped tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds meaningful non-annotation context: results are scoped to the authenticated principal's permissions, which explains why the output can vary between callers. It does not mention ordering, size, or pagination.

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?

A single front-loaded sentence with no redundant restatement of the name or title. Every clause earns its place by adding auth scope and a usage motive.

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 parameterless, read-only listing tool with annotations covering safety and no output schema, the description is nearly sufficient. The implied return (organization identifiers/names) is reasonably clear from 'for use with organization-scoped tools', though the exact item shape is left to inference.

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?

The tool takes zero parameters, so the baseline is 4. There is no argument surface for the description to elaborate on, and the sentence correctly avoids inventing filter options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('List organizations') and adds scope ('available to the authenticated principal'). It is clearly distinguishable from the workflow/task siblings, though it does not explicitly name or contrast with any of them.

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?

'for use with organization-scoped tools' tells the agent the context in which this call is needed — resolving organization identifiers before calling org-scoped tools. It stops short of explicit exclusions or naming an alternative tool.

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

list_pr_findingsPull request review findingsA
Read-only
Inspect

Read all recorded findings for a PR (any lifecycle status) so verdicts can be recorded by exact id. Returns the recorded id and the platform-owned githubCommentId to join against GitHub review comments (exact for findings the platform delivered inline; null for older / un-anchored findings), plus the full claim (description, suggestion, snippets), lifecycle, and the latest verdict and verification. Set include_history for the append-only judgment chains. Judgments written by YOUR OWN run are never returned — a run must not be shown its own prior conclusion as evidence. Findings the obsolescence sweep has resolved are excluded unless include_obsolete is set. Read-only — records nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
prYes
repositoryYes
include_historyNoReturn each finding's append-only judgment history (verdicts and verifications from earlier runs, oldest first) as `judgments`. Default false.
organization_idYesThe organization that owns the pull request. Call list_organizations if you do not have it.
include_obsoleteNoInclude findings the obsolescence sweep resolved as no longer present on the default branch. Default false — judging code that is gone is wasted effort.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly annotations: documents the exact return fields (id, githubCommentId join semantics including null cases, claim, lifecycle, latest verdict/verification), the append-only judgment chains, and three non-obvious filtering rules (own-run exclusion, obsolete exclusion, history toggling). This is rich operational behavior an agent needs.

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 purpose then return semantics and filtering rules; every sentence carries information. It is dense and somewhat long, but no sentence is wasted.

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?

With no output schema, the description fully compensates by enumerating returned fields and their join semantics, plus the behavioral filters. An agent has everything needed to call and interpret this tool.

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?

Schema coverage is 60% and the schema already carries detailed descriptions for include_history and include_obsolete; the description largely restates those rather than adding new param-level meaning. organization_id/repository/pr params get no added explanation in the description, so 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?

Specific verb+resource ('Read all recorded findings for a PR') with the scope ('any lifecycle status') and the downstream purpose ('so verdicts can be recorded by exact id'). It implicitly contrasts with the write-side sibling record_finding_verdict by emphasizing this read returns ids for judging.

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 clear context: use it to obtain exact ids before recording verdicts, and states two exclusion conditions (own-run judgments, obsolescence-swept findings). It does not explicitly name when to prefer this over other listing tools, but the routing intent is clear.

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

list_tasksList runnable aictrl tasksA
Read-onlyIdempotent
Inspect

List the first-party aictrl tasks that can run for one live-authorized repository. It reports only tasks aictrl provisions — Code Review and PR Explanation — and never templates authored inside the organization. An empty result means no first-party task is available for this repository right now; it is not a statement about any other aictrl capability. Listing never starts work.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesaictrl organization ID returned by list_organizations or get_started.
repository_full_nameYesLive-authorized GitHub repository in owner/name form.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tasksYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low; the description adds genuinely useful behavioral context beyond them — result scope (first-party only), the meaning of an empty result, and the guarantee that listing has no side effects. It doesn't state pagination or ordering, but the safety profile is covered by 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?

Three tight sentences, front-loaded with what it lists and immediately qualifying scope and exclusions. Each sentence carries distinct information: scope, exclusion, empty-result semantics, and side-effect safety.

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?

An output schema exists, so return values need no prose. The description covers what an agent needs — scope, exclusions, empty-result interpretation, and no-side-effect guarantee — leaving nothing material unstated for a two-parameter read tool.

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?

Schema description coverage is 100%, so both parameters are already documented with format and constraints. The description reinforces that repository_full_name must be live-authorized but adds no syntax or value semantics beyond the schema. Baseline 3 is appropriate.

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 (List) and resource (first-party aictrl tasks) with an explicit scope constraint ('can run for one live-authorized repository'). It also carves itself out from siblings like start_task and from org-authored templates, so an agent can distinguish it without opening a 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 clear usage context (one live-authorized repository) and an explicit exclusion (never templates authored inside the organization), plus 'Listing never starts work,' which implies the run-it alternative. It stops short of naming start_task or get_task_execution outright, so the routing is inferred rather than stated.

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

list_workflow_runsList aictrl workflow runsA
Read-only
Inspect

Page through org-scoped runs with issue, epic, status, starter and date filters. needs_attention returns failed or approval runs you started or on native issues you own. Items use the same safe projection as get_workflow_run plus native issue identity; unavailable issues are null. Returns {data, nextCursor, hasMore}; while hasMore is true, pass nextCursor as cursor with the same organization_id and filters to fetch the next page. Read-only; never starts or changes a run.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum runs per page (default 50, maximum 100).
sinceNoInclusive creation-time lower bound.
untilNoInclusive creation-time upper bound.
cursorNoOpaque nextCursor; retain the same organization and filters.
statusNoORed statuses; needs_approval is paused with a pending manual gate.
epic_idNoCurrent native epic identifier.
issue_idNoExact native issue identifier.
started_byNoExact starter user identifier.
workflow_idNoWorkflow ID returned by list_workflows.
needs_attentionNoOnly failed/approval runs started by you or on native issues you own.
organization_idYesAICtrl organization ID returned by list_organizations.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only/non-destructive/non-open-world, and the description adds real context beyond them: the returned envelope {data, nextCursor, hasMore}, the cursor-continuation contract, the null behavior for unavailable issues, and the projection shared with get_workflow_run. It stops short of describing ordering or rate limits, so it is strong but not exhaustive.

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?

Four tight sentences, front-loaded with scope and filters, then pagination contract, then the read-only disclaimer. Dense but each sentence carries distinct information; no filler or restatement of the name.

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?

No output schema exists, yet the description supplies the return envelope and pagination protocol, which is what an agent most needs for a list tool with 11 parameters. Combined with 100% schema coverage, an agent has enough to call it correctly; only minor gaps like default ordering remain unstated.

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?

Schema description coverage is 100%, so the schema already documents all 11 parameters including needs_attention, cursor, and the status enum. The description reinforces the filter set and the needs_attention semantics but adds little syntax or format detail beyond the schema, which is the expected baseline when the schema does the heavy lifting.

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 (page through) and resource (org-scoped workflow runs) plus the filter dimensions, and explicitly references the sibling get_workflow_run for the projection. An agent can distinguish this list tool from get_workflow_run, start_workflow, and cancel_workflow_run without opening any 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 concrete usage conditions: filter by issue/epic/status/starter/date, use needs_attention for failed or approval runs you started or own native issues, and the exact pagination loop (pass nextCursor as cursor with the same organization_id and filters). It also rules out the mutation path ('never starts or changes a run'). No explicit naming of a competing list alternative, but the routing is clear.

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

list_workflowsList published aictrl workflowsA
Read-only
Inspect

List published workflows across organizations available to the authenticated principal, or in one organization when organization_id is given. Returns {workflows}, each with its owning organization, ordered by most recent update (ties by organization ID, then workflow ID) and capped at limit. There is no cursor: filter by organization_id or raise limit to see more. Use get_workflow to inspect a selected workflow's parameters, side effects and gates before start_workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum workflows returned (default 50, maximum 100).
organization_idNoAICtrl organization ID returned by list_organizations.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, non-destructive, not open-world), and the description adds genuinely new behavior: ordering by most recent update with deterministic tie-breaks (organization ID, then workflow ID), a hard cap at limit, and the fact that there is no cursor-based pagination. Return shape ({workflows}, each with owning organization) is also disclosed.

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?

Three sentences, all load-bearing: scope first, then return/ordering/pagination constraints, then the next-tool handoff. No filler or repetition of the title.

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 zero-required-parameter read tool with no output schema, the description supplies everything missing elsewhere: return shape, ordering, cap, absence of pagination, and the follow-up tool. Nothing an agent needs to call this correctly is omitted.

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 baseline is 3; the description goes further by explaining that organization_id scopes results to a single org and that limit both caps the result set and is the only way to page beyond it. It stops short of restating format constraints, but adds real semantic value over the schema.

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 and resource ('List published workflows') plus scope ('across organizations available to the authenticated principal, or in one organization when organization_id is given'). This cleanly separates it from siblings like list_workflow_runs and get_workflow, which deal with runs and single-workflow detail.

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?

Explicitly routes the agent forward: 'Use get_workflow to inspect a selected workflow's parameters, side effects and gates before start_workflow.' It also gives the escalation path when results are truncated ('filter by organization_id or raise limit to see more'), which is exactly the when-to-use guidance an agent needs.

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

query_contextQuery aictrl project contextA
Read-only
Inspect

Read project context in exactly six domains: code, system (architecture, data model, APIs, roadmap), issues, backlog (epics and tasks), agent skills, and stack layers. Most actions read stored, indexed context such as the knowledge graph. Two reads reach GitHub live: issues/read returns the current GitHub issue and latest comments (issues/context, list and overlap use stored issue context), and code/read can fetch file content from repositories connected to the organization. Use backlog list/get actions to find existing epic and task IDs before calling update_backlog. Read-only: it does not create, change, or delete backlog, workflow, or GitHub data. Not for workflow runs or task executions: use list_workflow_runs to discover runs, get_workflow_run for a known run ID, and get_task_execution for an execution ID returned by start_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoPrimary search term, file path, symbol, or ID (e.g., "UserService", "EPIC-123", "coding-standards"). For domain=skills with action=load, the primary form is the human-readable skill name returned by list/recommend (e.g., "writing-gherkin"); a skill UUID is still accepted and loads by ID.
actionYesQuery type. Universal actions (work across domains): list, get. Domain-specific actions — code: search, context, impact, callers, deps, plan, traverse, skeleton, batch_context, read, co_changes, churn, authors; system: entity, model, enum, lineage, api, architecture, roadmap, feature; issues: context (stored KG), read (authenticated live GitHub issue and latest comments; params.repoFullName + params.issueNumber), list, overlap; backlog: list (default: epics; params.type="tasks" + epic_id for tasks), get (query=ID, auto-detects epic vs task), list_epics, get_epic, list_tasks, get_task; skills: list, recommend, list_files, load; stack: list_layers, list_agents, get_layer.
domainYesThe area of the project to explore.
paramsNoAdditional filters or options like depth, limit, type, or start_line.
versionNoAPI version (default: v1)
organization_idYesAICtrl organization ID returned by list_organizations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNo
resultYes
coverageNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint/destructiveHint=false, but the description adds real context beyond them: most actions read stored indexed context while exactly two (issues/read, code/read) reach GitHub live, and issues/read requires authentication with repoFullName + issueNumber. It doesn't cover rate limits or pagination/response shape, but the live-vs-stored distinction is genuinely informative.

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 six domains, then live-vs-stored caveats, then exclusions and alternatives - a sensible order. It is dense but not padded; the main cost is that the long action enumeration partially duplicates the schema's action description, which is redundant but still aids action selection.

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 broad multi-domain read tool with an output schema and annotations already present, the description supplies what structured fields cannot: the live-vs-stored split, the ordering requirement before update_backlog, and explicit handoffs to the workflow/task-execution siblings. Nothing an agent needs to select the right domain/action is 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 baseline is 3, but the description goes further: it disambiguates which domain+action combinations exist, clarifies that issues/context, list and overlap use stored issue context while issues/read is live, and states that query accepts an ID, path, symbol, or skill name depending on domain. That is semantic guidance the schema's flat action enum does not convey.

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 states a concrete verb+resource ('Read project context') and immediately enumerates the six exact domains (code, system, issues, backlog, skills, stack), so an agent knows precisely the scope. It also names what it is not (workflow runs, task executions), separating it from siblings.

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?

It gives explicit routing rules: 'use backlog list/get actions to find existing epic and task IDs before calling update_backlog', and 'Not for workflow runs or task executions: use list_workflow_runs... get_workflow_run... get_task_execution...'. This is when-to-use, when-not-to-use, and named alternatives in one place.

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

record_finding_verdictReview finding verdictA
Destructive
Inspect

Apply a post-hoc triage verdict to a finding that was previously recorded via record_finding. Used by the /reply-to-code-review flow to persist whether a finding is TRUE / FALSE / UNCERTAIN and the FIX / DEFER / IGNORE action taken. The finding is located only by the exact finding_id returned by list_pr_findings, on ANY lifecycle status (open, fixed, or dismissed — so verdicts still apply after a PR is merged and findings were swept to dismissed). Only findings recorded into the data layer (the aictrl-dev MCP path) can receive a verdict. Idempotent: re-applying overwrites the prior verdict. A not_found response is an application error; call list_pr_findings to refresh stale IDs and do not treat the write as successful. judged_at_sha is required: send the full 40-hex commit SHA of the code you actually read. A SHA that is neither the review SHA nor a later commit of the same PR is rejected with validation_error. reasoning is required too (#5364): a verdict whose reasoning cannot be audited later is not worth storing. Each write appends to the finding's judgment history; a re-judge from the same run at the same commit updates that run's own row rather than appending a duplicate. A FALSE verdict on an OPEN finding of severity MINOR or NIT (medium/low/info) also dismisses it as a false positive, with your reason as the note; on MAJOR or BLOCKER (high/critical) it stays a suggestion a person confirms. The result reports autoDismissed (and autoDismissReason when false). A dismissal is not reopened by this tool; a person can restore the finding from the pull-request page.

ParametersJSON Schema
NameRequiredDescriptionDefault
prYes
actionNoAction taken on the finding (optional).
reasonNoOptional one-line summary. NOT a substitute for `reasoning` — it is kept only for continuity with pre-#5364 verdicts and is not used for calibration.
verdictYesTriage outcome: is the finding a real, actionable issue?
evidenceNoRepo-relative locations you read to form the verdict. Each file must exist at `judged_at_sha`; a file that does not is rejected when the repository is reachable. Optional, but a verdict that cites nothing is weaker evidence.
reasoningYesRequired reasoning chain. Each part must carry at least 40 characters of substance about the code. Run bookkeeping ("[A/B wave 3]", "[re-judge 2026-07-14]") is stripped before the length is measured and is never stored, so padding with it does not help. Placeholders ("n/a", "test", "looks fine") are rejected.
finding_idYesRequired exact recorded finding id returned by list_pr_findings. This is the only supported finding selector.
repositoryYes
judged_at_shaYesRequired full 40-character commit SHA of the code the verdict was formed at. Must be the SHA the finding was reviewed at or a later commit of the same PR — a SHA outside the PR, or one that precedes the review SHA, is rejected. Send the commit you actually read, not the branch tip.
organization_idYesThe organization that owns the pull request. Call list_organizations if you do not have it.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare a destructive write, and the description goes well beyond them: idempotent overwrite semantics, judgment-history append behavior, the SHA validation rule and its rejection mode, the auto-dismiss side effect on FALSE/MINOR findings vs. confirmed suggestions on MAJOR/BLOCKER, and that dismissals are not reopened. This is unusually rich behavioral disclosure.

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 core action and dense with useful detail, but it runs long (~300+ words) as a single block, with several clauses packed per sentence. Every sentence carries information, but the volume slightly hurts scannability.

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?

With no output schema, the description compensates by naming the returned fields (`autoDismissed`, `autoDismissReason`) and covering required inputs, validation failures, and side effects. For a 10-parameter nested-object tool, an agent has everything needed to call it correctly.

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 already 80%, so the baseline is 3, but the description adds real meaning: it clarifies that finding_id is the only supported selector, that judged_at_sha must be the SHA actually read (not the branch tip), and warns that `reason` is not a substitute for `reasoning`. Most remaining detail is duplicated from the schema, keeping it short of a 5.

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 and resource ('Apply a post-hoc triage verdict to a finding') and scopes the operation precisely. It names its companion tools (record_finding for creation, list_pr_findings for lookup) so an agent can distinguish it from siblings without opening any 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?

Explicitly says when it applies (the /reply-to-code-review flow), the prerequisite that only findings recorded into the data layer can receive a verdict, and the recovery path on not_found ('call list_pr_findings to refresh stale IDs and do not treat the write as successful'). It also states when a verdict does not reopen a dismissal.

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

start_taskStart an aictrl taskA
Idempotent
Inspect

Start one first-party task returned by list_tasks for an exact pull-request revision. PR Explanation reads the pull request and stores a private explanation in aictrl; it posts nothing to GitHub. Code Review reads the pull request and posts its findings as review comments on that pull request. Call only after the user explicitly asks to run that task in the current turn. Retrying the same request with the same idempotency key returns the same execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask Template ID returned by list_tasks.
audienceNoOptional audience for the generated explanation. Applies to the PR Explanation task only.
pull_requestYes
idempotency_keyYesStable caller-generated key. Reuse only for the identical task request.
organization_idYesaictrl organization ID returned by list_organizations or get_started.

Output Schema

ParametersJSON Schema
NameRequiredDescription
reusedYes
statusYes
task_idYes
admissionYes
created_atYes
execution_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing the external side effects: PR Explanation 'posts nothing to GitHub' while Code Review 'posts its findings as review comments on that pull request.' It also explains idempotency semantics concretely (same key = same execution), which adds value on top of idempotentHint=true. It does not mention auth/permission requirements for the live-authorized repo, keeping it short of a 5.

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 tight sentences, front-loaded with what the tool does, then the two task behaviors, then the prerequisite, then the idempotency contract. No filler or restatement of the title.

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?

An output schema exists, so return values need no explanation; the description instead covers the things it must: which task templates are valid, the pre-condition for calling, the differing GitHub side effects, and retry semantics. Nothing material for correct invocation is missing.

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?

Schema description coverage is 80%, so the schema already documents task_id, idempotency_key, organization_id, pull_request fields and the audience enum. The description reinforces only the 'exact pull-request revision' constraint already captured by expected_head_sha; it adds no format or edge-case guidance for the remaining parameters. 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 (Start) and resource (one first-party task from list_tasks) and pins the scope to an exact pull-request revision. It also enumerates the two task kinds it can launch and what each does, so an agent can distinguish it from start_workflow 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 Guidelines4/5

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

Gives an explicit gating condition: 'Call only after the user explicitly asks to run that task in the current turn,' and points at list_tasks as the source of task_id. It does not, however, route the agent away from the sibling start_workflow or explain when a workflow run (rather than a task) is the right choice.

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

start_workflowStart an aictrl workflowA
DestructiveIdempotent
Inspect

Start a published workflow with inputs validated against the parameters returned by get_workflow. The run can perform only the published workflow's declared external side effects, such as creating a branch or pull request, within its configured gates and policy. Before calling, show the user the workflow's inputs, declared side effects and approval gates from get_workflow, and call only after the user explicitly confirms in the current conversation. Retrying with the same idempotency key returns the same run.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsNoValues for workflow parameters; issue inputs accept native aictrl issue IDs.
workflow_idYesWorkflow ID returned by list_workflows.
repository_idNoConfirmed connected repository ID, required for native issue workflows.
idempotency_keyYesStable caller-generated key. Retrying with the same key returns the same run.
organization_idYesAICtrl organization ID returned by list_organizations.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructive=true, idempotent=true, and openWorld=true, but the description adds crucial context: the run can perform only the published workflow's declared side effects within configured gates and policy, and retrying with the same idempotency key returns the same run. It also surfaces the required user-confirmation gate before any destructive action.

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 sentences, front-loaded with the core action, then the confirmation gate, then the idempotency behavior. Every sentence earns its place for what is a destructive, open-world operation.

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 destructive, open-world tool with nested inputs and no output schema, the description covers the essentials: validation source, side-effect limits, the required user-confirmation gate, and idempotent retry semantics. Nothing an agent needs to call this safely is 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, but the description adds value by explaining that inputs are validated against parameters returned by get_workflow and that native issue workflows require a confirmed repository_id. It stops short of adding syntax or format details beyond the schema.

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 states a specific verb and resource ('Start a published workflow') and explicitly ties input validation to the sibling tool get_workflow. An agent can distinguish this from start_task or get_workflow 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?

It gives an explicit precondition: show the user the workflow's inputs, declared side effects, and approval gates from get_workflow, and call only after explicit confirmation in the current conversation. This is a clear when-to-use rule, not just implied context.

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

update_backlogCreate or update aictrl backlog tasksA
Destructive
Inspect

Create or update tasks within an Epic. Used by the Planner Breakdown step to materialise a plan into stored tasks with stack-layer assignments and dependencies. Find existing epic and task IDs with query_context domain=backlog reads (for example action=list_epics, then action=list with params.type="tasks" and params.epic_id). task/update changes only the fields supplied; omitted fields stay unchanged. A supplied depends_on, tags or stack_layer_ids array replaces the stored list, and [] clears it; stack_layer_ids not found in the organization are dropped. An update with no fields, or to an active or claimed task, is rejected; status changes must be valid transitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform on the entity.
entityYesEntity type to modify. Only "task" is supported.
paramsYesAction-specific parameters. • task/create: { epic_id, title, description?, type?: "story"|"bug"|"spike", depends_on?: string[], stack_layer_ids?: string[], complexity?: "low"|"medium"|"high", tags?: string[] } • task/update: { task_id, title?, description?, type?, status?, priority?, depends_on?: string[], stack_layer_ids?: string[], complexity?, tags?: string[] } — omitted fields are unchanged; supplied arrays replace existing values ([] clears).
versionNoAPI version (default: v1)
organization_idYesAICtrl organization ID returned by list_organizations.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations (destructiveHint=true, readOnlyHint=false) only flag that this mutates state; the description goes much further by explaining that omitted fields are preserved, that supplied depends_on/tags/stack_layer_ids arrays REPLACE the stored list and [] clears it, that unknown stack_layer_ids are silently dropped, and which updates are rejected.

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 purpose, then usage, then edge-case semantics in a compact paragraph with no filler sentences. It is dense and the final sentences pack several distinct rules together, but every sentence carries actionable information.

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?

Covers the hard parts: ID discovery, partial-update semantics, array replacement, and rejection rules for a tool with nested objects and no output schema. The remaining gap is return behavior (e.g., how to obtain the new task_id), which is not addressed and matters for chained create calls.

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% and the params oneOf already lists every field, so the baseline is 3. The description adds real meaning on top: merge-vs-replace semantics for the three array parameters, the empty-array clearing behavior, and the silent dropping of unrecognized stack_layer_ids, none of which the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair and resource: 'Create or update tasks within an Epic,' and adds scope ('materialise a plan into stored tasks with stack-layer assignments and dependencies'). It differentiates itself from read siblings by directing ID lookups to query_context, though it never names list_tasks as the read alternative.

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?

Explicitly routes the agent: this is the Planner Breakdown write path, and existing epic/task IDs must come from query_context domain=backlog reads (action=list_epics, then action=list with params.type="tasks"). It also enumerates the rejection conditions (no-op update, active/claimed task, invalid status transition), which is exactly the when-and-when-not guidance an agent needs.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedapprove_workflow_step1 field changed
      • changedInput schema / properties / run_id / description
        Previous value: -"Workflow run ID returned by start_workflow."New value: +"Workflow run ID returned by start_workflow or list_workflow_runs."
    • Changedcancel_workflow_run1 field changed
      • changedInput schema / properties / run_id / description
        Previous value: -"Workflow run ID returned by start_workflow."New value: +"Workflow run ID returned by start_workflow or list_workflow_runs."
    • Changedget_workflow_run1 field changed
      • changedInput schema / properties / run_id / description
        Previous value: -"Workflow run ID returned by start_workflow."New value: +"Workflow run ID returned by start_workflow or list_workflow_runs."
    • Changedlist_workflow_runs1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum runs per page (default 50, maximum 100)."
    • Changedlist_workflows2 fields changed
      • addedInput schema / properties / limit / default
        Added value: +50
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum results (default 50)."New value: +"Maximum workflows returned (default 50, maximum 100)."
    • Changedupdate_backlog1 field changed
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters.\n• task/create: { epic_id, title, description?, depends_on?: string[], stack_layer_ids?: string[], complexity?: \"low\"|\"medium\"|\"high\", tags?: string[] }\n• task/update: { task_id, title?, description?, status?, priority?, depends_on?: string[], stack_layer_ids?: string[], complexity?, tags? }"New value: +"Action-specific parameters.\n• task/create: { epic_id, title, description?, type?: \"story\"|\"bug\"|\"spike\", depends_on?: string[], stack_layer_ids?: string[], complexity?: \"low\"|\"medium\"|\"high\", tags?: string[] }\n• task/update: { task_id, title?, description?, type?, status?, priority?, depends_on?: string[], stack_layer_ids?: string[], complexity?, tags?: string[] } — omitted fields are unchanged; supplied arrays replace existing values ([] clears)."
  2. 16 tool updates
    • First observedapprove_workflow_step
    • First observedcancel_workflow_run
    • First observedget_started
    • First observedget_task_execution
    • First observedget_workflow
    • First observedget_workflow_run
    • First observedlist_organizations
    • First observedlist_pr_findings
    • First observedlist_tasks
    • First observedlist_workflow_runs
    • First observedlist_workflows
    • First observedquery_context
    • First observedrecord_finding_verdict
    • First observedstart_task
    • First observedstart_workflow
    • First observedupdate_backlog

Publisher details

Operator
aictrl · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Requires an aictrl account and access to the relevant organisation. In Glama, select OAuth 2.0; the grant identifies your aictrl user and tools re-check live organisation membership. Repository tasks require authorised repository access. Task and workflow executions are subject to the organisation's available allowance and plan; see https://aictrl.dev/pricing. · Publisher source

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Perplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    11 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources