mcpField
R
recoup-platform-email-helper

recoup-platform-email-helper

github.com/recoupableProductivity95.0k installsUpdated 1d ago
Repository

About recoup-platform-email-helper

A skill for sending Recoup email from a task with a bundled Node script. It handles payload serialization and validation for text or HTML messages, with a dry-run option to preview before sending.

Key features

  1. 01Send email with a Node script
  2. 02Accept HTML and plain-text bodies
  3. 03Support multiple recipients and CC
  4. 04Validate payloads with dry-run
  5. 05Refuse to send an empty body
  6. 06Check exit status and print message ID

Use cases

  1. 01Send daily or task reports
  2. 02Email multiple recipients
  3. 03Preview and validate an email payload
  4. 04Diagnose failed sends or empty content

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/recoupable/skills --skill recoup-platform-email-helper

After installing, type/recoup-platform-email-helperin Claude Code to confirm it loaded.

Bundled filesscripts/send-email.mjs

Details

From the project README

Sending email from a task

Send email by running the bundled Node script — do not assemble JSON in the shell.

Why this exists

Hand-rolling the send (curl -sS … -d "{… \"html\": $(echo "$HTML" | jq -R -s '.') …}") is fragile: depending on quoting/escaping it produces a malformed body, and the API used to silently deliver an empty footer-only email titled "Message from Recoup" with success:true. The model gets this wrong stochastically. This script removes shell serialization entirely.

How to send

  1. Write the email body to a file (recommended for HTML — avoids all escaping issues):

    cat > /tmp/report.html <<'HTML'
    <h1>Daily Report</h1>
    <p>…your real content…</p>
    HTML
    
  2. Send it:

    node "$SKILL_DIR/scripts/send-email.mjs" \
      --subject "Daily Report — $(date '+%B %d, %Y')" \
      --html-file /tmp/report.html \
      --to [email protected]
    

$SKILL_DIR is this skill's install directory (~/.agents/skills/recoup-platform-email-helper); use the absolute path to scripts/send-email.mjs.

Flags

FlagMeaning
--subject <s>Subject line (optional — the API derives one from the body if omitted).
--html-file <path> / --html <s>HTML body. Prefer --html-file.
--text-file <path> / --text <s>Plain-text body.
--to <email>Recipient (repeatable). Omit to default to the account's own email ("email me this").
--cc <email>CC (repeatable).
--chat-id <id>Room id for the footer "continue the conversation" link.
--dry-runSerialize + validate and print the payload; do not send. Use to preview.

Rules

  • Exactly one body is required. The script refuses to send (exit code 2) if there is no non-empty --html/--text. Never try to send an empty email.
  • Check the exit code. Non-zero means it did not send — read stderr and fix it; do not report success. The script prints the Resend message id on a real send.
  • The script reads RECOUP_API_KEY / RECOUP_ACCESS_TOKEN and RECOUP_API_BASE from the environment — these are already set in the sandbox. Never print or hard-code them.
  • Node only (the sandbox runtime is node22; python3 is not guaranteed). Zero dependencies.

Comments

Markdown supported