Skip to main content
Glama
agenthouse-org

dealdesk-mcp

dealdesk.patch_card

Update DealDesk desk cards—stage, owner, company/contact links, estimates, and quote overrides—while syncing linked local case and quote data where applicable.

Instructions

Update a desk card (title, stage, description, ownerUserId, priority, company/contact, deal estimates, quote dealValueOverride). Pass companyId/contactId to link Customer Directory records (same as HTTP accountRef/contactRef). Pass null to clear company/contact/owner. When company/contact or owner changes, also updates a linked local case and quote customer/owner link where applicable (same as the DealDesk UI). estimatedValue / estimatedValueCurrency / estimatedValuePeriod / probabilityPercent update the card (or its linked local case when present). dealValueOverride / dealValueOverrideNet apply only to unaccepted quote cards. Do not call create_case to set estimates on an existing card. Soft close uses stage closed — no DELETE.

Input Schema

NameRequiredDescriptionDefault
notesNoDeprecated alias for description — prefer description
stageNoDesk board column id (not a UI label). Resolve with dealdesk.list_desk_stages. Default board: request, request-in-progress, quote-preparation, quote-sent, quote-accepted, order-processing, order-completed, closed. Soft-close with closed. Never invent ids by slugifying labels (e.g. Anfrage in Bearbeitung → request-in-progress, not anfrage-in-bearbeitung).
titleNo
cardIdYes
priorityNoCard priority label (default normal; free text as shown on the desk).
companyIdNoCustomer Directory company id to link, or null to clear account and contact
contactIdNoCustomer Directory contact id to link, or null to clear contact only
projectIdNoDealDesk project id. Omit when the OAuth token or API key authorizes exactly one project. Required when Connect authorized several projects.
descriptionNoCard description (main body text shown on the card)
ownerUserIdNoDesk owner user id (from dealdesk.list_desk_users). Pass null on patch_card to clear. When a linked local case exists, owner is synced to that case.
estimatedValueNoWorking forecast amount. Does not rewrite linked quote totals.
deskDescriptionNoLocal desk-only description
dealValueOverrideNoWhen true on a quote card that is not yet accepted/ordered, use dealValueOverrideNet instead of quote net on the board/overview (same as the DealDesk UI). Ignored after accept/decline/order.
probabilityPercentNoWin chance percent (0–100).
dealValueOverrideNetNoOverride net amount for an unaccepted quote card. Cleared when null. Sets dealValueOverride=true when a positive amount is provided without an explicit flag.
estimatedValuePeriodNoLabels estimatedValue as one-time, monthly, or yearly. Does not convert the amount. Use year for ARR / per-year (e.g. 4000 EUR per year). Defaults to one_time when omitted on create.
estimatedValueCurrencyNoISO 4217 alpha-3 currency code (e.g. EUR).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changedv0.1.1
    • addedInput schema / properties / dealValueOverride
      Added value: +{
      +  "description": "When true on a quote card that is not yet accepted/ordered, use dealValueOverrideNet instead of quote net on the board/overview (same as the DealDesk UI). Ignored after accept/decline/order.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / dealValueOverrideNet
      Added value: +{
      +  "description": "Override net amount for an unaccepted quote card. Cleared when null. Sets dealValueOverride=true when a positive amount is provided without an explicit flag.",
      +  "minimum": 0,
      +  "nullable": true,
      +  "type": "number"
      +}
    • addedInput schema / properties / estimatedValue
      Added value: +{
      +  "description": "Working forecast amount. Does not rewrite linked quote totals.",
      +  "minimum": 0,
      +  "nullable": true,
      +  "type": "number"
      +}
    • addedInput schema / properties / estimatedValueCurrency
      Added value: +{
      +  "description": "ISO 4217 alpha-3 currency code (e.g. EUR).",
      +  "type": "string"
      +}
    • addedInput schema / properties / estimatedValuePeriod
      Added value: +{
      +  "description": "Labels estimatedValue as one-time, monthly, or yearly. Does not convert the amount. Use year for ARR / per-year (e.g. 4000 EUR per year). Defaults to one_time when omitted on create.",
      +  "enum": [
      +    "one_time",
      +    "month",
      +    "year"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / ownerUserId
      Added value: +{
      +  "description": "Desk owner user id (from dealdesk.list_desk_users). Pass null on patch_card to clear. When a linked local case exists, owner is synced to that case.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / priority
      Added value: +{
      +  "description": "Card priority label (default normal; free text as shown on the desk).",
      +  "type": "string"
      +}
    • addedInput schema / properties / probabilityPercent
      Added value: +{
      +  "description": "Win chance percent (0–100).",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "nullable": true,
      +  "type": "number"
      +}
    • changedInput schema / properties / projectId / description
      Previous value: -"DealDesk project id (must match API key / OAuth project)"New value: +"DealDesk project id. Omit when the OAuth token or API key authorizes exactly one project. Required when Connect authorized several projects."
    • addedInput schema / properties / stage / description
      Added value: +"Desk board column id (not a UI label). Resolve with dealdesk.list_desk_stages. Default board: request, request-in-progress, quote-preparation, quote-sent, quote-accepted, order-processing, order-completed, closed. Soft-close with closed. Never invent ids by slugifying labels (e.g. Anfrage in Bearbeitung → request-in-progress, not anfrage-in-bearbeitung)."
    • changedInput schema / required
      Previous value: -[
      -  "projectId",
      -  "cardId"
      -]New value: +[
      +  "cardId"
      +]
  2. First observedv0.1.0

TDQS

A4.3/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 disclose non-obvious side effects: company/contact or owner changes cascade to a linked local case and quote customer/owner link, estimates update the linked local case when present, dealValueOverride is ignored after accept/decline/order, and there is no DELETE (soft close via stage closed). It omits auth/permission requirements and error behavior, but the mutation semantics are unusually well covered.

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 the field list, then progressively narrower caveats. It is a dense single paragraph with some run-on clauses, but nearly every sentence carries distinct operational information rather than filler.

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 mutation tool with no annotations and no output schema, the description covers the critical unknowns: cross-entity side effects, null/clear behavior, quote-card-only constraints, and the soft-close convention. Return-value expectations and partial-patch semantics are left implicit, which is the main remaining gap.

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 88%, so the baseline is 3, but the description adds genuine meaning beyond the schema: null-clearing semantics for company/contact/owner, the equivalence of companyId/contactId to HTTP accountRef/contactRef, the distinction between estimatedValue (working forecast, does not rewrite quote totals) and dealValueOverride/OverrideNet (unaccepted quote cards only), and that dealValueOverrideNet implicitly sets the flag.

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+resource ('Update a desk card') and enumerates the mutable field groups, which cleanly separates it from siblings like patch_case, patch_quote, and patch_card_note. The follow-up sentences reinforce the boundary by explicitly warning 'Do not call create_case to set estimates on an existing card.'

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: pass companyId/contactId to link Customer Directory records, pass null to clear, dealValueOverride applies only to unaccepted quote cards, and soft-close uses stage closed. It does not explicitly state when to prefer patch_card over patch_case/patch_quote in ambiguous cases, so it falls short of a full when/when-not/alternative treatment.

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

Deploy Server

Other Tools