{"name":"io.github.theluckystrike/mail-merge","slug":"theluckystrike-mail-merge","title":"Mergewell Mail Merge","description":"Mail merge from Excel or CSV to PDF, right in the chat.","url":"https://mcp.market/server/theluckystrike-mail-merge","rating":null,"grade":"C","score":67,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T07:31:12.400Z","last_ok_at":"2026-11-04T07:31:12.400Z","latency_ms":304},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://mail-merge.zovo.one/","version":"1.0.1","remotes":[{"type":"streamable-http","url":"https://mail-merge.zovo.one/mcp"}],"packages":[],"tools":[{"name":"generate_merged_documents","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"preview_mail_merge","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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#"}}],"scan":{"score":67,"grade":"C","scanned_at":"2026-10-25T09:25:35.761Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-25T09:25:35.739Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1307ms"]},"poisoning":{"score":15,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mail-merge.zovo.one/mcp","reachable":true,"authRequired":false,"latencyMs":1307,"serverInfo":{"name":"mail-merge","version":"1.0.1"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://mail-merge.zovo.one/icon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}