Find sources, see what an AI agent pays to read each, and check references for retractions.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Score how relevant each candidate is to the topic, from its free teaser alone — a 0..1 relevance plus a one-line rationale. Pass the candidates you got from naulon_discover (or a curated subset), and pass them back WHOLE — `matchedInBody` / `matchedSemantic` tell the scorer WHY the search returned each one, and dropping them makes a body-matched source with a terse teaser look identical to a near-miss with a keyword-ish one. FREE: it reads the teaser and those flags, never paid content, and it fetches and pays for nothing. Use it to decide what is worth quoting.
The research topic to score relevance against.
Candidates to appraise — pass naulon_discover's rows through unmodified.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http naulon https://gate.naulon.app/_naulon/mcp/public
Score how relevant each candidate is to the topic, from its free teaser alone — a 0..1 relevance plus a one-line rationale. Pass the candidates you got from naulon_discover (or a curated subset), and pass them back WHOLE — `matchedInBody` / `matchedSemantic` tell the scorer WHY the search returned each one, and dropping them makes a body-matched source with a terse teaser look identical to a near-miss with a keyword-ish one. FREE: it reads the teaser and those flags, never paid content, and it fetches and pays for nothing. Use it to decide what is worth quoting.
| Argument | Type | Description |
|---|---|---|
| topic* | string | The research topic to score relevance against. |
| candidates* | array | Candidates to appraise — pass naulon_discover's rows through unmodified. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic",
"candidates"
],
"properties": {
"topic": {
"type": "string",
"minLength": 1,
"description": "The research topic to score relevance against."
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"title",
"summary"
],
"properties": {
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"summary": {
"type": "string",
"description": "The free teaser to judge — title + summary, no paid content."
},
"matchedInBody": {
"type": "boolean",
"description": "From naulon_discover: the topic's words are inside this source's full text."
},
"matchedSemantic": {
"type": "boolean",
"description": "From naulon_discover: near the topic in meaning only — its words are absent."
}
}
},
"minItems": 1,
"description": "Candidates to appraise — pass naulon_discover's rows through unmodified."
}
}
}FREE. For up to 25 references (a DOI, PMID, PMCID, arXiv id, or the reference as written), say whether each work exists and whether it was retracted, withdrawn, corrected or put under an expression of concern. Use it before you cite. Facts from Crossref and Retraction Watch; no judgement of the research. For a retracted or withdrawn citation, up to three reviews and trials that cite it are suggested; for an unfound one, up to three papers on its subject; each with its licence.
| Argument | Type | Description |
|---|---|---|
| references* | array | At most 25. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"references"
],
"properties": {
"references": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"minItems": 1,
"description": "At most 25."
}
}
}Find candidate essays for a topic from the configured publisher (a live RSS feed or a catalog endpoint — set RSS_URL, PUBLISHER_URL, or CATALOG_URL, or use the hosted endpoint). Returns FREE public teasers only — slug, title, and summary — with no content and no payment. Call this first to see what is available before appraising or quoting. If no source is configured it refuses with setup guidance rather than inventing sources. A candidate may carry WHY it matched: `matchedInBody` means your terms are inside the paid text but NOT in the title or teaser (strong — the teaser just does not show it), `matchedSemantic` means only that it is near your query in meaning and your terms are absent (weak: judge the teaser, and set aside one that is off-topic). NEITHER flag set means one of two opposite things, so read it against the rest of the response: if any OTHER candidate here carries a flag, this source searches, and no flag is the STRONGEST result of all — your terms matched the title or teaser, which is why no body-only or semantic explanation was needed. If NO candidate in the response carries a flag, the source does not search (a plain RSS feed), and the absence says nothing at all — judge every candidate on its teaser. Discovery returns the best available matches, never a promise that any of them answers your question.
| Argument | Type | Description |
|---|---|---|
| topic* | string | The research topic to find candidate sources for. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string",
"minLength": 1,
"description": "The research topic to find candidate sources for."
}
}
}Probe the real x402 toll for a source WITHOUT paying — the free 402 price check. Returns the author price, the buyer's true total (when the publisher adds extra settlement legs such as an operator fee, the total is higher than the author price), and the settlement terms. gated:false means one thing only — the origin answered 2xx, so it is a genuinely free read you may just fetch. Anything else returns refused:true with the reason in note: a refusal to reach the url (off-gate identity, or operator policy such as a kill-switch or deny-list), a 404, an unreachable origin, or a malformed 402. A refused url is NEITHER payable nor free — do not fetch it and do not report it as free; retry or fix the url.
| Argument | Type | Description |
|---|---|---|
| url | string | Canonical URL from naulon_discover (the source's real link). When present it is probed VERBATIM; absent, the slug is reconstructed to the /essays/<slug> template. |
| slug* | string | Source slug from naulon_discover. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"url": {
"type": "string",
"description": "Canonical URL from naulon_discover (the source's real link). When present it is probed VERBATIM; absent, the slug is reconstructed to the /essays/<slug> template."
},
"slug": {
"type": "string",
"minLength": 1,
"description": "Source slug from naulon_discover."
}
}
}Preview a papers run for a question, free. Lists the CC0, CC BY, CC BY-SA or public-domain works that could answer it and the price of each mode (answer, retrieve). This tool never pays and never runs the answer. Prices only: nothing on this server buys. How buying works: https://naulon.app/docs/for-buyers
| Argument | Type | Description |
|---|---|---|
| mode | string | Echoed back. Both modes are priced either way. |
| question* | string | The question (at most 4000 characters). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"mode": {
"enum": [
"answer",
"retrieve"
],
"type": "string",
"description": "Echoed back. Both modes are priced either way."
},
"question": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The question (at most 4000 characters)."
}
}
}FREE. Search the naulon catalogue for a question and get every matching source priced, with its public summary, `url`, and a verdict on whether it answers the question and what reading it would add. Prices only: nothing on this server buys. How buying works: https://naulon.app/docs/for-buyers
| Argument | Type | Description |
|---|---|---|
| papers | boolean | Also list open research papers on the question. Reading one adds a single answer fee that pays for search, reading and checking, never for the paper. |
| question* | string | The question (at most 4000 characters). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"papers": {
"type": "boolean",
"description": "Also list open research papers on the question. Reading one adds a single answer fee that pays for search, reading and checking, never for the paper."
},
"question": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The question (at most 4000 characters)."
}
}
}The older name for naulon_search: same tool, same result. New callers use naulon_search. FREE. Search the naulon catalogue for a question and get every matching source priced, with its public summary, `url`, and a verdict on whether it answers the question and what reading it would add. Prices only: nothing on this server buys. How buying works: https://naulon.app/docs/for-buyers
| Argument | Type | Description |
|---|---|---|
| papers | boolean | Also list open research papers on the question. Reading one adds a single answer fee that pays for search, reading and checking, never for the paper. |
| question* | string | The question (at most 4000 characters). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"papers": {
"type": "boolean",
"description": "Also list open research papers on the question. Reading one adds a single answer fee that pays for search, reading and checking, never for the paper."
},
"question": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The question (at most 4000 characters)."
}
}
}FREE. Find which naulon publisher pages a passage was copied from, word for word. Returns each page's title, url, and whether it holds most of the passage or part of it, plus how many Citation Licenses the page has sold where its publisher shows that. It detects verbatim reuse only, not paraphrase or training. Send 40 words to 5000 characters.
| Argument | Type | Description |
|---|---|---|
| text* | string | The passage, 40 words to 5000 characters. Matched, never stored. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The passage, 40 words to 5000 characters. Matched, never stored."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.