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.

io.github.Reachpad/reachpad-mcp

REMOTE · REACHPAD.DEV · 2 COMPONENTS

Coding agents build full-stack apps in persistent workspaces and share them by link.

0 this week 92 Trust /100

Last scanned (7 minutes ago)

Scores higher than 99% of remote servers

Reachable. Last reached 17 Oct 2026.

Category Developer Tools

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 Security97
Transport & Reachability100
Schema Quality & AI Usability74
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3558 tokens (~142/item across 25 items; 25 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 Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 98% 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
  • All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 26 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.

  • 10 Oct 26 +14
    • Stability: fail → pass ▲ security
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 9 Sept 26 0
    • Tool “search_apps” rewrote its description, which is the text the model reads security
    • New tool “read_app_preview” functional
    • “search_apps” reworded the description of “q” cosmetic
    • “update_app” reworded the description of “files” cosmetic
    • “update_app” reworded the description of “manifest” cosmetic
    • “update_app” reworded the description of “validate” cosmetic
    • “create_app” reworded the description of “files” cosmetic
    • “create_app” reworded the description of “manifest” cosmetic
    • “create_app” reworded the description of “validate” cosmetic
  • 8 Sept 26 0
    • Tool “share_app” rewrote its description, which is the text the model reads security
    • Tool “revoke_app_share” rewrote its description, which is the text the model reads security
    • Tool “list_app_shares” rewrote its description, which is the text the model reads security
  • 7 Sept 26 0
    • Tool “read_app_file” rewrote its description, which is the text the model reads security
    • Tool “read_app_version” rewrote its description, which is the text the model reads security
    • Tool “list_app_versions” rewrote its description, which is the text the model reads security
    • Tool “rmdir” changed its title: Delete an empty folder cosmetic
    • Tool “mv” changed its title: Move an app or folder cosmetic
    • Tool “publish_app_version” changed its title: Make a version live cosmetic
    • Tool “query_app_db” changed its title: Run one SQL statement cosmetic
    • Tool “read_app” changed its title: Read an app cosmetic
    • Tool “read_app_file” changed its title: Read one file cosmetic
    • Tool “read_app_version” changed its title: Read a version cosmetic
    • Tool “remove_secret” changed its title: Remove a secret cosmetic
    • Tool “revoke_app_share” changed its title: Remove a share cosmetic
    • Tool “mkdir” changed its title: Create a folder cosmetic
    • Tool “search_apps” changed its title: Search apps cosmetic
    • Tool “set_app_access” changed its title: Set who can open an app cosmetic
    • Tool “set_secret” changed its title: Set a secret cosmetic
    • Tool “share_app” changed its title: Share an app cosmetic
    • Tool “trash_app” changed its title: Move an app to the trash cosmetic
    • Tool “tree” changed its title: Read the folder tree cosmetic
    • Tool “update_app” changed its title: Publish a new version cosmetic
    • Tool “whoami” changed its title: Who am I cosmetic
    • Tool “create_app” changed its title: Publish a new app cosmetic
    • Tool “get_app_logs” changed its title: Read app logs cosmetic
    • Tool “list_app_shares” changed its title: List shares cosmetic
    • Tool “list_app_versions” changed its title: List versions cosmetic
    • Tool “list_secrets” changed its title: List secrets cosmetic
    • Tool “ls” changed its title: List a folder cosmetic
  • 6 Sept 26 0
    • New tool “remove_secret”, which the server declares destructive security
    • New tool “set_secret”, which the server declares destructive security
    • New tool “trash_app”, which the server declares destructive security
    • Tool “whoami” rewrote its description, which is the text the model reads security
    • Tool “read_app_version” rewrote its description, which is the text the model reads security
    • Tool “read_app” rewrote its description, which is the text the model reads security
    • Tool “get_app_logs” rewrote its description, which is the text the model reads security
    • Tool “rmdir” is now declared destructive security
    • Tool “revoke_app_share” is now declared destructive security
    • Schema quality: 2496 → 3551 ▼ functional
    • Destructive annotations: All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation. functional
    • New tool “read_app_file” functional
    • New tool “query_app_db” functional
    • New tool “list_secrets” functional
    • “update_app” reworded the description of “validate” cosmetic
    • “update_app” reworded the description of “manifest” cosmetic
    • “update_app” reworded the description of “files” cosmetic
    • “create_app” reworded the description of “validate” cosmetic
    • “create_app” reworded the description of “manifest” cosmetic
    • “create_app” reworded the description of “files” cosmetic
  • 5 Sept 26 0
    • Stability: 0.33 → fail ▼ security
    • Tool “checkpoint_workspace” was removed ▼ security
    • Tool “create_workspace” was removed ▼ security
    • Tool “delete_workspace” was removed ▼ security
    • Tool “expose_port” was removed ▼ security
    • Tool “get_credit_balance” was removed ▼ security
    • Tool “get_workspace” was removed ▼ security
    • Tool “list_ports” was removed ▼ security
    • Tool “list_workspaces” was removed ▼ security
    • Tool “pause_workspace” was removed ▼ security
    • Tool “revoke_port” was removed ▼ security
    • Tool “run_command” was removed ▼ security
    • Schema quality: pass → fail ▼ functional
    • Tool coverage: 37% → 98% ▲ functional
    • Destructive annotations: 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "create_app" implies "publish" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. functional
    • Server version: 0.4.1 → 1.0.0 functional
    • New tool “create_app” functional
    • New tool “get_app_logs” functional
    • New tool “list_app_shares” functional
    • New tool “list_app_versions” functional
    • New tool “ls” functional
    • New tool “mkdir” functional
    • New tool “mv” functional
    • New tool “publish_app_version” functional
    • New tool “read_app” functional
    • New tool “read_app_version” functional
    • New tool “revoke_app_share” functional
    • New tool “rmdir” functional
    • New tool “search_apps” functional
    • New tool “set_app_access” functional
    • New tool “share_app” functional
    • New tool “tree” functional
    • New tool “update_app” functional
    • New tool “whoami” functional
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 17 Oct 2026 · Probed https://reachpad.dev/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=reachpad.dev CN=YR2,O=Let's Encrypt,C=US 19 Aug 2026 17 Nov 2026 RSA 2048 SHA256-RSA 6ff69264ac5a1ef26ebddf0d5682d632cc9
SANs: reachpad.dev
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of reachpad.dev. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
reachpad.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://reachpad.dev/.well-known/oauth-protected-resource", error="invalid_token", error_description="no bearer token"

Bearer resource_metadata="https://reachpad.dev/.well-known/oauth-protected-resource", error="invalid_token", error_description="no bearer token"
Header Value
strict-transport-security max-age=63072000

Protected resource metadata

Document https://reachpad.dev/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://reachpad.dev/mcp
Authorisation server https://splendid-experience-99.authkit.app

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

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://reachpad.dev/mcp Verified 200
http (plaintext) http://reachpad.dev/mcp HTTPS enforced 308 https://reachpad.dev/mcp
MCP tools · 25 exposed · ~3,492 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
create_app ~382

Publish new files as an app and get its URL back. Version 1 goes live at once, so show the person the content and the destination before calling this. Access defaults to org_link, which lets anyone signed in to the same organization open the link.

NameTypeReqDescription
accessobject–Who may open the link. Defaults to org_link.
filesarrayyesFiles to publish as plain text, not base64: HTML, Markdown or JavaScript exporting default { fetch }. A page serves index.html at its URL. Functions declaring db include schema changes as migrations/…
manifestobject–Omit on create_app for a static page; omit on update_app to keep the previous version's manifest. If supplied, replaces the entire manifest: include every field still needed. services, secrets and en…
messagestring–What version 1 contains.
namestringyesWhat the app is called. Shown in listings.
slugstring–The readable part of the subdomain to publish at, 3 to 34 characters of a-z, 0-9 and single hyphens. Derived from the name when omitted. A random 5-character tag is always appended, so a name is neve…
typestring–The badge on the row. Defaults to app.
validateboolean–Check without writing. Validates and returns the resulting file set, total bytes, entry and kind. create_app also validates the slug and returns it with the URL; <tag> stands for five random characte…

No output schema declared.

No examples provided.

get_app_logs ~127

Read recent log lines from the live version of a function app. An app that serves files has no process and answers that it has no logs. Function logs are not captured yet either, and the answer says so: until they are, have the function catch its own errors and return them in the response.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
limitinteger–How many rows to return. Defaults to 50.
sincestring–RFC 3339 timestamp to read from.

No output schema declared.

No examples provided.

list_app_shares ~67

List the people an app is shared with, their roles, and whether the grant has attached to an account yet. The owner and editors can read this list.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.

No output schema declared.

No examples provided.

list_app_versions ~115

List an app's versions, newest first. Versions are immutable and numbered from 1. Earlier versions open for the app's editors; the live link follows the app's access setting. Pass the next_cursor from a previous call to get the next page.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
cursorstring–next_cursor from a previous call.
limitinteger–How many rows to return. Defaults to 50.

No output schema declared.

No examples provided.

list_secrets ~42

List the organization's secrets: each name, who set it, when, and the apps whose versions bind it. Names only. No tool anywhere returns a secret value.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ls ~81

List what is directly inside one folder: its subfolders and the apps filed in it. Omit folder_id for the top level. Each folder carries the updated_at that mv needs.

NameTypeReqDescription
folder_idstring–The folder to look inside. Omit for the top level.
limitinteger–How many rows to return. Defaults to 50.

No output schema declared.

No examples provided.

mkdir ~51

Create a folder, at the top level or inside another one.

NameTypeReqDescription
namestringyesThe folder name.
parent_idstring–The folder to create it inside. Omit for the top level.

No output schema declared.

No examples provided.

mv ~178

Move an app into a folder, or move a folder under another folder. Name exactly one of app_id or folder_id as the thing being moved, and to_folder_id as the destination, or null for the top level. Moving a folder also needs base_updated_at, the value read from ls or tree, so a move made against a stale reading is refused instead of undoing someone else's.

NameTypeReqDescription
app_idstring–The app to move. Name this or folder_id, not both.
base_updated_atstring–The moved folder's updated_at, from ls or tree. Required when folder_id is given.
folder_idstring–The folder to move. Name this or app_id, not both.
to_folder_idstring|nullyesThe destination folder id, or null to move to the top level.

No output schema declared.

No examples provided.

publish_app_version ~102

Make one version of an app live by its number. This is how a version staged with publish false goes on the link, and how an app is rolled back: name an older number and that version is what the link serves again. Nothing is rebuilt, the pointer moves.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
numberintegeryesThe version number to make live.

No output schema declared.

No examples provided.

query_app_db ~167

Run one SQL statement against a function app's own database, to read rows and to fix data. Not for schema: a table or a column belongs in the version's migrations/NNNN_name.sql, and a statement that changes the schema is refused. Owners and editors only. Answers rows and rowCount for a select, and changes with lastInsertRowid for a write.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
paramsarray–The values for the ? placeholders, in order. Strings, numbers, booleans and null.
sqlstringyesOne statement, with ? placeholders for every value that comes from somewhere else. A second statement in the same string is refused.

No output schema declared.

No examples provided.

read_app ~197

Read one app before update_app: its name, type, access level and publishing mode, plus base_version_id and its files, which both describe the version the next edit builds on. Each text file carries its content, so this is how you see what an app already contains before changing it. A file marked content_omitted answer budget did not fit in this answer and read_app_file fetches it; one marked too large is past what any tool answer carries. Pass that base_version_id to update_app. version is what the link serves now, and head_version is the version base_version_id names on the apps where that is not the live one, which is every app with a version staged by publish false. pending_version is the number of that staged version, and publish_app_version is what makes it live.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.

No output schema declared.

No examples provided.

read_app_file ~167

Read one file out of an app as text, at most 256 KB. Use it for a file that read_app left out with content_omitted: "answer budget", or to fetch a single file without the rest of the app. A file that is not text, and a text file over that size, are refused rather than truncated. Reads the newest version unless you name one, which is the same version read_app lists.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
numberinteger–The version number to read from. Defaults to the newest version.
pathstringyesThe path inside the app, as it appears in read_app's files, for example index.html.

No output schema declared.

No examples provided.

read_app_preview ~125

Look at the picture of what an app's link serves right now, as an image. Use it for an app whose files you cannot read: a function app's module stays with the people who develop it, so this is how you see what the app actually shows. It is the live version only, and an app published before its picture was taken, or one whose capture has not run yet, answers that there is no picture rather than an error.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.

No output schema declared.

No examples provided.

read_app_version ~106

Read one version by its number, with its files and each text file's content. Use it to see what an earlier publish contained, and to copy a file back out of a version you want to return to. Earlier versions open for the app's editors; the live link follows the app's access setting.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
numberintegeryesThe version number.

No output schema declared.

No examples provided.

remove_secret ~65

Remove one organization secret and delete it from every published version that binds it. A version the deletion did not reach keeps the name in the list with that version in failed, and running this again retries exactly those.

NameTypeReqDescription
namestringyesThe secret name, from list_secrets.

No output schema declared.

No examples provided.

revoke_app_share ~84

Remove one share by its id, from list_app_shares. The app itself is untouched. The owner or an editor may use this when editor-managed sharing is enabled.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
share_idstringyesThe share id. Starts with shr_.

No output schema declared.

No examples provided.

rmdir ~50

Delete an empty folder. This refuses while the folder still holds apps or subfolders, and it never deletes an app. Move the contents out first.

NameTypeReqDescription
folder_idstringyesThe folder to delete.

No output schema declared.

No examples provided.

search_apps ~174

Find apps in the caller's organization by text. This matches substrings of the name and the slug, and whole words on the live version's page, not meaning: search for a word that appears in the title or on the page rather than describing the app. Returns ids and live URLs.

NameTypeReqDescription
created_bystring–Keep only apps owned by this user id or email address.
limitinteger–How many rows to return. Defaults to 50.
qstring–Text to match against the name, the slug and the words on the live page.
typestring–Keep only apps carrying this badge.
updated_bystring–Keep only apps owned by this user id or email address. Version authors are not indexed in v1, so this filters on the owner.

No output schema declared.

No examples provided.

set_app_access ~150

Change who can open an app: restricted (only the owner and named people), org_link (anyone signed in to the organization), or public_link (anyone with the URL). A password and an expiry apply to a public link only. Owner only.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
clear_expiryboolean–Remove the expiry.
clear_passwordboolean–Remove the password.
expires_atstring–RFC 3339 timestamp after which a public link stops working.
levelstringyes–
passwordstring–Set a password on a public link.

No output schema declared.

No examples provided.

set_secret ~158

Set one organization secret, so a function can bind it by name in its manifest secrets list. Any member of the organization. Setting a name that already exists replaces the value and rotates it onto every published version that binds it. Answers the name, how many versions took the new value, and the ids of any that did not.

NameTypeReqDescription
namestringyesThe environment variable name the function reads, for example STRIPE_SECRET_KEY. Letters, digits and underscores.
valuestringyesThe value. It is sealed on write: no tool returns it, this one included, and it is never written to a log or to this app's database. Ask the person to paste it themselves rather than repeating a key…

No output schema declared.

No examples provided.

share_app ~112

Give one email address access to an app as a viewer or an editor. An address without an account gets a grant that starts working the first time they sign in. The owner or an editor may use this when the owner has enabled editor-managed sharing.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
emailstringyesThe address to share with.
rolestringyesviewer can open it, editor can also publish versions.

No output schema declared.

No examples provided.

trash_app ~84

Move an app to the trash. Its link stops opening at once. Owner only. The app and its versions are kept and can be restored from Trash at reachpad.dev/apps/trash, which is also the only place an app is deleted for good.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.

No output schema declared.

No examples provided.

tree ~45

The whole folder tree for the organization, nested, with the number of apps filed in each folder and the count sitting at the top level. Each node carries the updated_at that mv needs.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

update_app ~542

Publish a new version of an existing app. Read the app first and pass the base_version_id read_app returns: it names the version this edit builds on, and a base that has moved is refused rather than overwritten. By default the new version replaces the whole file set and goes live immediately unless the app is set to review before publishing. Send mode merge to publish only the files that changed and keep the rest of that version's files, with remove for paths to drop. Two merges in a row build on each other, staged versions included. Send validate true to check the call without publishing, or publish false to stage the version and make it live later with publish_app_version.

NameTypeReqDescription
app_idstringyesThe app id, as returned by search_apps or create_app. Starts with app_.
base_version_idstringyesThe base_version_id read_app returned, which is the version this edit was made against. Starts with ver_.
filesarrayyesFiles to publish as plain text, not base64: HTML, Markdown or JavaScript exporting default { fetch }. A page serves index.html at its URL. Functions declaring db include schema changes as migrations/…
manifestobject–Omit on create_app for a static page; omit on update_app to keep the previous version's manifest. If supplied, replaces the entire manifest: include every field still needed. services, secrets and en…
messagestring–What changed in this version.
modestring–replace, the default, publishes files as the whole file set: anything left out is gone. merge sends only the files that changed and carries every other file of the base version into the new version.
publishboolean–false stages the version instead of putting it on the link. It is built and readable at its own version URL, and publish_app_version makes it live. Defaults to true.
removearray–Paths from the base version to leave out of the new one. Merge only, and a path that is not in the base version is refused rather than ignored. A call that only removes files sends an empty files arr…
validateboolean–Check without writing. Validates and returns the resulting file set, total bytes, entry and kind. create_app also validates the slug and returns it with the URL; <tag> stands for five random characte…

No output schema declared.

No examples provided.

whoami ~121

Report the account and the organization this connection is signed in as: user id, email and name, plus org id and name, and `orgs`, every organization the account is in with the current one marked. Takes no arguments. Every app is created in the current organization and nowhere else, so call this before publishing when the person named an organization to publish into, and stop if the org id is not the one they named: switching is done at reachpad.dev/apps, from the organization name at the top of the sidebar, and this connection follows it.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Install

How do I install the io.github.Reachpad/reachpad-mcp server?

io.github.Reachpad/reachpad-mcp is a hosted endpoint at https://reachpad.dev/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 · reachpad.dev

# add to Claude Code
claude mcp add --transport http reachpad-reachpad-mcp 'https://reachpad.dev/mcp'
Common questions

What is the io.github.Reachpad/reachpad-mcp server?

io.github.Reachpad/reachpad-mcp is listed in the public MCP registry as io.github.Reachpad/reachpad-mcp. Coding agents build full-stack apps in persistent workspaces and share them by link. This page covers its hosted endpoint (https://reachpad.dev/mcp).

Is the io.github.Reachpad/reachpad-mcp server safe to use?

io.github.Reachpad/reachpad-mcp scores 92 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 io.github.Reachpad/reachpad-mcp server expose?

io.github.Reachpad/reachpad-mcp exposes 25 tools: whoami, search_apps, read_app, read_app_preview, list_app_versions, and 20 more. Their descriptions and schemas cost roughly 3,492 tokens of context every time the server is loaded.

Does the io.github.Reachpad/reachpad-mcp server require authentication?

Yes. io.github.Reachpad/reachpad-mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the io.github.Reachpad/reachpad-mcp server still maintained?

io.github.Reachpad/reachpad-mcp is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.