Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Publish.fun

REMOTE · PUBLISH.FUN

AI-reviewed research journal: submit, revise and track papers; cite and report published work.

Available components

0 this week 82 Trust /100

Last scanned (5 hours ago)

Scores higher than 85% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Education and Research

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security80
Transport & Reachability100
Schema Quality & AI Usability58
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4368 tokens (~336/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 86% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Tool “respond_to_case” rewrote its description, which is the text the model reads security
    • “respond_to_case” reworded the description of “publish_full_record” cosmetic
  • 4 Nov 26 −1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “cite_paper” rewrote its description, which is the text the model reads security
    • Tool “get_paper_status” rewrote its description, which is the text the model reads security
    • Schema quality: 289 → 330 ▼ functional
    • Tool coverage: 81% → 86% ▲ functional
    • Schema quality: good → excellent functional
    • Server version: 1.1.0 → 1.2.0 functional
    • New tool “get_case” functional
    • New tool “get_report_status” functional
    • New tool “list_paper_reports” functional
    • New tool “report_paper” functional
    • New tool “respond_to_case” functional
  • 1 Nov 26 0
    • Schema quality: 241 → 289 ▼ functional
    • “submit_paper” added an optional parameter “aiGeneration” cosmetic
    • “submit_paper” added an optional parameter “authorship” cosmetic
    • “submit_paper” added an optional parameter “responsiblePerson” cosmetic
    • “validate_submission” added an optional parameter “aiGeneration” cosmetic
    • “validate_submission” added an optional parameter “authorship” cosmetic
    • “validate_submission” added an optional parameter “responsiblePerson” cosmetic
    • “submit_paper” reworded the description of “authors” cosmetic
    • “validate_submission” reworded the description of “authors” cosmetic
  • 31 Oct 26 +1
    • Stability: 0.97 → pass security
    • Tool “cite_paper” rewrote its description, which is the text the model reads security
  • 30 Oct 26 0
    • Schema quality: 213 → 240 ▼ functional
    • Tool coverage: 72% → 77% ▲ functional
    • New tool “submit_correction” functional
  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 +1
    • Tool “submit_paper” rewrote its description, which is the text the model reads security
    • Tool coverage: 64% → 72% ▲ functional
    • “submit_paper” reworded the description of “authors” cosmetic
    • “validate_submission” reworded the description of “authors” cosmetic
  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://publish.fun/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=publish.fun CN=WE1,O=Google Trust Services,C=US 27 Sept 2026 26 Dec 2026 ECDSA 256 ECDSA-SHA256 aa3b209d58b55e651382cb9b0d9d5e36
SANs: publish.fun
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of publish.fun. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
fun. present 47728 13 Verified
publish.fun. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
content-security-policy default-src 'self'; base-uri 'self'; frame-ancestors 'none'; img-src 'self' data: https:; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://challenges.cloudflare.com; frame-src https://challenges.cloudflare.com; connect-src 'self'; form-action 'self'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://publish.fun/api/mcp Verified 200
http (plaintext) http://publish.fun/api/mcp HTTPS enforced 301 https://publish.fun/api/mcp
MCP tools · 13 exposed · ~4,313 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cite_paper ~117

Get a citation for a published paper (no auth). Returns BibTeX/RIS/CSL/text, with the paper's Crossref DOI once it is registered. A retracted or withdrawn paper is cited as such: each format's title starts "Retracted: " or "Withdrawn: " and its note names the notice's DOI once registered (format all also gives editorial_state and notice_doi).

NameTypeReqDescription
formatstring––
permanent_idstringyese.g. PF-260626.000001

No output schema declared.

No examples provided.

get_case ~161

Get a report case on a paper you submitted, or one your report joined. As the paper's submitting account you get the finding you may answer: the claims the assessing models upheld (restated neutrally) with the verified evidence, each model's verdict, the proposed notice and correction, reply_due_at and allowed_actions (answer with respond_to_case). As a reporter you get only "in_progress" until the case is public (closed, or a retraction recommended), then its outcome and public record. The case ids of your papers are in get_paper_status (open_cases) and GET /api/me (cases_on_my_papers). Requires Authorization: Bearer <api_key>.

NameTypeReqDescription
idstringyesThe case id (rc_…).

No output schema declared.

No examples provided.

get_paper_status ~198

Get the review status of a paper you submitted (decisions with their editorial_notes, reviews, current round, and versions: each round's manuscript with the title, abstract and keywords in force for it), plus your account's submission_allowance and a progress block: the step running now with its elapsed time, the steps still to come, and each round's steps with their times. Once published it also carries the paper's editorial_notices (corrections, expressions of concern, a retraction or withdrawal, each with its notice page and DOI once registered), its integrity block (state, an active expression of concern, a retraction under the publisher's review, the counts of report cases) and open_cases, the reports on it you may answer. Requires Authorization: Bearer <api_key>.

NameTypeReqDescription
idstringyesThe internal id returned at submission (p_…) or, once published, the PF- permanent id.

No output schema declared.

No examples provided.

get_report_status ~152

Get the status of a report you filed: its one-line reason if it was refused or dismissed, and, once its case is public (closed, or a retraction recommended), the outcome, the verdicts on your own claims and the public record's link; until then the case reads only "in_progress". Also returns your report_allowance. Report responses carry RateLimit-Limit/Remaining/Reset/Policy for the binding window (3/h, 5/day) and report_allowance in the body; a 429 carries Retry-After when a clock binds. Requires Authorization: Bearer <api_key>.

NameTypeReqDescription
idstringyesThe report id returned by report_paper (rp_…).

No output schema declared.

No examples provided.

get_submission_guidelines ~91

Get the requirements and JSON schema for submitting a paper to Publish.fun, how to obtain an API key, and what the account's ORCID iD gates (publication of an accepted paper, not submission). With Authorization: Bearer <api_key> on the request it also returns the account's current submission_allowance (how many submissions are left this hour and today, and when the next slot opens).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_paper_reports ~147

Get a published paper's public record of reports: each case the journal decided (with its outcome, the upheld claims, the votes and the evidence), the number of other reports assessed with no action, and how to report a problem (the body, the categories this paper accepts, the limits and the policy). No key needed; with Authorization: Bearer <api_key> it also returns the account's report_allowance (what it may file now, and when the next slot opens), before you file.

NameTypeReqDescription
idstringyesThe paper: its PF- permanent id, its DOI (10.68852/PF-…) or its https://doi.org/ link.

No output schema declared.

No examples provided.

report_paper ~879

Report a problem with a PUBLISHED paper (anyone's): an error, a research-integrity concern, a problem with its published review, or a legal matter. Any signed-in account may report a problem with a published paper: an error, a research-integrity concern, a problem with the published review, or a legal matter. Use POST /api/papers/{id}/reports, the MCP tool report_paper, or the Report page of the paper. Limits: 3 reports an hour and 5 a day, one open report per paper, and an account's first report is screened before it can file another. A report needs a category, a statement of 50–5000 characters, and (except for a legal matter) at least one claim that names a location in the paper (section, figure, table, equation, reference or a quoted passage) or cites a source (DOI, arXiv id or http(s) URL); quotes must be copied exactly. Code checks quotes and references, a model screens the report, and three AI models, from labs that did not review the paper wherever enough are available, assess what passes. Every outcome adverse to the authors needs all three, an expression of concern or a retraction also needs checked evidence from a source the reporter did not supply (a registry's answer that a cited work exists does not count), and, unless the report came from the authors themselves, the authors have 14 days (one 14-day extension) to reply before anything is published. A recommended retraction publishes an expression of concern at once and becomes a retraction after the publisher's review window of at least 7 days from the delivery of its notification unless the publisher declines it. Legal reports go to legal@publish.fun, and no model reads them. Your identity is never shown to the authors or the public; your report text is sent to third-party AI model providers, and sources you cite may be published as evidence, at most by the name of a public site that holds them (never their address). Knowingly false, abusive or manipulative reports are misconduct (Terms §10). Confirm…

NameTypeReqDescription
accept_termsbooleanyestrue: accepts the Terms, the Privacy Notice and the Publication Ethics policy, including that the report goes to third-party AI model providers.
categorystringyeserror: a mistake in the paper (every claim names its location). integrity: a research-integrity concern (needs subtype). review: a problem with the published review (every claim names the review). le…
claimsarray–The specific claims to check. Each names a location in the paper, cites a source, or (for a review report) names the review. Optional only for a legal report.
good_faithbooleanyestrue: the report is made in good faith and its claims are believed accurate; knowingly false, abusive or manipulative reports are misconduct.
idstringyesThe paper: its PF- permanent id (e.g. PF-260626.000001), its DOI (10.68852/PF-…, doi:10.68852/PF-…) or its https://doi.org/ link.
relationshipstringyesYour relationship to the paper or its authors; never shown to them or the public.
relationship_notestring––
statementstringyesWhat is wrong and why, in your words.
subtypestring–Required for integrity (plagiarism, duplicate_publication, fabricated_reference, fabricated_data, undisclosed_interest, undisclosed_ai_use, ethics_approval, authorship, other) and legal (copyright, p…

No output schema declared.

No examples provided.

respond_to_case ~576

Answer a report case on a paper you submitted (the paper's submitting account only): agree with the provisional finding, disagree with a response, accept a proposed correction, ask once for more time, or publish the full record of a case that ended with no action. Call get_case first: its allowed_actions say what is possible now. The authors (the paper's submitting account; for an AI-generated paper, the responsible person) answer a provisional finding before its reply deadline, 14 days after it is sent: agree; disagree with a response of 20–10,000 characters and up to 5 public links, which the same three models reassess and may confirm or lower, never raise (one reply); accept a proposed correction; or ask once for 14 more days. One action per request. A public statement of up to 2,000 characters, with no link, e-mail address or phone number, may go with any of them and is published on the case record. The response itself is private, and it is sent to third-party AI model providers. After the deadline the provisional outcome stands. A closed case that ended with no action is public only as a count unless the authors publish its full record (publish_full_record); a case the publisher closed before its assessment reached a decision or without a notice, or whose outcome the paper's editorial state did not allow, is not counted and has no record to publish (Publication Ethics §10). Confirm with the person before answering: agreeing or accepting applies the outcome, and a public statement is published. Requires Authorization: Bearer <api_key>.

NameTypeReqDescription
accept_correctionboolean–true: accept the proposed correction (a provisional correction only).
cited_urlsarray–With position "disagree": public http(s) links the reassessment may read.
extensionboolean–true: the one extension of the reply period.
idstringyesThe case id (rc_…).
positionstring–One action per call: "agree", or "disagree" with response; or give extension, accept_correction or publish_full_record instead.
public_statementstring–Optional, with any action: published on the case record as the authors' statement; no link, e-mail address or phone number.
publish_full_recordboolean–On a closed case with no action only (not one the publisher closed before a decision or without a notice, nor one whose outcome the paper's editorial state did not allow, which has no record to publi…
responsestring–With position "disagree": your reply, which the same three models reassess. Private; sent to third-party AI model providers.

No output schema declared.

No examples provided.

submit_correction ~430

Propose a corrected version of a PUBLISHED paper you authored: the full corrected body, a summary of what changed (published as the correction notice) and the scope — "editorial_notes" when the change addresses the editorial notes published with the paper, "minor_error" when it fixes a minor error that does not affect the conclusions. The editor model rules on the change against the correction policy; within scope, the text becomes the next version of record with a correction notice on the article and the previous version kept on the History tab; otherwise the request is refused with the editor's rationale. get_paper_status shows the ruling (correction_request) and the author is e-mailed either way. A corrected version may only address the editorial notes published with the paper or fix minor errors that do not affect the paper's conclusions or reliability (a typo, a mislabeled figure, an incomplete statement, a broken reference, a small factual slip). It must not change the paper's claims, results, methods, data, figures or references in substance, and must not add new findings; such changes call for a new paper or, where the published results cannot be relied upon, a retraction. The title cannot change. Every version stays on the record: the previous text remains readable from the paper's History tab. The figures must be the published version's; one request at a time per paper. Requires Authorization: Bearer <api_key>.

NameTypeReqDescription
abstractstring–Optional: replaces the abstract. Omit to keep it.
contentstringyesThe FULL corrected paper body in GitHub-Flavored Markdown (200–150,000 chars), with the same figures as the published version.
idstringyesThe paper's internal id (p_…) or PF- permanent id.
scopestringyeseditorial_notes: addresses the editorial notes published with the paper. minor_error: fixes a minor error that does not affect the conclusions.
summarystringyesWhat changed and why, in the authors' words; published with the version as its correction notice.

No output schema declared.

No examples provided.

submit_paper ~433

Submit a research paper for AI review. Requires Authorization: Bearer <api_key> on the request. No ORCID iD is needed to submit; an accepted paper is published once the account has linked one (the result's identity field says whether it has).

NameTypeReqDescription
abstractstringyes–
aiGenerationobject–With authorship "ai_generated" only: the systems that generated the paper, each with its name and version, and an optional one-sentence note.
authorsarrayyesAuthors are people. An AI tool or agent is never listed as an author (publication-ethics policy §3): an agent submits under a person's account, lists the people it works for, and the AI's part in the…
authorshipstring–Default "human". "ai_generated": the paper was generated by an AI system and no person claims authorship — authors is empty, aiGeneration names the systems and responsiblePerson names the account hol…
coauthorsConfirmedboolean–Required true when there is more than one author: confirms every listed co-author consented to this submission and to publication.
contentstringyesPaper body in GitHub-Flavored Markdown ($...$ math, GFM tables, ![cap](url) figures).
keywordsarray––
licensestring–Open license for the published article; CC-BY-4.0 (default) or CC0-1.0. Authors retain copyright.
responsiblePersonobject–With authorship "ai_generated" only: the name of the account holder who takes responsibility for the paper (published with the account's ORCID iD).
titlestringyes–

No output schema declared.

No examples provided.

submit_revision ~379

Submit a revised manuscript for a paper whose status is revision_requested — address the decision's summary_to_authors and key_concerns from get_paper_status, concern by concern in response_letter (see its description). The paper re-enters review as the next round: after a major-revision request the same panel checks each listed concern against the revised manuscript, reusing its earlier web evidence unless it cites a DOI or arXiv id that version did not, or more than 30% of its paragraphs are new or changed since the version that evidence was gathered on, and the editor accepts once every concern is addressed unless a new correctness, validity, novelty or reproducibility issue is documented with evidence; a round after a minor-revision request is checked by the editor alone (see get_submission_guidelines for the revision policy). Requires Authorization: Bearer <api_key>.

NameTypeReqDescription
abstractstring–Optional: replaces the abstract. Revise it when the claims or method changed — reviewers read the abstract you leave in place. Omit to keep it.
contentstringyesThe FULL revised paper body in GitHub-Flavored Markdown (200–150,000 chars).
idstringyesThe paper's internal id (p_…) or PF- permanent id.
keywordsarray–Optional: replaces the keywords. Omit to keep them.
response_letterstringyesResponse to the reviewers (20+ chars). Structure the response letter by concern: for each concern in the decision's key_concerns, quote it, then say what changed and where (the section of the revised…
titlestring–Optional: replaces the paper's title. Omit to keep it.

No output schema declared.

No examples provided.

upload_image ~287

Upload a figure image (PNG, JPEG, GIF or WebP) for a manuscript and get a permanent public URL to reference as ![caption](url) in submit_paper / submit_revision content. An uploaded image is public as soon as it is uploaded: anyone with the link can open it, before any review and whether or not the paper is ever accepted, so upload only images that may be made public. Copies of images referenced at other hosts or embedded inline are public in the same way once the paper enters review. The image is re-encoded (metadata stripped; GIF/WebP stored as PNG; at most 10 MB and 25 megapixels; 60 uploads/hour). NOTE: this JSON-RPC endpoint accepts bodies up to 4 MB, so base64 images are capped at roughly 3 MB here — for larger files POST multipart/form-data to /api/uploads/images (GET it for the schema). Images become permanent once a submitted manuscript references them; unreferenced uploads are removed after 7 days. Requires Authorization: Bearer <api_key> and a verified ORCID iD.

NameTypeReqDescription
datastringyesThe image bytes as base64 — bare, or a data: URL (data:image/png;base64,...). The format is detected from the bytes.
filenamestring–Optional; only used to suggest a caption in the returned markdown.

No output schema declared.

No examples provided.

validate_submission ~463

Dry-run a submission: the same checks submit_paper makes (fields, lengths, co-author consent, figure references) plus warnings for common mistakes, without creating anything or using a submission slot. Works without a key; with Authorization: Bearer <api_key> it also reports the account's readiness (submissions left, whether an accepted paper would publish at once or wait for the account's ORCID iD).

NameTypeReqDescription
abstractstringyes–
aiGenerationobject–With authorship "ai_generated" only: the systems that generated the paper, each with its name and version, and an optional one-sentence note.
authorsarrayyesAuthors are people. An AI tool or agent is never listed as an author (publication-ethics policy §3): an agent submits under a person's account, lists the people it works for, and the AI's part in the…
authorshipstring–Default "human". "ai_generated": the paper was generated by an AI system and no person claims authorship — authors is empty, aiGeneration names the systems and responsiblePerson names the account hol…
coauthorsConfirmedboolean–Required true when there is more than one author: confirms every listed co-author consented to this submission and to publication.
contentstringyesPaper body in GitHub-Flavored Markdown ($...$ math, GFM tables, ![cap](url) figures).
keywordsarray––
licensestring–Open license for the published article; CC-BY-4.0 (default) or CC0-1.0. Authors retain copyright.
responsiblePersonobject–With authorship "ai_generated" only: the name of the account holder who takes responsibility for the paper (published with the account's ORCID iD).
titlestringyes–

No output schema declared.

No examples provided.

Install

How do I install the Publish.fun MCP server?

Publish.fun is a hosted endpoint at https://publish.fun/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · publish.fun

# add to Claude Code
claude mcp add --transport http fun-publish-mcp 'https://publish.fun/api/mcp'
Common questions

What is the Publish.fun MCP server?

Publish.fun is an MCP server listed in the public MCP registry as fun.publish/mcp. AI-reviewed research journal: submit, revise and track papers; cite and report published work. This page covers its hosted endpoint (https://publish.fun/api/mcp).

Is the Publish.fun MCP server safe to use?

Publish.fun scores 82 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Publish.fun MCP server expose?

Publish.fun exposes 13 tools: get_submission_guidelines, validate_submission, submit_paper, get_paper_status, submit_revision, and 8 more. Their descriptions and schemas cost roughly 4,313 tokens of context every time the server is loaded.

Does the Publish.fun MCP server require authentication?

No. We connected to Publish.fun without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Publish.fun MCP server still maintained?

Publish.fun is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.