# UTF-8 send preflight

## Scan the payload before anything runs

- Scan the exact text, subject, footer, and recipient names a script will send or upload for non-ASCII characters before the script runs.

- Treat accented names and Spanish text as routine payload, not as edge cases. Names such as Nuñez and any bilingual English and Spanish body always trigger this preflight.

- Fix the pipeline when a character fails. Never strip an accent, transliterate a name, or rewrite approved text just to make a script pass.

## Set UTF-8 at every hop

- Set UTF-8 explicitly where the script reads its input files, where it builds the message or document body, and where the sending or uploading call declares its charset.

- Check each hop separately. A file that is UTF-8 on disk can still be decoded as ASCII or Latin-1 by the script that reads it, and that hop is where batches halt or garble.

- Prefer a route already verified to round-trip UTF-8 for the surface in question. When a tool has garbled non-ASCII text before, use its verified alternative route instead of retrying it on a live batch.

## Prove it with one real item

- Send or upload one test item first, carrying the actual accented characters from the real payload, to a test address or a test document you control.

- Read the test item back at the receiving end and compare the accented words character for character against the approved text.

- Run the full batch only after the read-back matches. State the preflight result in one line with the batch report, naming the characters tested and what the read-back showed.

## Recover a halted batch honestly

- Report exactly how many items went out and how many did not when a batch stops partway. Zero sent is zero sent, never a completed send.

- Name the character and the hop that stopped the batch, fix that hop, and rerun the preflight before resuming.

- Resume only the unsent remainder. Check the sent record first so no recipient gets the same message twice.

## Available connectors

- Use `muse.connector_search` to find other connectors and `muse.skill_search` to find related skills.

- If nothing here fits, look on the web for a maintained API or MCP server and set it up with [Custom Connectors and MCPs](/opt/muse/skills/custom-connector-setup/SKILL.md), or build a custom connector.

## Alternatives for better results

- Send one real item to the first recipient and read it back in place of a test item when no test address exists, then release the rest of the batch.

- Keep a tiny standing test string with the accented characters this work uses most, drawn from real names and words in the payload, and reuse it for every preflight instead of inventing a new one each time.
