Built for myself
    AI agents
    MCP
    Email follow-up

    I made a six-email follow-up tool for myself, then opened it up to agents

    Client: driptoolagent.com (my own product)Industry: Email follow-up / Tools for AI agentsLocation: Built on Hawaii Island, runs anywhere

    TL;DR

    After a consultation, the follow-up is the part nobody owns. I wrote six short emails to send to the people I had already talked to, and I got tired of retyping them. So I built Recontact at driptoolagent.com: six emails, written and previewed side by side, sent one a day to one person you already know. No signup. Then I opened the same tool to AI agents through a REST API and an MCP server, because an agent that has just finished a sales call has exactly the same problem I had.

    "Most people I talk to are not short on tools. They are short on a system for the work that repeats. Follow-ups are that work. I built the system for myself first."

    - Brent Norris

    The Problem

    I run a consulting practice from Hawaii Island. Every good conversation with a prospect ended the same way: I meant to follow up, and then a week went by. When I did follow up, I was rewriting the same six emails from memory. The tools that exist for this are built for lists. They want a signup, a contact import, a plan, and a mailing to a thousand people. I wanted to send six polite emails to one person I had already spoken to, and I wanted it to take two minutes.

    Why It Mattered

    A follow-up that goes out late reads as disinterest. A follow-up that goes out to a list reads as spam, and gets your domain filtered. The people I was losing were not saying no. They were just not hearing from me. And once AI agents started booking and running calls on their own, the same gap opened for them: the agent finishes the conversation and has nowhere to put the follow-up. Every email tool assumes a human at a keyboard with a credit card.

    What I built, in order

    Step 1: Write the six emails I actually send

    The product started as my own sequence. Day 0 follows up on the conversation, days 1 to 4 each answer one question a prospect actually has, and day 5 says thank you. No deadline pressure, no fake urgency, and a plain way out if they have gone another direction.

    • Six emails on a fixed cadence: day 0, +1, +2, +3, +4, and a thank-you on +5
    • Each email has a subject, a greeting, a rich-text body and one closing question
    • {{first_name}} drops the contact's name in; nothing else about them is stored
    • Cadence can be one a day, one a week or one a month, in the recipient's timezone

    Step 2: Take away the signup

    The page mints an API key when it loads. You write, preview and schedule without creating an account. There is no user table at all: the key is the tenant, and every campaign hangs off it.

    • A guest key is issued on page load; nothing to register, nothing to confirm
    • Writing, previewing, cadence and timezone need no account; what sending costs is on the site
    • Themes fill all six emails with copy for your industry so you edit rather than start blank
    • Key management is scoped to the caller only: a key can list and revoke itself, never another

    Step 3: Open the same tool to agents

    An agent should not have to scrape my web page. It reads /llms.txt, pulls the OpenAPI document, and either calls the REST API or connects to the MCP server at /mcp with its bearer key. Both paths run the same code, because when they were separate copies one of them drifted.

    • REST: POST /v1/guest for a key, POST /v1/campaigns, GET preview, POST send
    • MCP transport at driptoolagent.com/mcp with the same key as a bearer token
    • /llms.txt and /v1/openapi.json are public and need no key to read
    • A 402 returns a Stripe Checkout link for a person, or a shared-payment-token path for an agent that holds its customer's card

    Step 4: Refuse to be a spam cannon

    Agents will do exactly what they are allowed to do, so the limits are in the code, not in a policy page. One recipient per campaign. No purchased lists. Bad addresses are rejected before anything is charged. A bounce or a complaint stops the run and blocks that address on that key.

    • One recipient per campaign; role mailboxes and disposable domains are refused
    • Placeholder links (example.com and the reserved test domains) block the send button
    • One-click unsubscribe stops the remaining emails; bounces and complaints pause the run
    • Sent through its own Resend account, never from the shared server address, so a complaint here cannot hurt a client's mail

    Step 5: Measure agents without a tracking pixel

    There is no analytics tag on purpose. Agents do not run JavaScript, so a client-side tag would miss the audience the tool is for. The web server log and the key table record who minted a key and from what, with the IP salted and hashed rather than stored.

    • Every key records how it was minted: browser, agent, crawler or tool, plus referrer
    • IP addresses are salted, hashed and truncated; the salt is returned by no endpoint
    • One delivery row per email per recipient, unique, so a retry can never double-send
    • One script prints the funnel: keys minted, campaigns created, emails sent

    Key Metrics

    6

    Emails per sequence

    None

    Signup required

    1

    Recipients per campaign

    Web, REST, MCP

    Ways in

    Key Technical Stack

    Node 22 + TypeScript
    SQLite
    Model Context Protocol (MCP) server
    OpenAPI 3.1 + llms.txt
    Resend (dedicated sending domain)
    Stripe Checkout + shared payment tokens
    Caddy

    The Result

    The tool works and it is public. I use it. As of 09-01-26 the funnel read 78 keys minted, 2 campaigns created and 1 email sent, and most of those keys were minted before I was measuring, so I do not know what they were. That is the honest state of a product that is a few days old. What I can say is that an agent can now read one text file, get a key, write six emails and send them, without a human in the loop, and cannot use it to spam anyone.

    Try it, or have me build the version your business needs

    Recontact needs no account to try. If your business has a piece of repeating work that an agent should own, that is the work I take.

    More case studies