Mergewell Mail Merge

Mail merge from Excel or CSV to PDF, right in the chat.

我該用這個嗎

品質與安全性

A
說明品質
90%
結構描述完整度
100%
命名品質
100%
汙染風險
80%
權限相符程度
100%
協定合規性
100%

發現項目(3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'generate_merged_documents' description contains placeholder text在 generate_merged_documents 中
  • INFOTool description contains placeholder or incomplete text在 generate_merged_documents 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~5,092Token(工具定義)
~29.4 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.98%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "mail-merge": {
      "url": "https://mail-merge.zovo.one/mcp"
    }
  }
}

遠端端點

https://mail-merge.zovo.one/mcpstreamable-http

它能做什麼

工具清單

工具(2)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢preview_mail_merge(document_type, file, sheet, csv_text, records, ...)

Use this when the user wants to check a mail merge before printing: see how their spreadsheet (CSV or Excel) or list fills a letter, certificate or envelope template, which template fields like {{First Name}} have no matching column, which columns were matched by a similar name (first_name for First Name), and which records have empty values. Returns the first 3 merged records (or from preview_from) and a missing-field report; no files. Does not send email, print, or make labels. Do not use for Outlook or Gmail email merges.

輸入結構描述

{
  "type": "object",
  "properties": {
    "document_type": {
      "type": "string",
      "enum": [
        "letter",
        "certificate",
        "envelope"
      ],
      "description": "What to merge into: letter (US business letter, one per row), certificate (landscape award/completion/participation certificate, one per row), or envelope (#10 envelope with recipient and return address). Example: letter."
    },
    "file": {
      "type": "object",
      "properties": {
        "download_url": {
          "type": "string",
          "description": "Temporary download link for the file, supplied by ChatGPT."
        },
        "file_id": {
          "type": "string",
          "description": "ChatGPT file id, e.g. file_abc123."
        },
        "mime_type": {
          "description": "Media type if known, e.g. application/pdf.",
          "type": "string"
        },
        "file_name": {
          "description": "Original file name if known, e.g. statement.pdf.",
          "type": "string"
        }
      },
      "required": [
        "download_url",
        "file_id"
      ],
      "description": "The spreadsheet with one row per recipient: Excel .xlsx, CSV or TSV, first row = column headers, e.g. donors.xlsx."
    },
    "sheet": {
      "description": "For an .xlsx file: the sheet (tab) name to use, e.g. Donors. Defaults to the first sheet that has data.",
      "type": "string",
      "maxLength": 100
    },
    "csv_text": {
      "description": "Alternative to a file: the list pasted as CSV or tab-separated text with a header row, e.g. \"First Name,Last Name,City\\nAna,Lopez,Austin\".",
      "type": "string",
      "maxLength": 400000
    },
    "records": {
      "description": "Alternative to a file: the recipients typed as objects with the same keys, e.g. [{\"First Name\": \"Ana\", \"Last Name\": \"Lopez\", \"Amount\": 250}].",
      "maxItems": 5000,
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        }
      }
    },
    "names": {
      "description": "Shortcut for a plain list of names (one column called Name), e.g. [\"Ana Lopez\", \"Ben Okafor\"]. Handy for certificates.",
      "maxItems": 5000,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      }
    },
    "has_header": {
      "description": "Set false if the first row of the file is data, not column names (columns are then called Column A, Column B, ...). Default true.",
      "type": "boolean"
    },
    "template": {
      "description": "Letters: the letter text from the salutation to the last paragraph, with merge fields, e.g. \"Dear {{First Name|Friend}},\\n\\nThank you for your gift of {{Amount:currency}} on {{Gift Date:date}}.{{#if Company}} Please thank everyone at {{Company}}.{{/if}}\". Syntax: {{Field}}, {{Field|default}}, {{Field:format}} with formats currency, number, integer, ordinal, date, short_date, iso_date, upper, lower, title, first_word, last_word; {{#if Field}}...{{else}}...{{/if}}, {{#if Field = value}}, {{#if Gift > 0}} (also !=, <, >=, <=; numbers or dates), {{#unless Field}}...{{/unless}}; {{today}} is the document date.",
      "type": "string",
      "maxLength": 20000
    },
    "subject": {
      "description": "Letters: optional subject line printed as \"Re: ...\", may contain fields, e.g. \"Your {{Year}} giving statement\".",
      "type": "string",
      "maxLength": 300
    },
    "address_template": {
      "description": "Optional recipient address block (letters: inside address; envelopes: delivery address), one line per row, e.g. \"{{First Name}} {{Last Name}}\\n{{Street}}\\n{{City}}, {{State}} {{ZIP}}\". Defaults to one built from the name, company and address columns.",
      "type": "string",
      "maxLength": 1000
    },
    "include_address": {
      "description": "Letters: print the recipient address block above the salutation. Default true when the sheet has address columns.",
      "type": "boolean"
    },
    "sender": {
      "description": "Letters: your name/organization and address at the top. Envelopes: the return address. One line per entry, e.g. [\"Riverbend Animal Shelter\", \"120 Elm St\", \"Springfield, IL 62701\"].",
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 120
      }
    },
    "date": {
      "description": "Date printed on letters and certificates and used for {{today}}, as YYYY-MM-DD, e.g. 2026-10-03. Defaults to today (US Eastern time); pass the user's local date when known.",
      "type": "string",
      "maxLength": 30
    },
    "closing": {
      "description": "Letters: closing line, e.g. \"With gratitude,\". Defaults to \"Sincerely,\" unless the template already ends with a closing. Use \"\" for none.",
      "type": "string",
      "maxLength": 60
    },
    "signature_name": {
      "description": "Letters: name printed under the closing, e.g. Maria Chen.",
      "type": "string",
      "maxLength": 100
    },
    "signature_title": {
      "description": "Letters: title under the signature name, e.g. Executive Director.",
      "type": "string",
      "maxLength": 120
    },
    "certificate_kind": {
      "description": "Certificates: sets the default title and wording, e.g. completion -> \"Certificate of Completion\". Default achievement.",
      "type": "string",
      "enum": [
        "achievement",
        "completion",
        "participation",
        "appreciation",
        "recognition",
        "excellence"
      ]
    },
    "certificate_title": {
      "description": "Certificates: custom title, e.g. \"Certificate of Appreciation\" or \"Volunteer of the Year\".",
      "type": "string",
      "maxLength": 80
    },
    "recipient_template": {
      "description": "Certificates: the name line, e.g. \"{{First Name}} {{Last Name}}\". Defaults to the Name column (or First + Last).",
      "type": "string",
      "maxLength": 200
    },
    "body_template": {
      "description": "Certificates: the line under the name, may contain fields, e.g. \"for completing {{Course}} ({{Hours}} hours) on {{Completed:date}}\".",
      "type": "string",
      "maxLength": 600
    },
    "presented_line": {
      "description": "Certificates: the line above the name. Default \"This certificate is proudly presented to\" (\"This certifies that\" for completion).",
      "type": "string",
      "maxLength": 120
    },
    "organization": {
      "description": "Certificates: issuing organization printed at the top, e.g. Lincoln Elementary School.",
      "type": "string",
      "maxLength": 120
    },
    "signers": {
      "description": "Certificates: up to 3 signature lines, e.g. [{\"name\": \"Alan Brooks\", \"title\": \"Principal\"}].",
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80,
            "description": "Signer name, e.g. Dr. Alan Brooks."
          },
          "title": {
            "description": "Signer title, e.g. Principal.",
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "style": {
      "description": "Certificates: design style: classic (navy double border), gold (cream with gold seal), modern (teal geometric), deco (burgundy art deco). Default classic.",
      "type": "string",
      "enum": [
        "classic",
        "gold",
        "modern",
        "deco"
      ]
    },
    "envelope_size": {
      "description": "Envelopes: \"10\" for a #10 business envelope 4-1/8 x 9-1/2 in (default) or \"a7\" for a 5-1/4 x 7-1/4 in invitation envelope.",
      "type": "string",
      "enum": [
        "10",
        "a7"
      ]
    },
    "usps_style": {
      "description": "Envelopes: print the delivery address in USPS style (uppercase, no periods or commas). Default false.",
      "type": "boolean"
    },
    "field_map": {
      "description": "Optional explicit links from template fields to column names when names differ, e.g. {\"Gift\": \"Donation Amount (USD)\"}.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "missing_values": {
      "description": "What to do when a record has an empty value for a field with no default: leave_blank (default), skip_record (leave that record out), or placeholder (print [Field Name] for proofreading).",
      "type": "string",
      "enum": [
        "leave_blank",
        "skip_record",
        "placeholder"
      ]
    },
    "preview_from": {
      "description": "Record number to start the preview at, e.g. 1 (default) or 25 to check later rows.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20000
    }
  },
  "required": [
    "document_type"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "document_type": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "source": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "sheet": {
          "type": [
            "string",
            "null"
          ]
        },
        "sheets": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "rows": {
          "type": "number"
        },
        "blank_rows_ignored": {
          "type": "number"
        }
      },
      "required": [
        "type",
        "name",
        "sheet",
        "sheets",
        "columns",
        "rows",
        "blank_rows_ignored"
      ],
      "additionalProperties": false
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "column": {
            "type": [
              "string",
              "null"
            ]
          },
          "match": {
            "type": "string"
          },
          "formats": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "has_default": {
            "type": "boolean"
          }
        },
        "required": [
          "field",
          "column",
          "match",
          "formats",
          "has_default"
        ],
        "additionalProperties": false
      }
    },
    "unmatched_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "suggestion": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "field",
          "suggestion"
        ],
        "additionalProperties": false
      }
    },
    "needs_confirmation": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "counts": {
      "type": "object",
      "properties": {
        "records": {
          "type": "number"
        },
        "in_batch": {
          "type": "number"
        },
        "merged": {
          "type": "number"
        },
        "skipped": {
          "type": "number"
        },
        "with_missing": {
          "type": "number"
        },
        "documents": {
          "type": "number"
        },
        "pages": {
          "type": "number"
        }
      },
      "required": [
        "records",
        "in_batch",
        "merged",
        "skipped",
        "with_missing",
        "documents",
        "pages"
      ],
      "additionalProperties": false
    },
    "batch": {
      "type": "object",
      "properties": {
        "from": {
          "type": "number"
        },
        "to": {
          "type": "number"
        },
        "next_start": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "from",
        "to",
        "next_start"
      ],
      "additionalProperties": false
    },
    "missing": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "record": {
            "type": "number"
          },
          "label": {
            "type": "string"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "record",
          "label",
          "fields"
        ],
        "additionalProperties": false
      }
    },
    "missing_total": {
      "type": "number"
    },
    "preview": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "record": {
            "type": "number"
          },
          "label": {
            "type": "string"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "record",
          "label",
          "text"
        ],
        "additionalProperties": false
      }
    },
    "style": {
      "type": [
        "string",
        "null"
      ]
    },
    "paper": {
      "type": "string"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "properties": {
        "pdf": {
          "type": "string"
        },
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "document_type",
    "summary",
    "source",
    "fields",
    "unmatched_fields",
    "needs_confirmation",
    "counts",
    "batch",
    "missing",
    "missing_total",
    "preview",
    "style",
    "paper",
    "warnings",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢generate_merged_documents(document_type, file, sheet, csv_text, records, ...)

Use this when the user wants to mail merge from Excel or CSV to PDF: personalized letters from a spreadsheet (thank-you letters for each donor, the same letter to 200 people with their names), certificates in bulk from a name list (award, completion, participation), or envelopes from a contact list (#10 with return address). Fills {{Field}} placeholders with defaults, formats and {{#if}} conditions for each row and returns ONE combined PDF (one document per record, up to 2,000 per batch) plus a per-record merge report CSV. Does not send email, mail, or print anything, and does not make mailing labels. Do not use for Outlook or Gmail bulk email.

輸入結構描述

{
  "type": "object",
  "properties": {
    "document_type": {
      "type": "string",
      "enum": [
        "letter",
        "certificate",
        "envelope"
      ],
      "description": "What to merge into: letter (US business letter, one per row), certificate (landscape award/completion/participation certificate, one per row), or envelope (#10 envelope with recipient and return address). Example: letter."
    },
    "file": {
      "type": "object",
      "properties": {
        "download_url": {
          "type": "string",
          "description": "Temporary download link for the file, supplied by ChatGPT."
        },
        "file_id": {
          "type": "string",
          "description": "ChatGPT file id, e.g. file_abc123."
        },
        "mime_type": {
          "description": "Media type if known, e.g. application/pdf.",
          "type": "string"
        },
        "file_name": {
          "description": "Original file name if known, e.g. statement.pdf.",
          "type": "string"
        }
      },
      "required": [
        "download_url",
        "file_id"
      ],
      "description": "The spreadsheet with one row per recipient: Excel .xlsx, CSV or TSV, first row = column headers, e.g. donors.xlsx."
    },
    "sheet": {
      "description": "For an .xlsx file: the sheet (tab) name to use, e.g. Donors. Defaults to the first sheet that has data.",
      "type": "string",
      "maxLength": 100
    },
    "csv_text": {
      "description": "Alternative to a file: the list pasted as CSV or tab-separated text with a header row, e.g. \"First Name,Last Name,City\\nAna,Lopez,Austin\".",
      "type": "string",
      "maxLength": 400000
    },
    "records": {
      "description": "Alternative to a file: the recipients typed as objects with the same keys, e.g. [{\"First Name\": \"Ana\", \"Last Name\": \"Lopez\", \"Amount\": 250}].",
      "maxItems": 5000,
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        }
      }
    },
    "names": {
      "description": "Shortcut for a plain list of names (one column called Name), e.g. [\"Ana Lopez\", \"Ben Okafor\"]. Handy for certificates.",
      "maxItems": 5000,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      }
    },
    "has_header": {
      "description": "Set false if the first row of the file is data, not column names (columns are then called Column A, Column B, ...). Default true.",
      "type": "boolean"
    },
    "template": {
      "description": "Letters: the letter text from the salutation to the last paragraph, with merge fields, e.g. \"Dear {{First Name|Friend}},\\n\\nThank you for your gift of {{Amount:currency}} on {{Gift Date:date}}.{{#if Company}} Please thank everyone at {{Company}}.{{/if}}\". Syntax: {{Field}}, {{Field|default}}, {{Field:format}} with formats currency, number, integer, ordinal, date, short_date, iso_date, upper, lower, title, first_word, last_word; {{#if Field}}...{{else}}...{{/if}}, {{#if Field = value}}, {{#if Gift > 0}} (also !=, <, >=, <=; numbers or dates), {{#unless Field}}...{{/unless}}; {{today}} is the document date.",
      "type": "string",
      "maxLength": 20000
    },
    "subject": {
      "description": "Letters: optional subject line printed as \"Re: ...\", may contain fields, e.g. \"Your {{Year}} giving statement\".",
      "type": "string",
      "maxLength": 300
    },
    "address_template": {
      "description": "Optional recipient address block (letters: inside address; envelopes: delivery address), one line per row, e.g. \"{{First Name}} {{Last Name}}\\n{{Street}}\\n{{City}}, {{State}} {{ZIP}}\". Defaults to one built from the name, company and address columns.",
      "type": "string",
      "maxLength": 1000
    },
    "include_address": {
      "description": "Letters: print the recipient address block above the salutation. Default true when the sheet has address columns.",
      "type": "boolean"
    },
    "sender": {
      "description": "Letters: your name/organization and address at the top. Envelopes: the return address. One line per entry, e.g. [\"Riverbend Animal Shelter\", \"120 Elm St\", \"Springfield, IL 62701\"].",
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 120
      }
    },
    "date": {
      "description": "Date printed on letters and certificates and used for {{today}}, as YYYY-MM-DD, e.g. 2026-10-03. Defaults to today (US Eastern time); pass the user's local date when known.",
      "type": "string",
      "maxLength": 30
    },
    "closing": {
      "description": "Letters: closing line, e.g. \"With gratitude,\". Defaults to \"Sincerely,\" unless the template already ends with a closing. Use \"\" for none.",
      "type": "string",
      "maxLength": 60
    },
    "signature_name": {
      "description": "Letters: name printed under the closing, e.g. Maria Chen.",
      "type": "string",
      "maxLength": 100
    },
    "signature_title": {
      "description": "Letters: title under the signature name, e.g. Executive Director.",
      "type": "string",
      "maxLength": 120
    },
    "certificate_kind": {
      "description": "Certificates: sets the default title and wording, e.g. completion -> \"Certificate of Completion\". Default achievement.",
      "type": "string",
      "enum": [
        "achievement",
        "completion",
        "participation",
        "appreciation",
        "recognition",
        "excellence"
      ]
    },
    "certificate_title": {
      "description": "Certificates: custom title, e.g. \"Certificate of Appreciation\" or \"Volunteer of the Year\".",
      "type": "string",
      "maxLength": 80
    },
    "recipient_template": {
      "description": "Certificates: the name line, e.g. \"{{First Name}} {{Last Name}}\". Defaults to the Name column (or First + Last).",
      "type": "string",
      "maxLength": 200
    },
    "body_template": {
      "description": "Certificates: the line under the name, may contain fields, e.g. \"for completing {{Course}} ({{Hours}} hours) on {{Completed:date}}\".",
      "type": "string",
      "maxLength": 600
    },
    "presented_line": {
      "description": "Certificates: the line above the name. Default \"This certificate is proudly presented to\" (\"This certifies that\" for completion).",
      "type": "string",
      "maxLength": 120
    },
    "organization": {
      "description": "Certificates: issuing organization printed at the top, e.g. Lincoln Elementary School.",
      "type": "string",
      "maxLength": 120
    },
    "signers": {
      "description": "Certificates: up to 3 signature lines, e.g. [{\"name\": \"Alan Brooks\", \"title\": \"Principal\"}].",
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80,
            "description": "Signer name, e.g. Dr. Alan Brooks."
          },
          "title": {
            "description": "Signer title, e.g. Principal.",
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "style": {
      "description": "Certificates: design style: classic (navy double border), gold (cream with gold seal), modern (teal geometric), deco (burgundy art deco). Default classic.",
      "type": "string",
      "enum": [
        "classic",
        "gold",
        "modern",
        "deco"
      ]
    },
    "envelope_size": {
      "description": "Envelopes: \"10\" for a #10 business envelope 4-1/8 x 9-1/2 in (default) or \"a7\" for a 5-1/4 x 7-1/4 in invitation envelope.",
      "type": "string",
      "enum": [
        "10",
        "a7"
      ]
    },
    "usps_style": {
      "description": "Envelopes: print the delivery address in USPS style (uppercase, no periods or commas). Default false.",
      "type": "boolean"
    },
    "field_map": {
      "description": "Optional explicit links from template fields to column names when names differ, e.g. {\"Gift\": \"Donation Amount (USD)\"}.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "missing_values": {
      "description": "What to do when a record has an empty value for a field with no default: leave_blank (default), skip_record (leave that record out), or placeholder (print [Field Name] for proofreading).",
      "type": "string",
      "enum": [
        "leave_blank",
        "skip_record",
        "placeholder"
      ]
    },
    "start_record": {
      "description": "For lists over 2,000 records: first record of this batch, e.g. 2001 for the second batch. Default 1.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20000
    },
    "max_documents": {
      "description": "How many records to put in this PDF (1-2000), e.g. 500. Default all, up to 2,000 per PDF.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    }
  },
  "required": [
    "document_type"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "document_type": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "source": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "sheet": {
          "type": [
            "string",
            "null"
          ]
        },
        "sheets": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "rows": {
          "type": "number"
        },
        "blank_rows_ignored": {
          "type": "number"
        }
      },
      "required": [
        "type",
        "name",
        "sheet",
        "sheets",
        "columns",
        "rows",
        "blank_rows_ignored"
      ],
      "additionalProperties": false
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "column": {
            "type": [
              "string",
              "null"
            ]
          },
          "match": {
            "type": "string"
          },
          "formats": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "has_default": {
            "type": "boolean"
          }
        },
        "required": [
          "field",
          "column",
          "match",
          "formats",
          "has_default"
        ],
        "additionalProperties": false
      }
    },
    "unmatched_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "suggestion": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "field",
          "suggestion"
        ],
        "additionalProperties": false
      }
    },
    "needs_confirmation": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "counts": {
      "type": "object",
      "properties": {
        "records": {
          "type": "number"
        },
        "in_batch": {
          "type": "number"
        },
        "merged": {
          "type": "number"
        },
        "skipped": {
          "type": "number"
        },
        "with_missing": {
          "type": "number"
        },
        "documents": {
          "type": "number"
        },
        "pages": {
          "type": "number"
        }
      },
      "required": [
        "records",
        "in_batch",
        "merged",
        "skipped",
        "with_missing",
        "documents",
        "pages"
      ],
      "additionalProperties": false
    },
    "batch": {
      "type": "object",
      "properties": {
        "from": {
          "type": "number"
        },
        "to": {
          "type": "number"
        },
        "next_start": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "from",
        "to",
        "next_start"
      ],
      "additionalProperties": false
    },
    "missing": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "record": {
            "type": "number"
          },
          "label": {
            "type": "string"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "record",
          "label",
          "fields"
        ],
        "additionalProperties": false
      }
    },
    "missing_total": {
      "type": "number"
    },
    "preview": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "record": {
            "type": "number"
          },
          "label": {
            "type": "string"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "record",
          "label",
          "text"
        ],
        "additionalProperties": false
      }
    },
    "style": {
      "type": [
        "string",
        "null"
      ]
    },
    "paper": {
      "type": "string"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "properties": {
        "pdf": {
          "type": "string"
        },
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "document_type",
    "summary",
    "source",
    "fields",
    "unmatched_fields",
    "needs_confirmation",
    "counts",
    "batch",
    "missing",
    "missing_total",
    "preview",
    "style",
    "paper",
    "warnings",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本2 個工具