# Text Message Consent Desk: agent fixes for texts and send lists, opt-ins checked, every STOP honored, owner approved

> Let an agent tidy your marketing and reminder texts and build each send list, without texting anyone who said stop, anyone with no record of signing up, or anyone outside quiet hours in their own time zone. It writes fixed copies and lists and never sends or edits your records. A fix check refuses deleted prices, moved send times and invented offers. A list check tests every number against your consent records, replies and send history. You approve at your terminal and send it yourself.

- URL: https://paperchasewebb.ai/bots/marketplace/items/text-message-consent-desk-opt-in-checked-stop-honored-owner-approved/
- Type: Prompt pack
- Category: Solo business
- By: PaperChaseWebb
- Works with: Claude Code, Codex, Grok Bot, Hermes (named in the listing); Plain Markdown files, a small Python checker, and rules for AGENTS.md and CLAUDE.md, Claude Code and Codex notes, Hermes notes and a Grok Bot standing order. The agent files were checked by the checker on Linux; they were not loaded inside each agent for this release
- Price: $29 USD
- Difficulty: Intermediate
- Setup time: 45 min
- Time to result: The worked example in 5 minutes; your first campaign and its list checked in about an hour
- Format: Markdown (.md) file, text-message-consent-desk-opt-in-checked-stop-honored-owner-approved.md
- Version: 1.0, updated 2026-11-01
- License: Use inside your own business or for your clients. Do not resell or republish the kit itself.

## What you end up with

Each text you send names your business and has a STOP line, and goes only to people with consent on file who have not opted out, inside quiet hours where they are and under the cap you promised, one approved campaign at a time, with nothing deleted and no claim that anything is compliant.

## What you get

- 21 sections and an appendix in one .md file, with a one-line unpack for all 64 files
- sms_check.py scan: 16 checks for a missing brand or STOP line, opt-outs that ask for a log-in or a word like NO, link shorteners, offers inside reminders, placeholders, fake Re: lines and compliance claims
- sms_check.py fix: 12 checks that compare the agent's copy with the original, so cutting a price, moving the send time, adding a link or inventing a discount fails
- sms_check.py list: 9 checks on your records, including stop replies never marked, texts sent after an opt-out and contacts with no consent on file
- sms_check.py sendlist: 12 checks on every number the agent picks: in your contacts, not opted out, consent on file, inside quiet hours in their own zone, under your weekly cap
- A claims check that stops reports saying texts are compliant or that the agent sent or scheduled anything
- The owner step: approve.py needs a real terminal and part of the file hash, refuses agent sessions and piped input, and refuses a list if anyone replied since it was built
- A 7-text eval set with planted record problems, rules and two skills for Grok Bot, Claude Code, Codex and Hermes, six prompts and six templates
- The test harness: 72 unit tests and 567 planted faults you can repeat

## Who it is for

Small businesses and agencies that text customers about offers and appointments, who want an agent to tidy the texts and build each list, with a person approving every send.

## Tools needed

- Python 3.8 or newer: runs the text scan, the fix check, the records check, the send list check, the report check, the rules and settings checks and the owner approval script; standard library only
- Grok Bot, Claude Code, Codex or Hermes: writes fixed copies of your saved texts and a send list for each campaign under the AGENTS.md rules or the Grok Bot standing order; never sends or schedules a text, never edits your contact records and never approves
- CSV exports from your texting tool: contacts, replies and send history saved into site/; the kit never logs in to your texting tool
- You need: Python 3.8 or newer
- You need: CSV exports of contacts, replies and sent texts from your texting tool
- You need: The exact sign-up wording each form or keyword showed
- You need: Someone who approves each text and list and sends it

Cost to run: The kit is the only purchase. Everything runs locally with Python; the checker makes no network calls, logs in to nothing and sends no texts.

## How it works

1. **Unpack and test.** Save the kit as pack.md in an empty folder, run the unpack line from Appendix A, then sh test_all.sh. Expected: 64 files written; 72 tests OK; 567 of 567 planted faults caught.
2. **Watch the flow.** Run sh example/run_example.sh and read it next to section 17. Expected: A bike shop's text with 5 high findings and records with 4, an agent's first-try fix and send list caught, the second tries clean, a first-try report with 5 findings and a piped approval refused.
3. **Put in your texting.** Fill in site/settings.json from the template, export contacts, replies and sent texts into site/, save a campaign into site/campaigns, then run python3 desk/sms_check.py site and python3 desk/sms_check.py list. Expected: No findings, or a short list of settings and records to fix first.
4. **Fix one campaign and build its list.** Have your agent follow skills/campaign-fix and skills/send-list, then run sms_check.py fix queue/fixes and sms_check.py sendlist on the list. Expected: A fixed text and a send list in queue/fixes with 0 high findings, and a report naming everyone left off and why.

## Sample prompt: First pass (Grok Bot, Claude Code, Codex, Hermes)

```
Follow skills/campaign-fix for site/campaigns/[file]. Do not send or schedule anything. List the codes fixed and the codes left for me, with the reason for each.
```

Prompt 1 of 6.

## Sample prompt: Build the send list (Grok Bot, Claude Code, Codex, Hermes)

```
Follow skills/send-list for [campaign]. Write queue/fixes/[campaign].send.csv. Name everyone left off and why. Do not edit contacts.csv.
```

Prompt 2 of 6.

## Sample prompt: Check the records (Grok Bot, Claude Code, Codex, Hermes)

```
Run sms_check.py list. For each finding, tell me what to change in my texting tool. Change nothing yourself.
```

Prompt 4 of 6.

## Free preview of text-message-consent-desk-opt-in-checked-stop-honored-owner-approved.md

````markdown
# Text Message Consent Desk: agent fixes for texts and send lists, opt-ins checked, every STOP honored, owner approved

Version 1.0, 2026-11-01. By PaperChaseWebb. For small businesses and the agencies that run their texting, who want an AI agent to tidy up marketing and reminder texts and build each send list, without texting anyone who said stop, anyone with no record of signing up, or anyone outside quiet hours in their own time zone. Works with Grok Bot, Claude Code, Codex and Hermes. Python 3.8 or newer, standard library only, no API keys, no logins. The kit and the agent never send or schedule a text and never edit your contact records. Tested with 72 unit tests and 567 planted faults on Linux with Python 3.13, 3.12, 3.11, 3.9 and 3.8. All business, contact and phone data in this kit is made up. Not legal advice.

Since April 11, 2025, the FCC's rule on revoking consent says a reply of stop, quit, end, revoke, opt out, cancel or unsubscribe counts as an opt-out, and so does any other reasonable way of saying it. The business has 10 business days to honor it, and may send one short confirmation within 5 minutes with no marketing in it. Marketing texts need written consent first. Texts to sell something stay between 8 a.m. and 9 p.m. where the person is. Carriers expect the brand name and a STOP line in every marketing text.

Most small senders are close. The sign-up form is fine but two numbers came in from a paper sheet nobody kept. Someone replied "Stop" and the textin
````

## Test record

- Date: Nov 1, 2026
- What was run: tests/test_lib.py (8), test_scan.py (12), test_fix.py (12), test_list.py (8), test_sendlist.py (8), test_modes.py (11), test_approve.py (9, on a real pseudo terminal) and test_mini.py (4); tests/mutate.py with 511 planted faults across text problems, bad fixes, contact records, send lists, reports, agent rules, settings, the eval set and approve.py, plus 56 against sms_mini.py; sms_check.py set on the 7-text eval set; example/run_example.sh end to end; and the unpack line with test_all.sh. Linux, Python 3.13, 3.12, 3.11, 3.9 and 3.8.
- Result: 72 passed, 0 failed on all five versions; 567 of 567 planted faults caught and all clean baselines clean; the eval set had 0 findings; the example caught the first-try fix with 5 high findings, the first-try send list with 9 and the first-try report with 5, and refused piped approval; the unpack line wrote every file and test_all.sh passed there.
- Not run: A live Grok Bot, Claude Code, Codex or Hermes session. Real sends, phones and carrier filtering. Texting tool settings and 10DLC registration. State rules. Non-US numbers. macOS or Windows. Legal review.

Copied from this item's dated test notes. What was not run stays in.

## Worth knowing

- The agent rules were checked by the checker but not loaded inside a live Grok Bot, Claude Code, Codex or Hermes session for this release. The eval fixes were written by hand to the rules. Give your agent the entrance exam in section 15 before you rely on it.
- Not legal advice. Nothing in the kit says a text, a list or a business meets any law, and no check here says a text will be delivered. Federal rules are the floor; set quiet hours and the weekly cap to the strictest rule that applies to you.
- The checker reads the files you export. It does not send texts, read your texting tool's settings, check 10DLC registration or the do-not-call registry. US numbers only.
- The owner step assumes the agent cannot run approve.py at a terminal. Run it as a separate user; agent rules alone are not a hard boundary.
- All businesses, texts, names and numbers in the kit are made up. English only. Tested on Linux only; macOS and Windows were not tested.
- On 2026-11-01 on Linux: 72 unit tests and 567 of 567 planted faults passed on Python 3.13, 3.12, 3.11, 3.9 and 3.8; the 7-text eval set was clean; the unpack line wrote every file and test_all.sh passed in that folder.

## Questions

**Which agents does it work with?** Any agent that can read files and run a script. The kit has rules for AGENTS.md and CLAUDE.md, Claude Code and Codex notes, Hermes notes and a Grok Bot standing order. Those were checked by the checker, not loaded in each agent for this release.

**Will it send texts or change my contacts?** No. The agent writes fixed texts and send lists into a queue folder. You approve each one at a terminal and load it into your texting tool yourself. Opt-outs are marked by you, in your texting tool.

**What counts as an opt-out?** STOP, QUIT, END, REVOKE, OPT OUT, CANCEL, UNSUBSCRIBE and plain requests like "stop texting me", following the FCC rule in force since April 2025. The kit treats a stop as stopping every kind of text until the person texts START.

**Which texting tools does it work with?** Any tool that exports contacts, inbound messages and sent messages as CSV. Rename the columns to match the templates. The kit never logs in to the tool.

**Can you set it up for us?** Yes. Our Install sprint maps your exports, sign-up wording and eval set, or Managed Ops runs the fixes, lists and reports for you each week. Book a call or write to mgmt@paperchasewebb.com.

## How to buy

$29 one time at https://paperchasewebb.ai/bots/marketplace/items/text-message-consent-desk-opt-in-checked-stop-honored-owner-approved/. Stripe checkout, then an instant download page; the download link is also in your emailed receipt.

Seller: PaperChaseWebb Inc., mgmt@paperchasewebb.com
