quote-template

Quotes and estimates: VAT line items, a validity date, an A4 PDF, accept makes an invoice.

我该使用它吗

质量与安全性

A
描述质量
98%
模式完整度
92%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,904token 数(工具定义)
~1.9 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.27%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "quote-template": {
      "command": "uvx",
      "args": [
        "https://github.com/theluckystrike/mcp-servers/releases/download/v0.21.0/quotes.mcpb"
      ]
    }
  }
}

可运行的软件包

mcpbhttps://github.com/theluckystrike/mcp-servers/releases/download/v0.21.0/quotes.mcpb0.21.0stdio

远程端点

https://mcp.zovo.one/mcp/quote-templatestreamable-http

它能做什么

工具清单

工具(12)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟡quote_create(client, items, currency, validity_days, valid_until, ...)

Store a quote for client from items and return its Q number, VAT and totals. unit_price is in MAJOR units; currency, VAT and issuer come from the shared profile. A duplicate of an open quote is refused. Free: 5 open.

输入模式

{
  "type": "object",
  "properties": {
    "client": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Client name or id. A name the invoice server already knows brings its address, email and VAT id onto the quote"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500,
            "description": "every line needs a description, 500 characters or fewer"
          },
          "quantity": {
            "type": "number",
            "minimum": -1000000000000,
            "maximum": 1000000000000,
            "exclusiveMinimum": 0,
            "description": "Hours or units, must be greater than zero"
          },
          "unit_price_minor": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1000000000000,
            "description": "Price per unit in MINOR units: 9000 = 90.00 EUR, 90 = JPY 90. Never a decimal"
          },
          "tax_rate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "description": "VAT percent for this line, overrides the business default"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$",
            "description": "Only to state the line's currency; every line on one quote must agree"
          }
        },
        "required": [
          "description",
          "quantity",
          "unit_price_minor"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 200,
      "description": "The line items being quoted"
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "Defaults to your business default currency"
    },
    "validity_days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3650,
      "description": "Days the quote stays valid, counted from the quote date and inclusive. Default 30"
    },
    "valid_until": {
      "type": "string",
      "description": "YYYY-MM-DD, an explicit last valid day. Wins over validity_days"
    },
    "issue_date": {
      "type": "string",
      "description": "YYYY-MM-DD, defaults to today in your business profile's timezone"
    },
    "discount_percent": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "Discount applied to every line, in percent"
    },
    "tax_rate": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000,
      "description": "VAT percent for lines with no rate of their own. Defaults to the business default"
    },
    "notes": {
      "type": "string",
      "maxLength": 10000,
      "description": "Free text printed under the totals, e.g. scope or exclusions. 10000 characters or fewer"
    },
    "client_email": {
      "type": "string",
      "maxLength": 320,
      "description": "Only if the user gave it; otherwise the stored client's email is used"
    },
    "client_address": {
      "type": "string",
      "maxLength": 2000,
      "description": "Postal address for the QUOTE FOR block, newlines allowed"
    },
    "client_vat_id": {
      "type": "string",
      "maxLength": 64,
      "description": "Client VAT / tax registration id"
    }
  },
  "required": [
    "client",
    "items"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢quote_list(state, client, from, to)

List quotes newest first: id, client, dates, state, days left while open, currency, total and the invoice number once accepted. State is read against today, so a lapsed quote shows as expired.

输入模式

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "open",
        "expired",
        "accepted",
        "declined",
        "all"
      ],
      "description": "Default \"all\". \"open\" excludes quotes whose validity has run out; \"expired\" is only those"
    },
    "client": {
      "type": "string",
      "description": "Only quotes for clients whose name contains this text"
    },
    "from": {
      "type": "string",
      "description": "YYYY-MM-DD, earliest quote date"
    },
    "to": {
      "type": "string",
      "description": "YYYY-MM-DD, latest quote date"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢quote_get(id)

Return one quote in full by Q number or exact client name: lines with unit price and VAT, totals, dates, the state today with days left, notes, and the invoice it became once accepted. Reads only.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Quote id such as Q-2026-0001, or an exact client name"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡quote_update(id, items, currency, discount_percent, tax_rate, ...)

Revise a quote that is still open: line items, currency, discount, VAT default, validity or notes. Totals are recomputed. An accepted or declined quote is never edited.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Quote id such as Q-2026-0001"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500,
            "description": "every line needs a description, 500 characters or fewer"
          },
          "quantity": {
            "type": "number",
            "minimum": -1000000000000,
            "maximum": 1000000000000,
            "exclusiveMinimum": 0,
            "description": "Hours or units, must be greater than zero"
          },
          "unit_price_minor": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1000000000000,
            "description": "Price per unit in MINOR units: 9000 = 90.00 EUR, 90 = JPY 90. Never a decimal"
          },
          "tax_rate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "description": "VAT percent for this line, overrides the business default"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$",
            "description": "Only to state the line's currency; every line on one quote must agree"
          }
        },
        "required": [
          "description",
          "quantity",
          "unit_price_minor"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 200,
      "description": "Replaces every line item"
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$"
    },
    "discount_percent": {
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "tax_rate": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000,
      "description": "VAT percent for lines with no rate of their own"
    },
    "validity_days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3650,
      "description": "Recomputes valid_until from the quote date"
    },
    "valid_until": {
      "type": "string",
      "description": "YYYY-MM-DD. Wins over validity_days, and is how an expired quote is extended"
    },
    "notes": {
      "type": "string",
      "maxLength": 10000
    },
    "client_email": {
      "type": "string",
      "maxLength": 320
    },
    "client_address": {
      "type": "string",
      "maxLength": 2000
    },
    "client_vat_id": {
      "type": "string",
      "maxLength": 64
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡quote_send_text(id, greeting, sign_off)

Turn a quote into a plain-text summary to paste into an email: the line table, VAT lines, total and validity date. Also a .txt download link valid one hour. Free; quote_pdf writes the A4 document.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Quote id such as Q-2026-0001"
    },
    "greeting": {
      "type": "string",
      "description": "Opening line, default \"Hello\" plus the client name"
    },
    "sign_off": {
      "type": "string",
      "description": "Closing line, default your business name from the shared profile"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡quote_accept(id, create_invoice, issue_date, due_days, allow_expired)

Mark a quote accepted and turn it into an invoice: created directly in the invoice server when its store is present, otherwise returned as invoice_create-ready line items. The numbers are copied, never recomputed.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Quote id such as Q-2026-0001"
    },
    "create_invoice": {
      "type": "string",
      "enum": [
        "auto",
        "always",
        "never"
      ],
      "description": "Default \"auto\": create the invoice when the invoice store exists, otherwise hand back the items. \"never\" only marks it accepted"
    },
    "issue_date": {
      "type": "string",
      "description": "YYYY-MM-DD for the invoice, defaults to today"
    },
    "due_days": {
      "type": "integer",
      "minimum": 0,
      "maximum": 3650,
      "description": "Days until the invoice is due, defaults to your payment terms"
    },
    "allow_expired": {
      "type": "boolean",
      "description": "Accept a quote whose validity has run out. Default false: an expired quote is refused so the price is re-confirmed first"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪quote_decline(id, reason, date)

Mark a quote lost, with a reason kept on the record, freeing a free-tier open slot and counting in the win rate. An accepted quote is refused, naming the invoice it became. Free on every tier.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Quote id such as Q-2026-0001"
    },
    "reason": {
      "type": "string",
      "maxLength": 10000,
      "description": "Why it was lost, e.g. \"price\" or \"went in-house\". Kept on the record"
    },
    "date": {
      "type": "string",
      "description": "YYYY-MM-DD, defaults to today"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴quote_delete(id)

Delete a draft quote that was never sent, accepted, invoiced or exported, and give its free open-quote slot back. A quote with any of those is refused with the dependent named. The id is never reissued.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Quote id such as Q-2026-0001"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢quote_pdf(id, out_path)

Call this tool to render one quote as an A4 print-ready document and return a download link valid for one hour: the invoice layout with the validity date and an acceptance block. Pro.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Quote id such as Q-2026-0001"
    },
    "out_path": {
      "type": "string",
      "description": "Name for the downloaded file, e.g. acme-quote. Defaults to the quote id; the document comes back as a download link valid for one hour"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢quote_report(from, to)

Totals per currency for open, accepted, declined and expired quotes, with counts, the value still open and the win rate. Free covers the current calendar year to date; Pro reports over any date range.

输入模式

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "description": "YYYY-MM-DD, earliest quote date to count"
    },
    "to": {
      "type": "string",
      "description": "YYYY-MM-DD, latest quote date to count"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢license_status

Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪license_activate(key)

Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.

输入模式

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "License key from checkout, MCPL1.<payload>.<signature>"
    }
  },
  "required": [
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本12 个工具
已验证未记录版本12 个工具