A second opinion,
in your workflow.
UNSLOP returns a checked rewrite of English X posts and marketing copy. Your agent shows the result. You decide what gets published.
Get connected.
- Sign in with GitHub. Open the dashboard. Your workspace is created automatically; product context is optional.
- Create an API key. Copy it when it appears. A key is shown once; keep it in your agent’s secure environment or secret manager.
- Install the skill. Paste this instruction into an agent that can read web pages and install local skills.
Read <your-unslop-origin>/SKILL.md and set up UNSLOP for this project.Use the origin you actually opened as UNSLOP_BASE_URL. Store your project key as UNSLOP_API_KEY. Keep it out of source control, prompts shared with other people, and public logs. The skill directs new users through sign-in and key creation when they have not connected an account yet. You only need an UNSLOP account and key; no separate AI-provider account is required.
How a rewrite works.
Ask your agent: “Use UNSLOP before you finish.” The skill loads your optional context and submits the relevant draft to POST /v1/rewrites. Jev assesses it, Claude Sonnet 5.5 generates a candidate when an edit is supported, and Jev checks the candidate’s quality and preservation of meaning and claims.
The candidate passed the editorial and preservation checks. Your agent shows rewrite.text exactly as returned. It uses one free credit, or costs $0.02 after you have used your free allowance and enabled billing.
No material edit was supported. The original is returned and no credit or payment is charged.
No verified rewrite was returned. Keep the original and review the concerns or add missing context. No credit or payment is charged.
The score is an editorial index from 0 to 100, where higher means more observed issues. It is not an AI-authorship probability. A check can abstain from providing a score when its judgment is too uncertain. An IMPROVE result can still include supported findings alongside concerns and a null score; revise only the passages identified in those findings.
Each check considers specificity, redundancy, formulaic framing, and inflated language. Claims are compared with supplied context; UNSLOP does not independently verify them.
The beta uses a small set of original synthetic writing examples reviewed by Jev. Reports identify when these references informed a check. They are examples supplied with a request, not scraped X posts or model training. Human validation and broader testing are still needed.
Your agent should show the server’s returned text without silently rewriting it again. Internal assessments are included; there is no need to call a separate check before or after the rewrite. Further revisions require your request. UNSLOP never publishes the result.
Add context when it helps.
You can start with empty context. Later, save what your reader needs to know in the dashboard: what the product does, who it helps, why someone would choose it, and how you want it to sound. Add approved claims and up to three examples you like and dislike.
Every saved update creates a new context_version. Fetch the current project before checking and submit that version with your draft. This keeps a result tied to the context that informed it.
GET /v1/project
PATCH /v1/project
{
"context_version": 1,
"context": {
"product": "What the product does",
"audience": "Who it is for",
"differentiation": "Why someone chooses it",
"voice": "How it should sound",
"approved_claims": [],
"liked_examples": [],
"disliked_examples": []
}
}A slop database that keeps the skill current.
A recurring worker discovers English X replies across topics. Jev assesses each reply in conversation context and decides which supported slop examples enter the database. Eligible evidence updates the skill's guidance automatically. This pipeline is implemented locally; collection is not running and no live corpus is included in this release.
Your agent can request GET /v1/patterns with its project key. When available, the response includes a library version and patterns with conditions, editing directions, exceptions and evidence counts. This first version selects and orders advice for four known dimensions; it does not discover new pattern categories. Raw comments and account details stay outside the customer API. Pattern reads do not use draft-check credits during the beta.
An empty library returns status: not_published and library: null. The skill must say when corpus guidance is unavailable. The draft-check API uses its own fixed rubric; a draft report does not claim to have searched the corpus. Patterns are model-selected observations from a limited sample, not proof of AI authorship or a measurement of all writing on X.
One request. A checked rewrite.
All /v1 endpoints require your project’s Bearer API key. Customer keys begin with unslop_test_ or unslop_live_, depending on the environment. Your key authorizes access to your project; never share it publicly.
Send a unique UUID in the Idempotency-Key header for a new rewrite. Keep the endpoint, body and key together. A completed replay returns the saved result without another provider call or credit charge. Reusing that key with different input or switching between checks and rewrites is rejected.
curl "$UNSLOP_BASE_URL/v1/rewrites" \
-H "Authorization: Bearer $UNSLOP_API_KEY" \
-H "Idempotency-Key: $REQUEST_ID" \
-H "Content-Type: application/json" \
--data-binary @rewrite.json{
"kind": "x_post",
"mode": "quick",
"text": "Your draft, with at least 10 characters.",
"context_version": 1
}kind accepts x_post or marketing_copy. Only quick mode is supported. Optionally set parent_check_id to a previous check ID to associate a revision.
| Endpoint | What it does |
|---|---|
POST /v1/rewrites | Assess, rewrite when useful, and validate the candidate. |
GET /v1/patterns | Read current guidance supported by the Jev-selected corpus. |
POST /v1/checks | Assessment only; uses one free credit and is unavailable after the free allowance. |
GET /v1/checks/:id | Read a retained check or rewrite report from your project. |
GET /v1/project | Read current project context. |
PATCH /v1/project | Save context with its current version. |
GET /v1/usage | Read your free allowance, billing status and paid usage. |
Reading the response
A completed rewrite returns rewrite.status (rewritten, unchanged or review) and rewrite.text. The text is the accepted candidate only for rewritten; other outcomes return the original. rewrite.before contains the original assessment, and rewrite.generator_model is null when generation did not run. Preservation scores compare the two texts; they do not independently verify real-world facts.
Reports also contain an ID, rubric and model versions, context version, recommendation, score, findings, concerns, and usage. Every finding quotes an exact span from your draft, with zero-based start and exclusive end offsets measured in UTF-16 code units (JavaScript string offsets).
research.external_sources_checked is always false for QUICK checks. Confidence expresses the model’s confidence in a judgment; it is not a guarantee that an edit is useful.
usage.credits_charged counts charged operations; it is not a dollar amount. usage.amount_charged_usd gives this request’s dollar charge. It is omitted for trial results, $0.02 for an accepted paid rewrite, and zero for an uncharged paid result or replay. Internal model calls never add separate customer charges.
GET /v1/usage returns your free granted, used and reserved counts. Its remaining includes paid calls when billing is active. The optional billing object includes active, status, unit_price_usd, monthly_limit_usd, period_end, and paid used, reserved and remaining counts for that billing period.
Errors are errors.
A missing dependency or failed provider request returns an error, never a fabricated pass. Read the error message and respect Retry-After when supplied. After a timeout, poll with the same body and idempotency key; do not create a new request to force another provider attempt. An uncertain provider outcome keeps its allowance reserved until it can be resolved. A reserved call is not a confirmed customer charge. Don’t present an unavailable check or rewrite as a completed result.
Five free. Then pay for accepted rewrites.
New verified accounts receive 5 lifetime free credits, enough for five accepted rewrites. Existing grants are preserved. A rewritten result uses one free credit; unchanged and review use none. The allowance does not renew or automatically enroll you in billing.
After your free allowance, accepted rewrites cost $0.02 each. To continue, choose Enable monthly billing in the dashboard and complete Stripe Checkout. You enter payment details on Stripe. Usage is invoiced monthly, with a $10 usage cap per billing period. You can manage billing or cancel from the dashboard. Billing is optional; payments may be unavailable while setup is being completed.
For billing questions, contact mees@unslop.live.
Unchanged and review results, replays and retained report reads cost nothing. A request needs an available free or paid slot to start; unchanged and review results release that reservation. Internal generation and Jev checks are included in the price. Your dashboard shows available calls and paid usage.
Assessment-only calls to POST /v1/checks use one credit from the same free allowance when completed. They are unavailable after that allowance, even when monthly billing is active. Paid calls use POST /v1/rewrites.
A draft must contain 10–8,000 characters. The complete provider input, including project context and assessment instructions, also has a 12,000-byte limit. A long draft with extensive context can exceed that bound; shorten the draft or context and try again.
Saved project context supports up to eight approved claims and three examples in each preference category. Treat examples as guidance, not text to copy into every draft.
Only English text is in scope. Visual design review, external social research and publishing are not supported.
Your draft stays your draft.
Jev assessments send submitted text, candidates and saved context to TypeSafe. When generation is needed, the draft, relevant findings and context go directly to Anthropic on the hosted service. Vercel AI Gateway is an optional, explicitly configured route to Anthropic. Do not submit credentials, customer records, confidential material you cannot share with a provider, or unnecessary personal information.
Reports become unavailable seven days after creation. Expired report text is removed by daily cleanup. You can delete individual retained reports from the dashboard earlier. Project context persists for subsequent checks until you replace or clear it. You can clear saved context by saving empty fields in Project context. Account-level deletion is not yet self-service.
Minimal usage and security records are separate from the report. Submitted text is not used as an analytics event or automatically added to a shared pattern library. Browser forms do not save drafts or raw keys in local storage.
UNSLOP cannot promise zero retention by its processing providers. Review TypeSafe’s terms and processing policies ↗ before submitting sensitive material. GitHub sign-in uses Neon Auth. Stripe collects payment details and issues invoices when you enable billing. Separate billing and usage records can remain after a draft is deleted; deleting a report does not reverse its usage charge. Draft text is not sent to Stripe for billing.
For privacy questions or account deletion requests, contact mees@unslop.live.