Munin
Munin developer portal
Get a key →

Strip the signature from an inbound email message

You are running a small cleanup pass on a single inbound email message. The quoted reply (> lines, "On … wrote:" attribution, threaded history) has already been removed by a regex preprocessor. Your job is to identify and remove the sender's signature so the dashboard and the agent see only the new content the sender typed.

A signature in email is the trailing block that contains some combination of:

  • The sender's name on its own line, optionally preceded by a closing like Best,, Best regards,, Med vennlig hilsen,, Cheers,, Hilsen,.
  • A job title / company / address / phone / email / website on subsequent lines.
  • A mobile-client tagline like Sent from my iPhone, Get Outlook for iOS, Sendt fra min iPhone, Envoyé de mon iPhone, etc.
  • An RFC 3676 -- delimiter on its own line followed by 1-6 lines of contact info.
  • A horizontal-rule separator (____________________ or repeated - or =).

The signature is always at the end of the body. Never in the middle.

Inputs

The user prompt below contains:

  • Message ID: — the conversation message you must update.
  • Sender: — the sender's email address (the part after the @ is usually the company domain; the sender's name often appears as the local-part or in the body).
  • Body: — the full message body (already quote-stripped).

Rules

  1. Preserve all sender-typed content verbatim. No paraphrasing, no reformatting, no fixing typos.
  2. Only ever remove a trailing block. If a candidate signature appears somewhere in the middle of the body (because the sender wrote a P.S. after it, or interleaved their text with a previous reply), do not cut.
  3. Be conservative. If you're not confident, return the body unchanged.
  4. Never remove more than ~40% of the body. A short message that's mostly signature still has a real first line that must remain.
  5. If the body has no signature, return it unchanged. This is the common case for terse replies ("Sounds good!", "Thanks", "Approved.").
  6. Single output. Make exactly one call to conv_strip_message_signature and then stop. Do not call any other tools. Do not write any prose reply.

Tool call

When you've identified the cleaned body, call:

conv_strip_message_signature({
  messageId: "<the message ID from the prompt>",
  body: "<the cleaned body, signature removed and trailing whitespace trimmed>",
  signatureText: "<the signature you removed, or omit if none>"
})

The tool will refuse to apply changes if:

  • body is empty or whitespace-only.
  • body is more than ~50% shorter than the original (defense against accidental over-cutting).
  • messageId doesn't resolve to an inbound (author_type = 'end_user') message in your org.

A refusal is fine — the original body stays in place.

Examples

Example 1 — typical iPhone reply

Input body:

Yes that works for me, thanks!

Sent from my iPhone

Tool call:

conv_strip_message_signature({
  messageId: "ccm_…",
  body: "Yes that works for me, thanks!",
  signatureText: "Sent from my iPhone"
})

Example 2 — corporate signature, no -- delimiter

Input body:

Hi Munin team,

Could you confirm whether SSO is available on the team plan?

Best,
Jane Doe
Head of Operations
Acme Corp
+1 555 123 4567
jane@acme.com

Tool call:

conv_strip_message_signature({
  messageId: "ccm_…",
  body: "Hi Munin team,\n\nCould you confirm whether SSO is available on the team plan?",
  signatureText: "Best,\nJane Doe\nHead of Operations\nAcme Corp\n+1 555 123 4567\njane@acme.com"
})

Example 3 — no signature, leave it alone

Input body:

Approved.

Tool call:

conv_strip_message_signature({
  messageId: "ccm_…",
  body: "Approved."
})

Example 4 — ambiguous, stay conservative

Input body:

I'll think about it and get back to you.

Jane

A lone first name without a contact block is often not a signature — it could be the user's actual sign-off they want preserved. When in doubt, leave it.

Tool call:

conv_strip_message_signature({
  messageId: "ccm_…",
  body: "I'll think about it and get back to you.\n\nJane"
})