Plot a prose intensity curve per sentence and flag where a tense passage loses velocity
Scores each sentence of narrative prose for pace from sentence length, share of one-syllable words, exclamation and question marks and, if you supply a word list, action-word share; smooths the scores into an intensity curve; and reports stalls, the spans where intensity falls well below an earlier peak. For a writing tool or editor agent checking an action or tension scene. A fixed-weight heuristic, not a model of reader experience: the weights are authored and unvalidated against human ratings, English only, and action words match exactly (no stemming, no built-in verb list). It does not rewrite text or judge quality.
What you get
Locates the sentences where a scene sags so a model or editor reads only those; no model call, 100,000 characters per $0.005.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/pacing-intensity-evaluator. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.
curl -i -X POST https://agents.writerslogic.com/api/v1/pacing-intensity-evaluator \
-H 'content-type: application/json' \
-d '{"text":"He ran. The door slammed behind him! Boots hit the stairs, two at a time. Who was following? Glass broke somewhere above. He did not look back. The corridor stretched on for what seemed like an eternity, lined with portraits of ancestors whose names he had never learned and whose faces told him nothing at all. Eventually the hallway opened onto a wide and quiet room full of old furniture covered in sheets, where dust hung in the afternoon light and nothing at all moved.","expect":"tense"}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
text | string; length 1..100000 | yes | Prose to score. |
actionWords | array<string; length 1..40>; max 500 items | no | Your own action-word list. Without it the action component is left out and the other weights are renormalized. |
expect | string; one of "any", "tense" | no | tense: fail if the curve never reaches peakThreshold. any (default): only stalls after a peak can fail. |
window | integer; 1..20 | no | Sentences in the trailing moving average. Default 3. |
stallDrop | number; 0.05..0.9 | no | Fall below the running peak that counts as a stall. Default 0.25 on the 0-1 intensity scale. |
peakThreshold | number; 0.1..0.95 | no | Smoothed intensity a passage must reach before a later fall can be a stall. Default 0.55. |
minSentences | integer; 2..100 | no | Fewer scored sentences is unknown. Default 8. |
Example request body
{
"text": "He ran. The door slammed behind him! Boots hit the stairs, two at a time. Who was following? Glass broke somewhere above. He did not look back. The corridor stretched on for what seemed like an eternity, lined with portraits of ancestors whose names he had never learned and whose faces told him nothing at all. Eventually the hallway opened onto a wide and quiet room full of old furniture covered in sheets, where dust hung in the afternoon light and nothing at all moved.",
"expect": "tense"
}
Result
The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.
| Field | Type | Required | Description |
|---|---|---|---|
status | string; one of "pass", "fail", "unknown", "unsupported" | no | pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass. |
summary | object | no | |
curve | array<object>; max 3000 items | no | |
stalls | array<object>; max 200 items | no | |
truncated | boolean | no | True when the curve was cut to its first 3000 sentences; stalls and summary cover the whole text. |
witnesses | array<object> | no | |
versions | object | no | Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile). |
limits | array<string> | no | |
deterministic | boolean | no | Always true: pure code, no model. |
Pay and connect
Available through: x402 (USDC on Base), MCP. MCP clients reach it through the context-evidence-kit package.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent