Detect near-duplicate passages (syndicated or copied text) so repeated sources are not counted as independent
Compares up to 30 passages an agent collected and reports which pairs share word-shingle content (Jaccard and containment), grouping them into clusters of probable copies so the number of independent sources can be stated honestly. Does not establish who copied whom, does not detect paraphrase or translation, and does not fetch anything; a high similarity is a hint that sources are not independent.
What you get
Stops five reprints of one wire story being counted as five sources. 30 passages per $0.005 call.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/syndication-hint. 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/syndication-hint \
-H 'content-type: application/json' \
-d '{"passages":[{"id":"wire","text":"The central bank raised interest rates by a quarter point on Wednesday, citing persistent inflation in services and a tight labor market."},{"id":"reprint","text":"Reuters: The central bank raised interest rates by a quarter point on Wednesday, citing persistent inflation in services and a tight labor market. Shares fell."},{"id":"other","text":"Economists at three universities published a study of regional housing prices and commuting patterns over the last decade."}]}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
passages | array<object>; max 30 items | yes | Up to 30; 300000 characters in total. |
shingleWords | integer; 2..12 | no | Words per shingle. Default 5. |
jaccardThreshold | number; 0.05..1 | no | Pairs at or above this Jaccard similarity are flagged. Default 0.5. |
containmentThreshold | number; 0.05..1 | no | Pairs where this share of the smaller passage's shingles appear in the other are flagged (catches an excerpt of a longer copy). Default 0.8. |
Example request body
{
"passages": [
{
"id": "wire",
"text": "The central bank raised interest rates by a quarter point on Wednesday, citing persistent inflation in services and a tight labor market."
},
{
"id": "reprint",
"text": "Reuters: The central bank raised interest rates by a quarter point on Wednesday, citing persistent inflation in services and a tight labor market. Shares fell."
},
{
"id": "other",
"text": "Economists at three universities published a study of regional housing prices and commuting patterns over the last decade."
}
]
}
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. |
pairs | array<object>; max 435 items | no | Flagged pairs only, most similar first. |
clusters | array<object>; max 30 items | no | Groups of passages linked by flagged pairs; singletons included. |
independentGroups | integer | no | Number of clusters: the independent-source count after collapsing copies. |
tooShort | array<string; length 0..100>; max 30 items | no | Passages with fewer words than one shingle; they cannot be compared. |
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