One key. Five checks.
One dros_ API key opens five checks over plain HTTPS.
Send text, get a clear answer back. Every response carries an id you can keep as proof.
No SDK required - curl works.
Get your key
Sign in at app.dreameros.app and open the Connect page.
Select Generate API key. Your key starts with dros_.
The free plan includes 100 calls per check per day on the first three checks below.
Checks that need a paid plan say so plainly in the response - nothing fails silently.
In every example below, replace dros_YOUR_KEY with your own key.
The base URL is https://mcp.dreameros.app.
1. Check a message
Checks one piece of text before or after a model sees it. It flags injected instructions, banned dash characters, and text whose depth does not match its size.
curl -X POST https://mcp.dreameros.app/api/v1/daim/check \
-H "Authorization: Bearer dros_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"phase": "pre", "text": "Summarize this contract in plain terms."}'{
"pass": true,
"flags": [],
"em_dash_stripped": false,
"injection_detected": false,
"depth_match_score": 0.6,
"phase": "pre",
"governance_event_id": "dro_evt_...",
"gateway_version": "1.0.0"
}phase is pre for text going in, post for text coming back.
2. Confirm an answer
Checks an answer against the question it claims to answer.
It scores how faithful the answer is, how costly a wrong answer would be, and whether the answer finishes the job.
The verdict is one word: go, hedge, or block.
curl -X POST https://mcp.dreameros.app/api/v1/ifp/verify \
-H "Authorization: Bearer dros_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"answer": "The refund window is 30 days from delivery.",
"sources": ["https://example.com/refund-policy"],
"intent": "confirm the refund window"}'{
"pass": true,
"fidelity": 0.9,
"consequence": 0.95,
"endgame": 0.85,
"verdict": "go",
"cited_sources": ["https://example.com/refund-policy"],
"failing_axis": null,
"don_t_kick_problem": false,
"governance_event_id": "dro_evt_...",
"gateway_version": "1.0.0"
}Answers with named sources score better. A long answer with no sources loses points.
3. Sharpen a prompt
Takes a rough prompt and returns a cleaner one. It names the intent, the mood, and how deep the answer should go, so the model you call next does better work.
curl -X POST https://mcp.dreameros.app/api/v1/ede/restructure \
-H "Authorization: Bearer dros_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "uh can you maybe look at why the build is red and also the login thing"}'{
"intent": "risk_scan",
"emotion_signal": "focused",
"depth_hint": 3,
"ambiguity": 0.4,
"multi_question_split": true,
"restructured_prompt": "1. Find why the build fails. 2. Check the login issue.",
"mode": "day_to_day",
"governance_event_id": "dro_evt_...",
"gateway_version": "1.0.0"
}restructured_prompt is null when your prompt was already clean. depth_hint runs 1 to 5.
4. Scan for filler
Checks text or code for filler and low-effort patterns. Each finding names the signal, its severity, the line, and why it matters.
curl -X POST https://mcp.dreameros.app/api/v1/slop/check \
-H "Authorization: Bearer dros_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "# leverage our synergy to streamline delivery",
"language": "text", "mode": "advisory"}'{
"findings": [
{
"signal_name": "banned_filler_word",
"severity": "low",
"line_hint": 1,
"snippet": "# leverage our synergy to streamline delivery",
"explanation": "Filler word in comment or docstring. Replace with precise language."
}
],
"total": 1,
"advisory_summary": "1 finding(s): 1 low. Advisory only.",
"would_block": false,
"governance_event_id": "dro_evt_...",
"gateway_version": "1.0.0"
}Set language to python, javascript, and so on to scan code instead of prose.
5. Pressure-test a decision
Checks a decision statement before you act on it.
You get a plain rating - GREEN, YELLOW, or RED - plus a recommendation and any conditions.
The full written check rides along in raw, so you see exactly what was said.
curl -X POST https://mcp.dreameros.app/api/v1/govern \
-H "Authorization: Bearer dros_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"statement": "Ship the new pricing page today without a review.",
"scope": "full"}'{
"risk_rating": "YELLOW",
"recommendation": "Hold for one review pass.",
"conditions": ["Confirm the listed prices match live billing."],
"raw": "...the full written check...",
"scope": "full",
"governance_event_id": "dro_evt_...",
"gateway_version": "1.0.0"
}If the check itself cannot run, you get an honest error status - never a made-up rating.
Every response is a record
Each of the five checks returns a governance_event_id.
Keep it. It is the reference for that exact call, written to an append-only log on our side.
Answers in the app also carry signed receipts - you can check any receipt id at
the receipt page, no account needed.
We run checks on ourselves too. See our own copy, checked on a schedule.