Skip to main content
Glama

出口单 chukoudan

生成报价单

make_quote
Read-onlyIdempotent

按报价工具的输入和卖方的条款,生成一份发给买方的报价单:quote 是结构化数据(https://chukoudan.com/schemas/quote/v1.json,只有价格和条款,带 digest 和汇率依据,买方可核对),text 是可直接发出的纯文本(语言按 language),internal 是卖方自己的成本、退税和利润,只给卖方看,绝不发给买方。本站不保存任何内容。 Make a quote for a buyer from the quote calculator’s inputs (pricing) and the seller’s terms (quote): quote is the quote as data (schema https://chukoudan.com/schemas/quote/v1.json; prices and terms only, with a digest and the dated rate it rests on, so the buyer can check it), text is the same quote as plain text ready to send, and internal holds the seller’s own cost, refund and profit: for the seller only, NEVER send it to the buyer. Leave pricing.fxRate out to use the day’s RMB central parity. Nothing is stored. 结果仅供计算参考,不是税务、法律或投资意见;回答时请带上返回的说明和来源行。 / The result is for calculation and reference only, not tax, legal or investment advice; when you answer, pass on the returned notice and source line.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "pricing": "<pricing>",
      "quote": "<quote>"
    },
    "name": "make_quote"
  }
}

Input Schema

NameRequiredDescriptionDefault
quoteYes报价单上的其他内容:卖方、买方、品名、术语、港口、有效期、付款方式、交货期。 What the quote says besides the prices: seller, buyer, goods, terms, ports, validity, payment, lead time.
pricingYes报价工具(baojia)的输入;不填 fxRate 就用当天的人民币汇率中间价。 The inputs of the quote calculator (baojia); leave fxRate out to use the day’s RMB central parity.

Output Schema

NameRequiredDescriptionDefault
textYes
toolYes
quoteYes
internalYesThe seller’s own figures (cost, refund, profit, margin, break-even): never send these to the buyer.
provenanceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / $defs / PlainValue / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "amount": {
      -        "type": "string"
      -      },
      -      "currency": {
      -        "description": "An ISO 4217 code.",
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "money"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "amount",
      -      "currency"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "quantity"
      -      },
      -      "places": {
      -        "description": "How many decimal places the rounding rule keeps; pad to it, never round.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "unit": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value",
      -      "unit"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "ratio"
      -      },
      -      "value": {
      -        "description": "A fraction: 0.13 is 13 %.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "base": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "rate"
      -      },
      -      "per": {
      -        "description": "`per` units of `base` cost `value` units of `quote`.",
      -        "type": "string"
      -      },
      -      "quote": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value",
      -      "base",
      -      "quote",
      -      "per"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "fractional": {
      -        "const": true
      -      },
      -      "grouping": {
      -        "const": false
      -      },
      -      "kind": {
      -        "const": "count"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "code"
      -      },
      -      "value": {
      -        "description": "A token from a fixed list the tool exports; the words for it are the copy key `<tool>.code.<value>`.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "date"
      -      },
      -      "value": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "type": "string"
      +      },
      +      "currency": {
      +        "description": "An ISO 4217 code.",
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "money"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "amount",
      +      "currency"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "quantity"
      +      },
      +      "places": {
      +        "description": "How many decimal places the rounding rule keeps; pad to it, never round.",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "unit": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value",
      +      "unit"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "ratio"
      +      },
      +      "places": {
      +        "description": "How many decimal places of the fraction the rounding rule keeps; write the percentage padded to two fewer (0.2820 is 28.20 %), never round.",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "value": {
      +        "description": "A fraction: 0.13 is 13 %.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "base": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "rate"
      +      },
      +      "per": {
      +        "description": "`per` units of `base` cost `value` units of `quote`.",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value",
      +      "base",
      +      "quote",
      +      "per"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fractional": {
      +        "const": true
      +      },
      +      "grouping": {
      +        "const": false
      +      },
      +      "kind": {
      +        "const": "count"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "code"
      +      },
      +      "value": {
      +        "description": "A token from a fixed list the tool exports; the words for it are the copy key `<tool>.code.<value>`.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "date"
      +      },
      +      "value": {
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "identifier"
      +      },
      +      "value": {
      +        "description": "A number that is data, such as a barcode number: write it as it is, keep its leading zeros, never group it.",
      +        "pattern": "^[A-Za-z0-9]{1,32}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changed
    • changedOutput schema / $defs / PlainValue / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "amount": {
      -        "type": "string"
      -      },
      -      "currency": {
      -        "description": "An ISO 4217 code.",
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "money"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "amount",
      -      "currency"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "quantity"
      -      },
      -      "places": {
      -        "description": "How many decimal places the rounding rule keeps; pad to it, never round.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "unit": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value",
      -      "unit"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "ratio"
      -      },
      -      "value": {
      -        "description": "A fraction: 0.13 is 13 %.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "base": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "rate"
      -      },
      -      "per": {
      -        "description": "`per` units of `base` cost `value` units of `quote`.",
      -        "type": "string"
      -      },
      -      "quote": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value",
      -      "base",
      -      "quote",
      -      "per"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "grouping": {
      -        "const": false
      -      },
      -      "kind": {
      -        "const": "count"
      -      },
      -      "value": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "code"
      -      },
      -      "value": {
      -        "description": "A token from a fixed list the tool exports; the words for it are the copy key `<tool>.code.<value>`.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "date"
      -      },
      -      "value": {
      -        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "value"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "type": "string"
      +      },
      +      "currency": {
      +        "description": "An ISO 4217 code.",
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "money"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "amount",
      +      "currency"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "quantity"
      +      },
      +      "places": {
      +        "description": "How many decimal places the rounding rule keeps; pad to it, never round.",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "unit": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value",
      +      "unit"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "ratio"
      +      },
      +      "value": {
      +        "description": "A fraction: 0.13 is 13 %.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "base": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "rate"
      +      },
      +      "per": {
      +        "description": "`per` units of `base` cost `value` units of `quote`.",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value",
      +      "base",
      +      "quote",
      +      "per"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fractional": {
      +        "const": true
      +      },
      +      "grouping": {
      +        "const": false
      +      },
      +      "kind": {
      +        "const": "count"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "code"
      +      },
      +      "value": {
      +        "description": "A token from a fixed list the tool exports; the words for it are the copy key `<tool>.code.<value>`.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "date"
      +      },
      +      "value": {
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / $defs / ProvenanceDataset / properties / amended_by
      Added value: +{
      +  "description": "The official notices whose changes this version carries on top of its edition, where there are any: each one by its number and title as the notice writes them and its own date (no page is given). The label a reader sees is the edition and these, for example 2026B + 公告2026年第29号.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "day": {
      +        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +        "type": "string"
      +      },
      +      "number": {
      +        "type": "string"
      +      },
      +      "title": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "number",
      +      "title",
      +      "day"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / $defs / ProvenanceDataset / properties / edition
      Added value: +{
      +  "description": "The publisher’s name for the edition (2026B), where it names them.",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / pricing / examples
      Added value: +[
      +  {
      +    "containers": "1",
      +    "currency": "USD",
      +    "freight": "1800",
      +    "freightBasis": "container",
      +    "fxRate": "7.0850",
      +    "margin": "10",
      +    "marginBasis": "quote",
      +    "mode": "forward",
      +    "price": "50",
      +    "quantity": "4500",
      +    "quotedPrice": "7.50",
      +    "refundRate": "13",
      +    "taxRate": "13",
      +    "term": "FOB"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "PlainValue": {
      +      "description": "A figure, tagged so a reader knows how to write it: amounts and quantities are exact decimal strings, never floats.",
      +      "oneOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "amount": {
      +              "type": "string"
      +            },
      +            "currency": {
      +              "description": "An ISO 4217 code.",
      +              "type": "string"
      +            },
      +            "kind": {
      +              "const": "money"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "amount",
      +            "currency"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "kind": {
      +              "const": "quantity"
      +            },
      +            "places": {
      +              "description": "How many decimal places the rounding rule keeps; pad to it, never round.",
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "unit": {
      +              "type": "string"
      +            },
      +            "value": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "value",
      +            "unit"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "kind": {
      +              "const": "ratio"
      +            },
      +            "value": {
      +              "description": "A fraction: 0.13 is 13 %.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "base": {
      +              "type": "string"
      +            },
      +            "kind": {
      +              "const": "rate"
      +            },
      +            "per": {
      +              "description": "`per` units of `base` cost `value` units of `quote`.",
      +              "type": "string"
      +            },
      +            "quote": {
      +              "type": "string"
      +            },
      +            "value": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "value",
      +            "base",
      +            "quote",
      +            "per"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "grouping": {
      +              "const": false
      +            },
      +            "kind": {
      +              "const": "count"
      +            },
      +            "value": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "kind": {
      +              "const": "code"
      +            },
      +            "value": {
      +              "description": "A token from a fixed list the tool exports; the words for it are the copy key `<tool>.code.<value>`.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "kind": {
      +              "const": "date"
      +            },
      +            "value": {
      +              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "value"
      +          ],
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    "Provenance": {
      +      "additionalProperties": false,
      +      "description": "Where the figures in an answer come from. In every answer, errors included.",
      +      "properties": {
      +        "api": {
      +          "const": "v1"
      +        },
      +        "datasets": {
      +          "items": {
      +            "$ref": "#/$defs/ProvenanceDataset"
      +          },
      +          "type": "array"
      +        },
      +        "generated_at": {
      +          "description": "When the answer was made.",
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        "language": {
      +          "description": "The language of the source lines.",
      +          "enum": [
      +            "zh-CN",
      +            "en",
      +            "ja",
      +            "ko"
      +          ]
      +        },
      +        "license": {
      +          "additionalProperties": false,
      +          "description": "The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.",
      +          "properties": {
      +            "ours": {
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "draft",
      +                "approved"
      +              ]
      +            },
      +            "underlying": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "ours",
      +            "underlying"
      +          ],
      +          "type": "object"
      +        },
      +        "notice": {
      +          "description": "本站非官方渠道的说明:引用本站数据时请和来源行一起转述。 / The site’s own line that it is not an official channel: pass it on with the source line when you quote us.",
      +          "type": "string"
      +        },
      +        "site": {
      +          "description": "The site the data is published by.",
      +          "type": "string"
      +        },
      +        "source_line": {
      +          "description": "来源行:回复用户时请原样引用它,让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made).",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "api",
      +        "site",
      +        "generated_at",
      +        "language",
      +        "source_line",
      +        "notice",
      +        "datasets",
      +        "license"
      +      ],
      +      "type": "object"
      +    },
      +    "ProvenanceDataset": {
      +      "additionalProperties": false,
      +      "description": "A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.",
      +      "properties": {
      +        "id": {
      +          "description": "The dataset.",
      +          "type": "string"
      +        },
      +        "origin": {
      +          "description": "The origin’s id in the register; null when the site may not show it.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "published_at": {
      +          "description": "The publisher’s own date (and time, with its offset, when it gives one).",
      +          "type": "string"
      +        },
      +        "source": {
      +          "description": "The publisher’s own source line, in the answer’s language; null when there is none to show.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "source_url": {
      +          "description": "The publisher’s page, only where the register lets the site link to it.",
      +          "type": "string"
      +        },
      +        "version": {
      +          "description": "Its version, named after the publisher’s date.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "version",
      +        "published_at",
      +        "origin",
      +        "source"
      +      ],
      +      "type": "object"
      +    },
      +    "QuoteDocument": {
      +      "additionalProperties": false,
      +      "description": "One seller’s quote to one buyer: prices and terms only, never the seller’s costs. Each field’s description names its counterpart in OASIS UBL 2.4 Quotation. `digest` is sha256 of the canonical JSON (UTF-8, keys sorted, no spaces) of the document without `digest`; `basis.rate` names the dated exchange rate the prices rest on, which a buyer can check at https://chukoudan.com/v1/datasets/central-parity.",
      +      "properties": {
      +        "basis": {
      +          "additionalProperties": false,
      +          "description": "The dated exchange rate the prices rest on, when the seller includes it, so a buyer can check it.",
      +          "properties": {
      +            "made_with": {
      +              "const": "https://chukoudan.com"
      +            },
      +            "rate": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "base": {
      +                  "pattern": "^[A-Z]{3}$",
      +                  "type": "string"
      +                },
      +                "day": {
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "per": {
      +                  "enum": [
      +                    "1",
      +                    "100"
      +                  ],
      +                  "type": "string"
      +                },
      +                "quote": {
      +                  "const": "CNY"
      +                },
      +                "source": {
      +                  "description": "`central-parity`: the RMB central parity of `day`, from https://chukoudan.com/v1/datasets/central-parity; `given`: the seller’s own rate.",
      +                  "enum": [
      +                    "central-parity",
      +                    "given"
      +                  ],
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "pattern": "^(0|[1-9]\\d*)(\\.\\d+)?$",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "base",
      +                "quote",
      +                "value",
      +                "per",
      +                "source"
      +              ],
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "made_with"
      +          ],
      +          "type": "object"
      +        },
      +        "buyer": {
      +          "additionalProperties": false,
      +          "description": "UBL: cac:OriginatorCustomerParty. country: ISO 3166-1 alpha-2.",
      +          "properties": {
      +            "contact": {
      +              "maxLength": 200,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "maxLength": 120,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "country"
      +          ],
      +          "type": "object"
      +        },
      +        "currency": {
      +          "description": "ISO 4217 code of every price. UBL: cbc:PricingCurrencyCode.",
      +          "pattern": "^[A-Z]{3}$",
      +          "type": "string"
      +        },
      +        "digest": {
      +          "description": "`sha256:` and the hex SHA-256 of this document’s canonical JSON without `digest`: UTF-8, keys sorted, no spaces, non-ASCII characters written as themselves (Python: json.dumps(doc, sort_keys=True, separators=(\",\", \":\"), ensure_ascii=False)).",
      +          "pattern": "^sha256:[0-9a-f]{64}$",
      +          "type": "string"
      +        },
      +        "issued": {
      +          "description": "The day the quote is issued, YYYY-MM-DD. UBL: cbc:IssueDate.",
      +          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +          "type": "string"
      +        },
      +        "items": {
      +          "description": "The goods. One line in v1. UBL: cac:QuotationLine/cac:LineItem.",
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "description": {
      +                "description": "UBL: cac:Item/cbc:Description.",
      +                "type": "string"
      +              },
      +              "hs_code": {
      +                "description": "The seller’s HS code, digits only. UBL: cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode.",
      +                "type": "string"
      +              },
      +              "origin": {
      +                "description": "Country of origin, ISO 3166-1 alpha-2. UBL: cac:Item/cac:OriginCountry.",
      +                "pattern": "^[A-Z]{2}$",
      +                "type": "string"
      +              },
      +              "packing": {
      +                "description": "How the goods are packed, as the seller says it.",
      +                "type": "string"
      +              },
      +              "quantity": {
      +                "description": "A decimal string. UBL: cac:LineItem/cbc:Quantity.",
      +                "pattern": "^(0|[1-9]\\d*)(\\.\\d+)?$",
      +                "type": "string"
      +              },
      +              "unit": {
      +                "description": "UN/ECE Recommendation 20 code: the quantity’s unitCode in UBL.",
      +                "enum": [
      +                  "PCE",
      +                  "SET",
      +                  "CT",
      +                  "KGM"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "description",
      +              "origin",
      +              "quantity",
      +              "unit"
      +            ],
      +            "type": "object"
      +          },
      +          "maxItems": 1,
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "lead_time_days": {
      +          "description": "Days from order to shipment, a whole number.",
      +          "type": "integer"
      +        },
      +        "notes": {
      +          "description": "UBL: cbc:Note.",
      +          "type": "string"
      +        },
      +        "number": {
      +          "description": "The seller’s quote number. UBL: cbc:ID.",
      +          "type": "string"
      +        },
      +        "payment": {
      +          "description": "Payment terms as the seller writes them (T/T, L/C at sight…). UBL: cac:PaymentTerms/cbc:Note.",
      +          "type": "string"
      +        },
      +        "prices": {
      +          "description": "One price per term offered. UBL quotes one set of delivery terms per document; this lists several side by side.",
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "commission_included": {
      +                "description": "Whether the price includes the buying agent’s commission (含佣).",
      +                "type": "boolean"
      +              },
      +              "place": {
      +                "description": "The named place: port of loading for FOB, port of destination for CFR and CIF.",
      +                "type": "string"
      +              },
      +              "term": {
      +                "description": "Incoterms 2020 term. UBL: cac:Delivery/cac:DeliveryTerms/cbc:ID.",
      +                "enum": [
      +                  "FOB",
      +                  "CFR",
      +                  "CIF"
      +                ],
      +                "type": "string"
      +              },
      +              "total": {
      +                "description": "unit_price × quantity, a decimal string in `currency`. UBL: cbc:LineExtensionAmount.",
      +                "pattern": "^(0|[1-9]\\d*)(\\.\\d+)?$",
      +                "type": "string"
      +              },
      +              "unit_price": {
      +                "description": "A decimal string in `currency`. UBL: cac:Price/cbc:PriceAmount.",
      +                "pattern": "^(0|[1-9]\\d*)(\\.\\d+)?$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "term",
      +              "place",
      +              "unit_price",
      +              "total",
      +              "commission_included"
      +            ],
      +            "type": "object"
      +          },
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "schema": {
      +          "const": "https://chukoudan.com/schemas/quote/v1.json",
      +          "description": "This schema’s address, which names its version."
      +        },
      +        "seller": {
      +          "additionalProperties": false,
      +          "description": "UBL: cac:SellerSupplierParty. country: ISO 3166-1 alpha-2.",
      +          "properties": {
      +            "contact": {
      +              "maxLength": 200,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "maxLength": 120,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "country"
      +          ],
      +          "type": "object"
      +        },
      +        "valid_until": {
      +          "description": "The last day the quote holds. UBL: cac:ValidityPeriod/cbc:EndDate.",
      +          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "schema",
      +        "issued",
      +        "valid_until",
      +        "seller",
      +        "buyer",
      +        "items",
      +        "currency",
      +        "prices",
      +        "basis"
      +      ],
      +      "title": "Quote (chukoudan.com, v1)",
      +      "type": "object"
      +    },
      +    "Step": {
      +      "additionalProperties": false,
      +      "description": "One line of the worked example: `id` is the copy key of its sentence, `values` fill it in.",
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "description": "这一步的一句话说明,数值已代入,用请求的语言。 / The step as one sentence in the language asked, its figures filled in. Absent when a sentence cannot be made whole.",
      +          "type": "string"
      +        },
      +        "values": {
      +          "additionalProperties": {
      +            "$ref": "#/$defs/PlainValue"
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "values"
      +      ],
      +      "type": "object"
      +    },
      +    "Warning": {
      +      "additionalProperties": false,
      +      "description": "Something a reader should know about a result; `code` is a copy key.",
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "level": {
      +          "description": "Absent means a caution.",
      +          "enum": [
      +            "note",
      +            "hint"
      +          ]
      +        },
      +        "message": {
      +          "description": "这条提醒的一句话说明,数值已代入,用请求的语言:回复时请用它,不要自己编数字。 / The warning as one sentence in the language asked, its figures filled in: use it, do not make up figures. Absent when a sentence cannot be made whole.",
      +          "type": "string"
      +        },
      +        "next": {
      +          "description": "For a hint: the slug of the tool it points to.",
      +          "type": "string"
      +        },
      +        "values": {
      +          "additionalProperties": {
      +            "$ref": "#/$defs/PlainValue"
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "values"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "additionalProperties": false,
      +  "properties": {
      +    "internal": {
      +      "description": "The seller’s own figures (cost, refund, profit, margin, break-even): never send these to the buyer.",
      +      "properties": {
      +        "do_not_send": {
      +          "const": true
      +        },
      +        "outputs": {
      +          "type": "object"
      +        },
      +        "steps": {
      +          "items": {
      +            "$ref": "#/$defs/Step"
      +          },
      +          "type": "array"
      +        },
      +        "warnings": {
      +          "items": {
      +            "$ref": "#/$defs/Warning"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "do_not_send",
      +        "outputs",
      +        "steps",
      +        "warnings"
      +      ],
      +      "type": "object"
      +    },
      +    "provenance": {
      +      "$ref": "#/$defs/Provenance"
      +    },
      +    "quote": {
      +      "$ref": "#/$defs/QuoteDocument"
      +    },
      +    "text": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "const": "make_quote"
      +    }
      +  },
      +  "required": [
      +    "tool",
      +    "quote",
      +    "text",
      +    "internal",
      +    "provenance"
      +  ],
      +  "type": "object"
      +}
  4. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds critical context beyond them: `internal` must NEVER be sent to the buyer, nothing is stored, and the `quote` payload carries a digest and dated rate so the buyer can verify it. That is exactly the kind of non-obvious behavioral disclosure that prevents misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The key scoping constraint is front-loaded, but the entire description is duplicated verbatim in Chinese and English, roughly doubling length without adding information. Efficient in content, wasteful in form.

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 an output schema present, the description needn't explain return values, and it still covers data handling (no storage), the fxRate default, the buyer/seller visibility split, and the required disclaimer pass-through. 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; the description adds value by explaining the optional `fxRate` default (day's RMB central parity) and what each of the three output fields contains, which the schema does not. It does not detail the required pricing fields, but those are fully documented in 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 (generate a buyer-facing quote) and enumerates the three outputs: `quote` (structured data), `text` (ready-to-send plain text) and `internal` (seller-only cost/profit). It also explicitly sources the inputs from the baojia quote calculator, which distinguishes it from the raw calculator sibling.

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?

Clearly frames the usage context: feed in the calculator's pricing plus the seller's terms, and leave `pricing.fxRate` out to fall back to the day's RMB central parity. It does not name explicit when-not cases or an alternative tool to use instead, so it stops short of full routing guidance.

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