Primitives / Shredders
Shredders
Document in, the same document out, its prose rewritten.
Each paragraph is rewritten by a different model from a pool of providers, so no single model's mark survives. Structure, links, figures and quotes stay untouched.
- Unit
- Shredder endpoint
- A run produces
- the rewritten document plus a preservation receipt
- In the app
- /shredders
- API reference
- All shredders tools
Try it
run_shred over REST: POST /api/shred/ingest/{endpoint_id}. Needs an API key with shredder:write.
curl -X POST https://app.letterstory.com/api/shred/ingest/<endpoint_id> \
-H "x-integrations-key: ls_..." \
-H "content-type: application/json" \
-d '{
"text": "..."
}'1. Constraints: what you configure
namelevelsrewritersseatsrulesadvancedOnly name is required; the rest uses platform settings, and every save is a new, unchangeable version. levels sets the watermark defense per level; rewriters, seats and rules pick models and checks. Use ours, copy it, or bring your own.
namedefaults.formatdefaults.aggressiondefaults.attempts_per_unitdefaults.apply_rulestextformataggressionattempts_per_unitapply_rulesasyncaggression is standard, high or max. The config file is strict: an unknown key is refused, not ignored.
2. Mechanism: what always happens
- 1The document is read as prose spans over its own bytes. Images, embeds, links, tables and code never leave the process.
- 2Every paragraph is rewritten, each tried across providers. A judge, a turnover check and a cap on how much any one provider writes are always on.
- 3A quality guard reverts any sentence that dropped a figure, broke a URL, changed a quote or broke Markdown, then issues a preservation receipt.
- 4Fails safe: on an outage, a refusal or a lost element you get your original bytes back, not a broken document.
3. Intelligence: who picks values
An API key sets every field on the call or the endpoint. Letterstory decides nothing.
The Studio, the editor's Shred button, Auto-Pen and a kernel's in-loop shred go through the same door, deciding only the format and whether a post shreds at all.
4. Verification: did it hold
| Check | Reads back | Rule |
|---|---|---|
preserved | mechanism | The receipt shows everything that went in came out. |
spread | mechanism | No provider wrote more than its share of the piece. |
rules | apply_rules | The writing-rules guard actually ran when it was asked for. |
Report-only; a run the service never processed reads back as skipped on all three.
Surfaces
Same call over MCP (tools/call) and REST.
| Job | MCP tool | REST |
|---|---|---|
| Shred | run_shred | POST /api/shred/ingest/{endpoint_id} |
| Poll a run | get_shred_job | GET /api/shred/ingest/{endpoint_id}/jobs/{job_id} |
list_shred_runs | POST /api/integrations/tools/list_shred_runs | |
| Endpoints | list_shredder_endpoints | POST /api/integrations/tools/list_shredder_endpoints |
create_shredder_endpoint | POST /api/integrations/tools/create_shredder_endpoint | |
delete_shredder_endpoint | POST /api/integrations/tools/delete_shredder_endpoint | |
| Endpoint config | get_shredder_endpoint_config | POST /api/integrations/tools/get_shredder_endpoint_config |
set_shredder_endpoint_config | POST /api/integrations/tools/set_shredder_endpoint_config | |
| Balance | get_shred_balance | POST /api/integrations/tools/get_shred_balance |
| The shredder file | get_shredder_file | POST /api/integrations/tools/get_shredder_file |
save_shredder_file | POST /api/integrations/tools/save_shredder_file | |
promote_shredder_version | POST /api/integrations/tools/promote_shredder_version | |
list_shredder_versions | POST /api/integrations/tools/list_shredder_versions | |
pin_shredder_version | POST /api/integrations/tools/pin_shredder_version | |
accept_shredder_offer | POST /api/integrations/tools/accept_shredder_offer |
CLI: letterstory shredder run
Direct API shreds draw shred credits (402 at zero). Shreds Letterstory makes for you come out of your plan.