Skip to main content
Glama

Decide command center item

decide_command_center_item
Destructive

Approve or deny a Command Center card. This processes the decision through the full approval pipeline including trust scoring, autopilot evaluation, skill learning, and deliverable queue progression. Supports a split: close the already-decided/conforming half and spin off a separate product residual for only the novel half.

Routing: Mixed card ("split this into old+new") → decide the original (approved/dismissed) with spin_off_title+spin_off_description for the novel residual only; never re-litigate the conforming half

[sensitive-tier, initiates a multi-step agent process — company managers (executive/gm) run this without a card. Other members ask once; a from-now-on approval makes future calls seamless. Connecting a connector still needs the OAuth/connect card (request≠grant). Call it on the first clear ask — do not re-ask in chat.]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
reviseNorevise:true with decision:"denied" sends the card back to the producing agent to redo with your feedback — nothing publishes. Re-runs the originating activity and re-surfaces a corrected card. Omit/false for a plain rejection (learn-only). Only valid alongside decision:"denied" — any other decision is rejected. Prefer plain-string feedback; blank is ok (defaults to "Please revise").
item_idYesUUID of the Command Center card to decide on
decisionYesThe decision: approved, denied, snoozed, dismissed (honest ack of a blocked_on_you card), acknowledged (factory FYI Got it — card stays pending, factory continues), or cancelled (factory Cancel build). Pass the decision from available_actions — do not send dismissed when the label is Got it.
feedbackNoWhat to change when revise:true — preferred plain string telling the producing agent what to fix. Also accepted under aliases: reason, revision_feedback, user_feedback, comment, notes (and shallow nested {text}/{content}). Optional: blank revise feedback defaults to "Please revise" (same as the browser card). Optional on plain deny/approve — but give specific, actionable feedback on a plain deny too.
companyIdYesFreedomOS company id to act within (you must be a member). Required for company-scoped tools.
grant_modeNoCapability-approval (mcp_tool_call) cards only: 'once' runs the approved call WITHOUT granting the capability for future calls (the next identical call asks again); 'standing' (the default when omitted) runs it AND grants it so future calls run without asking. Ignored on every other card type.
hold_untilNoLoop-health, once-play timeout, hired-job, quiet-alarm, or compute-band hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes (compute_band / compute_band_no_instrument: a dated hold is the experiment that excuses spend for that long; a bare snooze is not).
spin_off_kindNoSplit residual kind (default feature). Only used when spin_off_title + spin_off_description are set.
spin_off_titleNoSplit residual: one-line title for ONLY the novel half (requires spin_off_description). Closes the original card without re-building the mixed ask; mints a separate FO product-request card for this residual.
connection_scopeNoConnector cards that start a rented (Composio) sign-in only: 'personal' = "Just me" — the connection is usable only by the approving person (their chats, MCP key and bots they host); 'company' = everyone in this company. Omit to keep the requester's pick (default company). Ignored on every other card type.
hired_job_actionNoUnclosed hired-job cards only. FO: retry the first job once. HOST: host_complete (Day 1–3 done on the host) or retire the hire — never retry (that dispatches FreedomOS). Required with decision approved. Dismiss is not legal. Remind-on-a-date is a hold, not a close.
once_play_actionNoOnce-play timeout cards only: retry the same play once, or retire it. Required with decision approved on that class. Dismiss is not legal.
constraint_actionNoOKR-health constraint cards only (a pinned constraint claim that expired or was disproved): "release" with decision approved releases the pin through the same owner the Command Center lever uses. A person decides these cards — attended chat or the Command Center; never a session on the operator's MCP token. Re-pinning (a new date and threshold) is done with pin_constraint, not here.
conforming_summaryNoOptional one-line name of the already-decided/conforming half (audit stamp on the closed card).
loop_health_actionNoLoop-health cards only: bind or retire ONE named loop. Required with decision approved on that class. Dismiss is not legal.
agent_outcome_actionNoPlaying-house / thrash / agent_outcome_flag alarms only: pause plant work. Required with decision approved on that class. Stretch and Dismiss are not legal.
spin_off_descriptionNoSplit residual: full description for ONLY the novel half (requires spin_off_title). Do not restate the already-decided conforming half as work to build.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / connection_scope
      Added value: +{
      +  "description": "Connector cards that start a rented (Composio) sign-in only: 'personal' = \"Just me\" — the connection is usable only by the approving person (their chats, MCP key and bots they host); 'company' = everyone in this company. Omit to keep the requester's pick (default company). Ignored on every other card type.",
      +  "enum": [
      +    "company",
      +    "personal"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / constraint_action
      Added value: +{
      +  "description": "OKR-health constraint cards only (a pinned constraint claim that expired or was disproved): \"release\" with decision approved releases the pin through the same owner the Command Center lever uses. A person decides these cards — attended chat or the Command Center; never a session on the operator's MCP token. Re-pinning (a new date and threshold) is done with pin_constraint, not here.",
      +  "enum": [
      +    "release"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / decision / description
      Previous value: -"The decision: approved, denied, snoozed, or dismissed (dismissed = honest acknowledgment of a blocked_on_you card — never resolves it)"New value: +"The decision: approved, denied, snoozed, dismissed (honest ack of a blocked_on_you card), acknowledged (factory FYI Got it — card stays pending, factory continues), or cancelled (factory Cancel build). Pass the decision from available_actions — do not send dismissed when the label is Got it."
    • changedInput schema / properties / decision / enum
      Previous value: -[
      -  "approved",
      -  "denied",
      -  "snoozed",
      -  "dismissed"
      -]New value: +[
      +  "approved",
      +  "denied",
      +  "snoozed",
      +  "dismissed",
      +  "acknowledged",
      +  "cancelled"
      +]
    • changedInput schema / properties / feedback / description
      Previous value: -"What to change when revise:true — preferred plain string telling the producing agent what to fix. Also accepted under aliases: reason, revision_feedback, user_feedback, comment, notes (and shallow nested {text}/{content}). Optional: blank revise feedback defaults to \"Please revise\" (same as the browser card). Optional on plain deny/approve."New value: +"What to change when revise:true — preferred plain string telling the producing agent what to fix. Also accepted under aliases: reason, revision_feedback, user_feedback, comment, notes (and shallow nested {text}/{content}). Optional: blank revise feedback defaults to \"Please revise\" (same as the browser card). Optional on plain deny/approve — but give specific, actionable feedback on a plain deny too."
    • changedInput schema / properties / hired_job_action / description
      Previous value: -"Unclosed hired-job cards only: retry the first job once. Required with decision approved on that class. Dismiss is not legal. Accepted briefs are not graduation."New value: +"Unclosed hired-job cards only. FO: retry the first job once. HOST: host_complete (Day 1–3 done on the host) or retire the hire — never retry (that dispatches FreedomOS). Required with decision approved. Dismiss is not legal. Remind-on-a-date is a hold, not a close."
    • changedInput schema / properties / hired_job_action / enum
      Previous value: -[
      -  "retry"
      -]New value: +[
      +  "retry",
      +  "host_complete",
      +  "retire"
      +]
    • changedInput schema / properties / hold_until / description
      Previous value: -"Loop-health, once-play timeout, hired-job, or quiet-alarm hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes."New value: +"Loop-health, once-play timeout, hired-job, quiet-alarm, or compute-band hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes (compute_band / compute_band_no_instrument: a dated hold is the experiment that excuses spend for that long; a bare snooze is not)."
  2. Changed2 schema fields changed
    • addedInput schema / properties / hired_job_action
      Added value: +{
      +  "description": "Unclosed hired-job cards only: retry the first job once. Required with decision approved on that class. Dismiss is not legal. Accepted briefs are not graduation.",
      +  "enum": [
      +    "retry"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / hold_until / description
      Previous value: -"Loop-health, once-play timeout, or quiet-alarm hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes."New value: +"Loop-health, once-play timeout, hired-job, or quiet-alarm hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes."
  3. Changed2 schema fields changed
    • addedInput schema / properties / agent_outcome_action
      Added value: +{
      +  "description": "Playing-house / thrash / agent_outcome_flag alarms only: pause plant work. Required with decision approved on that class. Stretch and Dismiss are not legal.",
      +  "enum": [
      +    "pause"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / hold_until / description
      Previous value: -"Loop-health or once-play timeout hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes."New value: +"Loop-health, once-play timeout, or quiet-alarm hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes."
  4. Changed2 schema fields changed
    • changedInput schema / properties / hold_until / description
      Previous value: -"Loop-health hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on that class."New value: +"Loop-health or once-play timeout hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes."
    • addedInput schema / properties / once_play_action
      Added value: +{
      +  "description": "Once-play timeout cards only: retry the same play once, or retire it. Required with decision approved on that class. Dismiss is not legal.",
      +  "enum": [
      +    "retry",
      +    "retire"
      +  ],
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • addedInput schema / properties / hold_until
      Added value: +{
      +  "description": "Loop-health hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on that class.",
      +  "type": "string"
      +}
    • addedInput schema / properties / loop_health_action
      Added value: +{
      +  "description": "Loop-health cards only: bind or retire ONE named loop. Required with decision approved on that class. Dismiss is not legal.",
      +  "properties": {
      +    "action": {
      +      "enum": [
      +        "bind",
      +        "retire"
      +      ],
      +      "type": "string"
      +    },
      +    "linked_kr_id": {
      +      "type": "string"
      +    },
      +    "loop_id": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  6. Changed2 schema fields changed
    • changedInput schema / properties / feedback / description
      Previous value: -"Optional feedback, especially important for denials. Be specific."New value: +"What to change when revise:true — preferred plain string telling the producing agent what to fix. Also accepted under aliases: reason, revision_feedback, user_feedback, comment, notes (and shallow nested {text}/{content}). Optional: blank revise feedback defaults to \"Please revise\" (same as the browser card). Optional on plain deny/approve."
    • changedInput schema / properties / revise / description
      Previous value: -"revise:true with decision:\"denied\" sends the card back to the producing agent to redo with your feedback (feedback required in that case) — nothing publishes. Re-runs the originating activity and re-surfaces a corrected card. Omit/false for a plain rejection (learn-only). Only valid alongside decision:\"denied\" — any other decision is rejected."New value: +"revise:true with decision:\"denied\" sends the card back to the producing agent to redo with your feedback — nothing publishes. Re-runs the originating activity and re-surfaces a corrected card. Omit/false for a plain rejection (learn-only). Only valid alongside decision:\"denied\" — any other decision is rejected. Prefer plain-string feedback; blank is ok (defaults to \"Please revise\")."
  7. Changed4 schema fields changed
    • addedInput schema / properties / conforming_summary
      Added value: +{
      +  "description": "Optional one-line name of the already-decided/conforming half (audit stamp on the closed card).",
      +  "type": "string"
      +}
    • addedInput schema / properties / spin_off_description
      Added value: +{
      +  "description": "Split residual: full description for ONLY the novel half (requires spin_off_title). Do not restate the already-decided conforming half as work to build.",
      +  "type": "string"
      +}
    • addedInput schema / properties / spin_off_kind
      Added value: +{
      +  "description": "Split residual kind (default feature). Only used when spin_off_title + spin_off_description are set.",
      +  "enum": [
      +    "feature",
      +    "bug"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / spin_off_title
      Added value: +{
      +  "description": "Split residual: one-line title for ONLY the novel half (requires spin_off_description). Closes the original card without re-building the mixed ask; mints a separate FO product-request card for this residual.",
      +  "type": "string"
      +}
  8. First observed

TDQS

A3.9/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations: it discloses a multi-step approval pipeline with trust scoring, autopilot evaluation, skill learning, and deliverable queue progression. It also explains the split semantics and the sensitive-tier invocation etiquette. There is no contradiction with the destructiveHint=true or readOnlyHint=false annotations.

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?

The description is dense but appropriately sized for a complex, sensitive tool with many conditional parameters. Key information is front-loaded: the main action, the pipeline side effects, the split routing, and the invocation rules. The bracketed sensitive-tier section is a little run-on but each sentence contributes useful guidance.

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 17-parameter, no-output-schema tool, the description provides enough high-level context to understand the tool's role, side effects, split behavior, and authorization posture. The extensive per-parameter conditional logic is fully covered in the schema, so the description does not need to restate it. It lacks return-value guidance, but no output schema exists and that is not a blocker for invoking the tool correctly.

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 input schema already carries the full semantic weight for all parameters. The description does mention the spin_off_title + spin_off_description pattern and the mixed-card routing, which aligns with the schema but does not add meaning beyond it. This matches the baseline-3 case for high schema coverage.

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 specifies a clear action (approve or deny) and resource (a Command Center card), and further explains the split behavior for mixed cards. It is not tautological and can be distinguished from read-only siblings like get_command_center_item. However, it does not name or contrast sibling decision tools, and the opening phrase omits the other decision values in the enum (snoozed, acknowledged, cancelled).

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 gives practical when-to-use guidance: call it on the first clear ask, do not re-ask in chat, and company managers run it without a card while other members ask once. It also includes an exclusion for connector connections, noting the OAuth/connect card is still required. It does not explicitly name alternative sibling tools, but the provided context is enough for an agent to select this tool for Command Center decisions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources