Skip to main content
Glama

Move Card

move_card

Relocate a Favro card to a different column, lane, or board, and reorder it within a column. Use before/after or first/last to set placement.

Instructions

Move a card to a different column and/or lane, optionally on another board.

Specify a column, a lane, a place in the column, or a combination. Lanes only apply to boards with lanes enabled; use list_lanes to see available lanes.

To place the card in the column's order, give at most one of position, before, or after. Without column and lane, the card is reordered within its current column. The order is shared by the whole column, across lanes.

A card can be committed to several boards at once. Favro's API treats a board change as "commit" (add to the target board, keep the original) by default, which looks like a copy; this tool uses "move" so a cross-board move actually relocates the card.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cardYesCard ID, sequential ID (#123), or name.
laneNoTarget lane (swimlane) ID or name.
afterNoCard ID, sequential ID (#123), or name of a card in the target column to place the card directly after.
boardNoSource board ID or name — where the card currently lives. Used to resolve the correct card instance when the card exists on more than one board. Defaults to the current board context.
beforeNoCard ID, sequential ID (#123), or name of a card in the target column to place the card directly before.
columnNoTarget column ID or name (on to_board if given, else on the card's current board).
positionNo"first" or "last" to place the card at the top or bottom of the target column.
to_boardNoDestination board ID or name. Omit to move within the same board.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.8.0
    • addedInput schema / properties / after
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Card ID, sequential ID (#123), or name of a card in the\ntarget column to place the card directly after."
      +}
    • addedInput schema / properties / before
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Card ID, sequential ID (#123), or name of a card in the\ntarget column to place the card directly before."
      +}
    • addedInput schema / properties / position
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "first",
      +        "last"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "\"first\" or \"last\" to place the card at the top or bottom\nof the target column."
      +}
  2. Addedv0.7.2
  3. Removedv0.7.0
  4. Changed4 schema fields changedv0.3.2
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / board / description
      Added value: +"Board ID or name (needed for name lookups)"
    • addedInput schema / properties / card / description
      Added value: +"Card ID, sequential ID (#123), or name"
    • addedInput schema / properties / column / description
      Added value: +"Target column ID or name"
  5. First observedv0.5.0

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the non-obvious Favro commit-vs-move semantic ('API treats a board change as commit... this tool uses move so a cross-board move actually relocates'). It omits permission/error behavior, so 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?

Three short paragraphs, front-loaded with the core action, then placement rules, then the edge-case semantic. No sentence is redundant with the schema.

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 an 8-parameter mutation tool with an output schema, the description covers placement, lane applicability, and the cross-board caveat. It does not address failure modes or permissions, but nothing essential to calling it correctly 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 cross-parameter constraints the schema does not express: 'at most one of position, before, or after' and the shared ordering rule across lanes.

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 ('Move a card to a different column and/or lane, optionally on another board') and scopes it against siblings like move_column and update_card. An agent can identify the operation 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 clear context for when lanes apply ('only apply to boards with lanes enabled; use list_lanes to see available lanes') and explains the no-target reorder case. It lacks an explicit contrast with update_card or assign_card for adjacent operations, so it falls short of 5.

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