Publish free web pages and multi-page sites at wordy.page/your-name, with library photos by ID.
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.
Check whether a Wordy Page web address slug (https://wordy.page/<slug>/) is valid and available, and return a normalized slug suggestion.
Desired web address slug (3-40 lowercase letters, numbers, or single hyphens) or a site name to normalize into a slug.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http wordy-page https://wordy.page/mcp/auth
Check whether a Wordy Page web address slug (https://wordy.page/<slug>/) is valid and available, and return a normalized slug suggestion.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Desired web address slug (3-40 lowercase letters, numbers, or single hyphens) or a site name to normalize into a slug. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Desired web address slug (3-40 lowercase letters, numbers, or single hyphens) or a site name to normalize into a slug."
}
}
}Create a new single-page or multi-page website or update an existing site on wordy.page. Supports up to 10 pages per site, simple Light or Dark mode (`theme`: "light" or "dark"), one Unsplash header image per page (`photo` on the home page and on each section, which also renders a 50%-opacity blurred full-viewport background), plain-text formatting limited to ALL CAPS blue light-bold highlights (do NOT use **bold** Markdown asterisks) and space/tab indentation (blank lines stay blank, no <hr> dividers), safe plain-text HTML/code escaping, automatic URL/email linking, and an optional contact form on any page (`cf: true` on the home page or a section; Email + Message only). If authenticated with a matching session_token, publishes immediately (`status: "live"`); otherwise emails a one-tap verification/publish link to `owner_email` (`status: "Verify email"`).
| Argument | Type | Description |
|---|---|---|
| slug* | string | Target web address slug (3-40 chars, lowercase letters/digits/hyphens), published at https://wordy.page/<slug>/. |
| photo | string | Optional single header image for the home page: an Unsplash photo id from `search_photos`. Renders below the page name and above the text, with photographer credit. One image per page. |
| theme | string | Visual theme ("light" or "dark"). |
| title* | string | Site name displayed in the sticky top header bar (max 36 characters; stacks up to 2 lines on mobile without changing header height, and clicks back to the first home page). |
| heading* | string | Home page heading (H1, max 80 characters). |
| sections | array | Optional additional sub-pages (up to 9 extra pages, home + 9 = 10 pages total, each given its own URL `/<slug>/<page-slug>/` and navigation menu item). |
| from_slug | string | Optional old slug if renaming/moving an existing site you own to a new slug. |
| description* | string | Home page body text (max 20,000 chars). Formatting is plain text with ONLY two features: indentation (leading spaces/tabs are preserved) and ALL CAPS (contiguous sequences of 2+ uppercase letters render blue and lightly bold; do NOT use **bold** asterisks). Each \n is a line break and blank lines (\n\n) simply stay blank lines (no <hr> dividers). Plain URLs, emails and [anchor](https://...) links are auto-linked; HTML is escaped. Images are NOT placed in text: give each page one header image with its `photo` field. |
Read the structured JSON metadata and content (site_name, theme, home page, sections/sub-pages with their header photos, updated timestamp, and live URLs) of an existing published site on wordy.page.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The slug of the published site on wordy.page (e.g., "sample"). |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The slug of the published site on wordy.page (e.g., \"sample\")."
}
}
}List sites owned by the authenticated session (when session_token or `st` or Authorization/X-PQ-Session is provided), or list official public sample sites on wordy.page.
| Argument | Type | Description |
|---|---|---|
| st | string | Alias for `session_token`. |
| session_token | string | Optional session token (`st`) returned after email link verification to list your own pages. |
{
"type": "object",
"properties": {
"st": {
"type": "string",
"description": "Alias for `session_token`."
},
"session_token": {
"type": "string",
"description": "Optional session token (`st`) returned after email link verification to list your own pages."
}
}
}Search Unsplash photos via Wordy Page and optionally register a chosen photo ID so you can use it as a page header image (`photo` / `sections[].photo` in `create_or_update_page`; one image per page).
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1 to 5, default 1). |
| query* | string | Search keywords (e.g., "coastal sunset", "coffee shop", "modern architecture"). |
| pick_first | boolean | If true (default), automatically registers the top photo result with Unsplash so its id is immediately ready to use as a page `photo`. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"description": "Page number (1 to 5, default 1)."
},
"query": {
"type": "string",
"description": "Search keywords (e.g., \"coastal sunset\", \"coffee shop\", \"modern architecture\")."
},
"pick_first": {
"type": "boolean",
"default": true,
"description": "If true (default), automatically registers the top photo result with Unsplash so its id is immediately ready to use as a page `photo`."
}
}
}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 Oct 31, 2026.
| login_token | string | Optional 32-character one-time token from an emailed `https://wordy.page/pages?login=<token>` link to redeem and authenticate right away. |
| owner_email* | string | Owner email address (receives the one-tap verification link and any contact form messages; never displayed publicly). |
| session_token | string | Optional 30-day session token (`st`) if already authenticated for `owner_email`. |
{
"type": "object",
"required": [
"slug",
"owner_email",
"title",
"heading",
"description"
],
"properties": {
"slug": {
"type": "string",
"description": "Target web address slug (3-40 chars, lowercase letters/digits/hyphens), published at https://wordy.page/<slug>/."
},
"photo": {
"type": "string",
"description": "Optional single header image for the home page: an Unsplash photo id from `search_photos`. Renders below the page name and above the text, with photographer credit. One image per page."
},
"theme": {
"enum": [
"light",
"dark"
],
"type": "string",
"default": "light",
"description": "Visual theme (\"light\" or \"dark\")."
},
"title": {
"type": "string",
"description": "Site name displayed in the sticky top header bar (max 36 characters; stacks up to 2 lines on mobile without changing header height, and clicks back to the first home page)."
},
"heading": {
"type": "string",
"description": "Home page heading (H1, max 80 characters)."
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"text"
],
"properties": {
"cf": {
"type": "boolean",
"default": false,
"description": "Include a contact form (Email + Message only) at the bottom of this page; messages are emailed to the owner."
},
"text": {
"type": "string",
"description": "Sub-page body text (max 20,000 chars; same plain-text rules as `description`: only indentation and ALL CAPS formatting)."
},
"photo": {
"type": "string",
"description": "Optional single header image for this page (Unsplash photo id from `search_photos`)."
},
"heading": {
"type": "string",
"description": "Sub-page name (max 80 chars)."
}
}
},
"maxItems": 9,
"description": "Optional additional sub-pages (up to 9 extra pages, home + 9 = 10 pages total, each given its own URL `/<slug>/<page-slug>/` and navigation menu item)."
},
"from_slug": {
"type": "string",
"description": "Optional old slug if renaming/moving an existing site you own to a new slug."
},
"description": {
"type": "string",
"description": "Home page body text (max 20,000 chars). Formatting is plain text with ONLY two features: indentation (leading spaces/tabs are preserved) and ALL CAPS (contiguous sequences of 2+ uppercase letters render blue and lightly bold; do NOT use **bold** asterisks). Each \\n is a line break and blank lines (\\n\\n) simply stay blank lines (no <hr> dividers). Plain URLs, emails and [anchor](https://...) links are auto-linked; HTML is escaped. Images are NOT placed in text: give each page one header image with its `photo` field."
},
"login_token": {
"type": "string",
"description": "Optional 32-character one-time token from an emailed `https://wordy.page/pages?login=<token>` link to redeem and authenticate right away."
},
"owner_email": {
"type": "string",
"description": "Owner email address (receives the one-tap verification link and any contact form messages; never displayed publicly)."
},
"session_token": {
"type": "string",
"description": "Optional 30-day session token (`st`) if already authenticated for `owner_email`."
}
}
}