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 textgenerate_merged_documents에서
  • INFOTool description contains placeholder or incomplete textgenerate_merged_documents에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~5,092토큰 (도구 정의)
~29.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.98%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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개