Build on the DropSlop API.
The X-Ray, the detector, Humanize and Site audit as JSON over HTTPS, plus an MCP server for Claude and Cursor.
- Base URL
https://dropslop.ai - Your key
Authorization: Bearer hk_live_… - MCP server
https://dropslop.ai/mcp
Every endpoint and field: the API reference. Guides in plain words: Help.
Try it POST /v1/xray
One live call per press, without a key. Your text is not saved.
Quickstart.
Send JSON, get JSON. Every request carries your key in a header.
- Get a key. Keys start with
hk_live_and come with an account. Create a free account, then make one on the API keys page. - Send it in a header. Use
Authorization: BearerorX-API-Key. Either works. - Call an endpoint. Start with the X-Ray: one call, the whole result.
No key? The X-Ray, the detector, Humanize and the site audit still answer, within the free daily allowance. Saving drafts and voices needs a key.
export DROPSLOP_KEY="hk_live_YOUR_KEY"
# Either header works
curl https://dropslop.ai/v1/usage -H "Authorization: Bearer $DROPSLOP_KEY"
curl https://dropslop.ai/v1/usage -H "X-API-Key: $DROPSLOP_KEY"
POST/v1/xray
X-Ray a draft.
Scores for each paragraph, the phrases that give it away with their replacements, and runs of sentences that are all about one length.
Request
- textstring, required
- Markdown or plain text. Paragraphs split on blank lines.
- heat_threshold0 to 1, default 0.15
- A paragraph under this score, with no marked phrase, counts as
CLEAN. - voice_profileobject, optional
- A saved voice from
/v1/voices. Marks and guidance follow it. - voice_namestring, optional
- The voice’s name, used in the guidance.
- doc_idstring, optional
- A saved document this check belongs to.
What comes back
- scores.band
CLEAN,WARMorHOT: reads like a person, partly machine-made, machine-made.- scores.combined
- The detector’s output, 0 to 1. Each paragraph has its own in
blocks. - tell_phrases
- Each marked phrase, with
start_char,end_charandreplacements. - rhythm_runs
- Paragraphs whose sentences run to about one length, with guidance.
- usage
- The account’s running totals after this call.
curl https://dropslop.ai/v1/xray \
-H "Authorization: Bearer $DROPSLOP_KEY" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{
"text": "In today's fast-paced digital landscape, incident response has become more critical than ever. Engineering teams are under constant pressure to keep services available while shipping new features at a relentless pace. It is worth noting that downtime now costs mid-sized companies an average of $2.4M per year.\n\nIt's not just about having the right tools — it's about building a culture of ownership. By leveraging PagerDuty alongside clear escalation policies, teams can seamlessly coordinate their response and foster a sense of shared accountability. This approach serves as a testament to the power of proactive planning."
}
JSON
{
"scores": {
"local_gz": 0.6573,
"local_pg": 0.8401,
"local_combined": 0.7578,
"combined": 0.7578,
"verdict": "ai",
"band": "HOT"
},
"summary": {
"total_words": 95,
"total_blocks": 2,
"clean_blocks": 0,
"warm_blocks": 0,
"hot_blocks": 2,
"locked_structural_blocks": 0,
"tell_phrase_count": 5,
"rhythm_run_count": 2,
"surprisal_clump_count": 0
},
"blocks": [
{
"block_id": "b0",
"index": 0,
"kind": "prose",
"start_char": 0,
"end_char": 310,
"word_count": 47,
"text": "In today's fast-paced digital landscape, incident response has become more critical than ever. Engineering teams are under constant pressure to keep services available while shipping new features at a relentless pace. It is worth noting that downtime now costs mid-sized companies an average of $2.4M per year.",
"local_gz": 0.8033,
"local_pg": 0.8518,
"local_combined": 0.83,
"tier": "HOT",
"locked_default": false,
"tell_count": 1,
"rhythm_run_count": 1,
"surprisal_clump_count": 0
},
{
"block_id": "b1",
"index": 1,
"kind": "prose",
"start_char": 312,
"end_char": 625,
"word_count": 48,
"text": "It's not just about having the right tools — it's about building a culture of ownership. By leveraging PagerDuty alongside clear escalation policies, teams can seamlessly coordinate their response and foster a sense of shared accountability. This approach serves as a testament to the power of proactive planning.",
"local_gz": 0.5651,
"local_pg": 0.6791,
"local_combined": 0.6278,
"tier": "HOT",
"locked_default": false,
"tell_count": 4,
"rhythm_run_count": 1,
"surprisal_clump_count": 0
}
],
"tell_phrases": [
{
"start_char": 0,
"end_char": 29,
"matched_text": "In today's fast-paced digital",
"category": "lexical_cliche",
"label": "AI throat-clearer ('in today's fast-paced...')",
"action": "replace_or_drop",
"replacements": [
"today",
"right now",
"in modern practice",
""
]
},
{
"start_char": 312,
"end_char": 325,
"matched_text": "It's not just",
"category": "lexical_cliche",
"label": "Contrastive AI cliché ('it's not just')",
"action": "rephrase",
"replacements": [
"more than",
"beyond",
"not only"
]
},
{
"start_char": 354,
"end_char": 357,
"matched_text": " — ",
"category": "typography_tell",
"label": "Em-dash / double-hyphen punctuation tell",
"action": "replace",
"replacements": [
", ",
"; ",
" (",
". "
]
},
{
"start_char": 404,
"end_char": 414,
"matched_text": "leveraging",
"category": "lexical_cliche",
"label": "Corporate AI verb ('leverage')",
"action": "replace",
"replacements": [
"use",
"rely on",
"put to work",
"tap"
]
},
{
"start_char": 578,
"end_char": 592,
"matched_text": "a testament to",
"category": "lexical_cliche",
"label": "AI cliché ('testament to')",
"action": "replace",
"replacements": [
"proof of",
"evidence of",
"a clear sign of"
]
}
],
"rhythm_runs": [
{
"block_id": "b0",
"start_char": 0,
"end_char": 310,
"text": "In today's fast-paced digital landscape, incident response has become more critical than ever. Engineering teams are under constant pressure to keep services available while shipping new features at a relentless pace. It is worth noting that downtime now costs mid-sized companies an average of $2.4M per year.",
"sentence_word_counts": [
13,
18,
16
],
"sl_cv": 0.1312,
"reason": "low_paragraph_burstiness_cv",
"guidance": "Low paragraph sentence-length variation (CV=0.13 < 0.22, lengths=[13, 18, 16]). Mix a short declarative sentence (<= 7 words) with a longer analytical sentence (>= 24 words)."
},
{
"block_id": "b1",
"start_char": 312,
"end_char": 625,
"text": "It's not just about having the right tools — it's about building a culture of ownership. By leveraging PagerDuty alongside clear escalation policies, teams can seamlessly coordinate their response and foster a sense of shared accountability. This approach serves as a testament to the power of proactive planning.",
"sentence_word_counts": [
16,
20,
12
],
"sl_cv": 0.2041,
"reason": "low_paragraph_burstiness_cv",
"guidance": "Low paragraph sentence-length variation (CV=0.20 < 0.22, lengths=[16, 20, 12]). Mix a short declarative sentence (<= 7 words) with a longer analytical sentence (>= 24 words)."
}
],
"surprisal_clumps": [],
"annotations": {
"tell_phrases": [
{
"start_char": 0,
"end_char": 29,
"matched_text": "In today's fast-paced digital",
"category": "lexical_cliche",
"label": "AI throat-clearer ('in today's fast-paced...')",
"action": "replace_or_drop",
"replacements": [
"today",
"right now",
"in modern practice",
""
]
},
{
"start_char": 312,
"end_char": 325,
"matched_text": "It's not just",
"category": "lexical_cliche",
"label": "Contrastive AI cliché ('it's not just')",
"action": "rephrase",
"replacements": [
"more than",
"beyond",
"not only"
]
},
{
"start_char": 354,
"end_char": 357,
"matched_text": " — ",
"category": "typography_tell",
"label": "Em-dash / double-hyphen punctuation tell",
"action": "replace",
"replacements": [
", ",
"; ",
" (",
". "
]
},
{
"start_char": 404,
"end_char": 414,
"matched_text": "leveraging",
"category": "lexical_cliche",
"label": "Corporate AI verb ('leverage')",
"action": "replace",
"replacements": [
"use",
"rely on",
"put to work",
"tap"
]
},
{
"start_char": 578,
"end_char": 592,
"matched_text": "a testament to",
"category": "lexical_cliche",
"label": "AI cliché ('testament to')",
"action": "replace",
"replacements": [
"proof of",
"evidence of",
"a clear sign of"
]
}
],
"rhythm_runs": [
{
"block_id": "b0",
"start_char": 0,
"end_char": 310,
"text": "In today's fast-paced digital landscape, incident response has become more critical than ever. Engineering teams are under constant pressure to keep services available while shipping new features at a relentless pace. It is worth noting that downtime now costs mid-sized companies an average of $2.4M per year.",
"sentence_word_counts": [
13,
18,
16
],
"sl_cv": 0.1312,
"reason": "low_paragraph_burstiness_cv",
"guidance": "Low paragraph sentence-length variation (CV=0.13 < 0.22, lengths=[13, 18, 16]). Mix a short declarative sentence (<= 7 words) with a longer analytical sentence (>= 24 words)."
},
{
"block_id": "b1",
"start_char": 312,
"end_char": 625,
"text": "It's not just about having the right tools — it's about building a culture of ownership. By leveraging PagerDuty alongside clear escalation policies, teams can seamlessly coordinate their response and foster a sense of shared accountability. This approach serves as a testament to the power of proactive planning.",
"sentence_word_counts": [
16,
20,
12
],
"sl_cv": 0.2041,
"reason": "low_paragraph_burstiness_cv",
"guidance": "Low paragraph sentence-length variation (CV=0.20 < 0.22, lengths=[16, 20, 12]). Mix a short declarative sentence (<= 7 words) with a longer analytical sentence (>= 24 words)."
}
],
"surprisal_clumps": []
},
"elapsed_ms": 12005.8,
"usage": {
"used_local_words": 381859,
"quota_local_words": 10000000,
"used_verified_audits": 2,
"quota_verified_audits": 5000
}
}
POST/v1/detect
Score text, one or many.
Just the scores, without the marks. Send a batch and the results come back in the same order.
Request
- textstring
- One text. The scores come back at the top level.
- textsarray of strings
- A batch. The scores come back in
results, in order. - modedefault "local_v2"
local_v2orfaststay on DropSlop’s servers.
Each result has combined (0 to 1), band, verdict and word_count.
curl https://dropslop.ai/v1/detect \
-H "Authorization: Bearer $DROPSLOP_KEY" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{
"texts": [
"In today's fast-paced digital landscape, incident response has become more critical than ever. Engineering teams are under constant pressure to keep services available while shipping new features at a relentless pace. It is worth noting that downtime now costs mid-sized companies an average of $2.4M per year.",
"When our payments API went down on February 14, the outage lasted 47 minutes. We had alerts. We had a runbook. Nobody had looked at either since March, and the on-call engineer spent the first eleven minutes finding the right dashboard.",
"It's not just about having the right tools — it's about building a culture of ownership. By leveraging PagerDuty alongside clear escalation policies, teams can seamlessly coordinate their response and foster a sense of shared accountability. This approach serves as a testament to the power of proactive planning.",
"The fix was boring. We cut the runbook from nine pages to one, put the dashboard link in the alert itself, and made every new hire shadow a real page before taking the pager alone. Mean time to acknowledge fell from 6 minutes to 90 seconds by the end of Q3.",
"Moreover, organizations that invest in incident readiness see measurable improvements across the board. Response times decrease significantly as teams develop muscle memory. Customer trust increases steadily as reliability becomes a visible priority. Engineering morale improves noticeably as firefighting gives way to planned work.",
"Ultimately, incident response is a rich tapestry of people, process, and technology. As we delve deeper into 2025, the teams that thrive will be those that embrace continuous improvement — and our 41% reduction in repeat incidents shows what that commitment can look like."
]
}
JSON
{
"mode": "local_v2",
"count": 6,
"results": [
{
"local_gz": 0.8033,
"local_pg": 0.8518,
"local_combined": 0.83,
"combined": 0.83,
"verdict": "ai",
"band": "HOT",
"word_count": 47
},
{
"local_gz": 0.0632,
"local_pg": 0.104,
"local_combined": 0.0856,
"combined": 0.0856,
"verdict": "human",
"band": "CLEAN",
"word_count": 41
},
{
"local_gz": 0.5651,
"local_pg": 0.6791,
"local_combined": 0.6278,
"combined": 0.6278,
"verdict": "mixed",
"band": "HOT",
"word_count": 48
},
{
"local_gz": 0.1037,
"local_pg": 0.1347,
"local_combined": 0.1208,
"combined": 0.1208,
"verdict": "human",
"band": "CLEAN",
"word_count": 51
},
{
"local_gz": 0.7606,
"local_pg": 0.8172,
"local_combined": 0.7917,
"combined": 0.7917,
"verdict": "ai",
"band": "HOT",
"word_count": 43
},
{
"local_gz": 0.7743,
"local_pg": 0.7828,
"local_combined": 0.779,
"combined": 0.779,
"verdict": "ai",
"band": "HOT",
"word_count": 44
}
],
"usage": {
"used_local_words": 382464,
"quota_local_words": 10000000,
"used_verified_audits": 2,
"quota_verified_audits": 5000
}
}
POST/v1/humanize/jobs
Rewrite with Fact-Guard.
Rewrites only the paragraphs that read machine-made. A rewrite takes a while, so you start a job and poll it.
Request
- textstring, required
- The draft, in Markdown or plain text.
- pinned_termsarray of strings
- Names and figures that must come through unchanged.
- heat_threshold0 to 1, default 0.15
- Only paragraphs scoring above it are rewritten.
- locked_block_idsarray of strings
- Paragraphs to leave alone, by id:
b0,b1… - loradefault "blend"
- The rewriting model:
blend,v2_dpo,v2_sftorr16. - voice_profileobject, optional
- Rewrite toward a saved voice.
voice_namenames it. - doc_idstring, optional
- Saves the rewrite as a new version of that document.
version_labelnames it.
Polling
- GET /v1/humanize/jobs/{job_id}
statusisrunning, thencompletedwith the whole result, orfailedwith anerror.
Poll every 2 to 5 seconds. A short draft finishes in under a minute.
# 1. Start the job. It answers at once with a job_id.
JOB=$(curl -s https://dropslop.ai/v1/humanize/jobs \
-H "Authorization: Bearer $DROPSLOP_KEY" \
-H "Content-Type: application/json" \
-d @- <<'JSON' | jq -r .job_id
{
"text": "In today's fast-paced world, customer onboarding has become more important than ever. Our team at Brightwell rolled out a new welcome flow on March 3, 2026, and it is worth noting that activation rose from 31% to 44% within six weeks. The project cost $18,000 and took three engineers. Ultimately, it serves as a testament to the power of listening to users, and it underscores the pivotal role that small, thoughtful changes play in driving growth."
}
JSON
)
# 2. Poll until it is no longer running.
while [ "$(curl -s https://dropslop.ai/v1/humanize/jobs/$JOB | jq -r .status)" = "running" ]; do
sleep 3
done
# 3. Read the finished job.
curl -s https://dropslop.ai/v1/humanize/jobs/$JOB
{
"ok": true,
"job_id": "hj_…",
"status": "running",
"poll_url": "/v1/humanize/jobs/hj_…"
}
{
"job_id": "hj_e702cf72a0e7",
"status": "completed",
"text": "But what we learned? Listening to our users and making a few tweaks goes a long way. Our team at Brightwell rolled out a new welcome flow on March 3, 2026, and activation rose from 31% to 44% within six weeks. The project cost $18,000 and took three engineers.",
"lora": "blend",
"heat_threshold": 0.15,
"before_scores": {
"local_gz": 0.6567,
"local_pg": 0.7914,
"local_combined": 0.7308,
"combined": 0.7308,
"verdict": "ai",
"band": "HOT"
},
"after_scores": {
"local_gz": 0.1398,
"local_pg": 0.2683,
"local_combined": 0.2105,
"combined": 0.2105,
"verdict": "human",
"band": "WARM",
"para_hashes": {
"175zhq978": 0.2105
},
"para_scores": [
0.2105
]
},
"summary": {
"blocks_total": 1,
"blocks_rewritten": 1,
"blocks_locked": 0,
"before_combined": 0.7308,
"after_combined": 0.2105
},
"blocks": [
{
"block_id": "b0",
"kind": "prose",
"tier_before": "HOT",
"action": "SURGICAL_REWRITE",
"before_text": "In today's fast-paced world, customer onboarding has become more important than ever. Our team at Brightwell rolled out a new welcome flow on March 3, 2026, and it is worth noting that activation rose from 31% to 44% within six weeks. The project cost $18,000 and took three engineers. Ultimately, it serves as a testament to the power of listening to users, and it underscores the pivotal role that small, thoughtful changes play in driving growth.",
"after_text": "But what we learned? Listening to our users and making a few tweaks goes a long way. Our team at Brightwell rolled out a new welcome flow on March 3, 2026, and activation rose from 31% to 44% within six weeks. The project cost $18,000 and took three engineers.",
"before_combined": 0.7308,
"after_combined": 0.2105,
"prev_tail": "",
"next_head": "",
"restored_terms": [
"Brightwell",
"$18,000"
],
"elapsed_s": 22.64,
"after_gz": 0.1398,
"after_pg": 0.2683,
"tier_after": "WARM"
}
],
"fact_guard": {
"status": "PASS",
"summary_badge": "5/5 facts preserved · 0 dropped · 0 fabricated",
"fact_recall": 1.0,
"total_source_facts": 5,
"preserved": [
{
"kind": "proper_noun",
"source_text": "Brightwell",
"matched_text": "Brightwell",
"start_char": 98,
"end_char": 108
},
{
"kind": "date",
"source_text": "March 3, 2026",
"matched_text": "March 3, 2026",
"start_char": 142,
"end_char": 155
},
{
"kind": "percentage",
"source_text": "31%",
"matched_text": "31%",
"start_char": 206,
"end_char": 209
},
{
"kind": "percentage",
"source_text": "44%",
"matched_text": "44%",
"start_char": 213,
"end_char": 216
},
{
"kind": "currency",
"source_text": "$18,000",
"matched_text": "$18,000",
"start_char": 252,
"end_char": 259
}
],
"altered": [],
"dropped": [],
"fabricated": [],
"ui_quick_restore": []
},
"fact_guard_receipt": {
"status": "PASS",
"summary_badge": "5/5 facts preserved · 0 dropped · 0 fabricated",
"fact_recall": 1.0,
"total_source_facts": 5,
"preserved": [
{
"kind": "proper_noun",
"source_text": "Brightwell",
"matched_text": "Brightwell",
"start_char": 98,
"end_char": 108
},
{
"kind": "date",
"source_text": "March 3, 2026",
"matched_text": "March 3, 2026",
"start_char": 142,
"end_char": 155
},
{
"kind": "percentage",
"source_text": "31%",
"matched_text": "31%",
"start_char": 206,
"end_char": 209
},
{
"kind": "percentage",
"source_text": "44%",
"matched_text": "44%",
"start_char": 213,
"end_char": 216
},
{
"kind": "currency",
"source_text": "$18,000",
"matched_text": "$18,000",
"start_char": 252,
"end_char": 259
}
],
"altered": [],
"dropped": [],
"fabricated": [],
"ui_quick_restore": []
},
"timing": {
"total_elapsed_s": 26.59,
"gpu_elapsed_s": 22.64,
"tok_per_sec": 23.8,
"rewritten_blocks": 1,
"locked_blocks": 0
},
"humanized_text": "But what we learned? Listening to our users and making a few tweaks goes a long way. Our team at Brightwell rolled out a new welcome flow on March 3, 2026, and activation rose from 31% to 44% within six weeks. The project cost $18,000 and took three engineers.",
"after_xray": {
"scores": {
"local_gz": 0.1398,
"local_pg": 0.2683,
"local_combined": 0.2105,
"combined": 0.2105,
"verdict": "human",
"band": "WARM"
},
"summary": {
"total_words": 49,
"total_blocks": 1,
"clean_blocks": 0,
"warm_blocks": 1,
"hot_blocks": 0,
"locked_structural_blocks": 0,
"tell_phrase_count": 0,
"rhythm_run_count": 0,
"surprisal_clump_count": 0
},
"blocks": [
{
"block_id": "b0",
"index": 0,
"kind": "prose",
"start_char": 0,
"end_char": 260,
"word_count": 49,
"text": "But what we learned? Listening to our users and making a few tweaks goes a long way. Our team at Brightwell rolled out a new welcome flow on March 3, 2026, and activation rose from 31% to 44% within six weeks. The project cost $18,000 and took three engineers.",
"local_gz": 0.1398,
"local_pg": 0.2683,
"local_combined": 0.2105,
"tier": "WARM",
"locked_default": false,
"tell_count": 0,
"rhythm_run_count": 0,
"surprisal_clump_count": 0
}
],
"tell_phrases": [],
"rhythm_runs": [],
"surprisal_clumps": [],
"annotations": {
"tell_phrases": [],
"rhythm_runs": [],
"surprisal_clumps": []
}
},
"usage": {
"used_local_words": 455682,
"quota_local_words": 10000000,
"used_verified_audits": 2,
"quota_verified_audits": 5000
}
}
POST/v1/site-audit
Audit a whole site.
Give it a domain, a sitemap or a list of pages. It crawls them, scores every page and ranks the ones that read machine-made.
Request
- input_modedefault "domain"
domain,sitemaporurls.- targetstring
- The domain or the sitemap’s URL.
urlis accepted as another name for it. - urlsstring or array
- The pages to read, for
urlsmode. - max_pages1 to 1,000, default 100
- Stops after this many pages.
- include_prefixesstring or array
- Only paths that start with these.
exclude_prefixesskips them. - min_words10 to 5,000, default 80
- Shorter pages are skipped.
- backgrounddefault true
- Answers at once with a
job_id(also sent asaudit_id, the same value).falsewaits for the whole audit.
Polling and export
- GET /v1/site-audit/{job_id}
- The job, with
status,progress_pctand the report oncecompleted. - GET …/{job_id}/export.csv
- One row per page, as CSV.
# 1. Start the audit. It answers at once with a job_id.
AUDIT=$(curl -s https://dropslop.ai/v1/site-audit \
-H "Authorization: Bearer $DROPSLOP_KEY" \
-H "Content-Type: application/json" \
-d '{"input_mode": "domain", "target": "https://paulgraham.com", "max_pages": 10}' | jq -r .job_id)
# 2. Poll until it is no longer running.
while [ "$(curl -s https://dropslop.ai/v1/site-audit/$AUDIT | jq -r .status)" = "running" ]; do
sleep 5
done
# 3. Read the report, or take it as CSV.
curl -s https://dropslop.ai/v1/site-audit/$AUDIT
curl -s -o audit.csv https://dropslop.ai/v1/site-audit/$AUDIT/export.csv
{
"job_id": "audit_20261106_085538_1ea788b7",
"input_mode": "domain",
"target": "https://paulgraham.com",
"domain": "paulgraham.com",
"max_pages": 10,
"min_words": 80,
"status": "completed",
"phase": "completed",
"progress_pct": 100,
"pages_discovered": 19,
"pages_crawled": 10,
"pages_scored": 8,
"domain_slop_score": 12.8,
"domain_verdict": "CLEAN",
"domain_summary": {
"domain_slop_score": 12.8,
"word_weighted_slop_score": 11.1,
"domain_p_ai": 0.1275,
"domain_verdict": "CLEAN",
"domain_verdict_detail": "CLEAN — Predominantly Human Editorial",
"total_words_audited": 28412,
"pages_scored": 8,
"pages_skipped_short": 2,
"distribution": {
"CLEAN": {
"count": 6,
"pct": 75.0
},
"WARM": {
"count": 2,
"pct": 25.0
},
"HOT": {
"count": 0,
"pct": 0.0
}
}
},
"created_at": "2026-11-06T08:55:38Z",
"completed_at": "2026-11-06T08:56:14Z",
"top_10_worst_pages": […],
"pages": […],
"leaderboards": {…},
"top_ai_tells": {…},
…
}
MCPhttps://dropslop.ai/mcp
Use it from Claude and Cursor.
The same tools as an MCP server over HTTP. It takes the same key, and its calls count against the same allowance.
Six tools
dropslop_xrayThe X-Ray: paragraph scores, marked phrases, sentence rhythm.dropslop_detectScores for one text or a batch.dropslop_surgical_humanizeRewrites the paragraphs that read machine-made, with Fact-Guard.dropslop_reroll_paragraphRewrites one paragraph, given the sentences around it.dropslop_site_auditAudits a domain, sitemap or list of pages. Uses a verified audit.dropslop_certifyIssues a certificate with a public check page. Uses a verified audit.
Before each call the server checks your remaining words. When there aren’t enough, the call returns an error instead of running.
claude mcp add --transport http dropslop https://dropslop.ai/mcp \
--header "Authorization: Bearer $DROPSLOP_KEY"
{
"mcpServers": {
"dropslop": {
"url": "https://dropslop.ai/mcp",
"headers": {
"Authorization": "Bearer hk_live_YOUR_KEY"
}
}
}
}
{
"mcpServers": {
"dropslop": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://dropslop.ai/mcp", "--header", "Authorization:${DROPSLOP_AUTH}"],
"env": {
"DROPSLOP_AUTH": "Bearer hk_live_YOUR_KEY"
}
}
}
}
curl https://dropslop.ai/mcp \
-H "Authorization: Bearer $DROPSLOP_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
Limits and errors.
Each key may make a set number of requests in any 60 seconds. Errors come back as JSON with a plain message.
Requests a minute
| Key | Requests in any 60 s |
|---|---|
| No key | 30 X-Ray calls per connection |
| Pro | 120 |
| Growth | 360 |
| Agency | 1,000 |
| With a top-up pack | At least 180 |
Words and verified audits a month are on Pricing.
Error codes
| 429 | Too many requests. Wait a little and send it again. The window is the last 60 seconds. |
|---|---|
| 402 | Allowance used up. From MCP tool calls, when there aren’t enough words or audits left. |
| 401 | Key not valid. It is mistyped or revoked. |
| 404 | Not found. No job or audit with that id. |
| 422 | Bad request body. A field is missing or out of range, such as max_pages over 1,000. |
{
"detail": {
"error": "Rate limit exceeded (120/120 requests/min). Upgrade tier for higher RPM.",
"remaining_words": null,
"remaining_audits": null,
"topup_endpoint": null
}
}
{
"detail": "Rate limit exceeded for anonymous X-Ray scans (max 30 per minute). Wait a moment and try again."
}
{
"jsonrpc": "2.0",
"id": 7,
"result": {
"isError": true,
"content": [{
"type": "text",
"text": "{ \"ok\": false, \"status_code\": 402, \"error\": \"Word quota exhausted (…/… words used). Top up or upgrade your Stripe plan via POST /v1/billing/checkout.\", \"remaining_words\": …, \"topup_endpoint\": \"https://dropslop.ai/v1/billing/checkout\", … }"
}]
}
}