Koskamo

Wordy Page MCP

An official MCP server for Wordy Page that allows AI agents to manage web pages and sites. It supports publishing HTML/CSS content, searching a photo library, checking slugs, retrieving page data, and listing pages, all authenticated via personal keys or OAuth.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Wordy Page MCP logo, by Wordy PageVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Wordy Page
You need:The owner signs in at https://wordy.page/pages (one-tap email link), then creates a key at https://wordy.page/agents/#keys.
MCP endpoint (Streamable HTTP)
https://wordy.page/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

5 of 5 have a description · 5 of 5 declare behavior hints · 5 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to wordy.page ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Publish static web pages with custom HTML and CSS
  • Search for photos in the integrated Unsplash library
  • Check if a URL slug is available
  • Retrieve or list existing pages on an account

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
wordy-page 1.2.0
MCP protocol negotiated in check
2025-06-18
Tools
5 advertised
Resources
3 advertised
Resource templates
0 advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Use `check_slug` to verify a web address, `search_photos` to find and register Unsplash photos (set one per page as `photo`), `get_page` or `list_pages` to inspect existing sites, and `create_or_update_page` to publish or update multi-page websites on https://wordy.page. Text formatting: use ALL CAPS for blue emphasis (never **asterisks**), blank lines (\n\n) for horizontal <hr> dividers, single \n for line breaks, and leading spaces/tabs for indentation. For fully custom HTML/CSS layouts (agent mode, including safe inline SVG icons and illustrations), use the agent API documented at https://wordy.page/agents/.

Tools

5 advertised

check_slug — Check Web Address Availability
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check whether a Wordy Page web address slug (https://wordy.page/<slug>/) is valid and available, and return a normalized slug suggestion.

check_slug input schema
{
  "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."
    }
  }
}
check_slug annotations
{
  "title": "Check Web Address Availability",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_page — Get Published Site Content & Metadata
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_page input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "The slug of the published site on wordy.page (e.g., \"sample\")."
    }
  }
}
get_page annotations
{
  "title": "Get Published Site Content & Metadata",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_pages — List Owned or Showcase Sites
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_pages input schema
{
  "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."
    }
  }
}
list_pages annotations
{
  "title": "List Owned or Showcase Sites",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_photos — Search Curated Unsplash Photos
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

search_photos input schema
{
  "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`."
    }
  }
}
search_photos annotations
{
  "title": "Search Curated Unsplash Photos",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
create_or_update_page — Create or Update a Multi-Page Website
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

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"`).

create_or_update_page input schema
{
  "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`."
    }
  }
}
create_or_update_page annotations
{
  "title": "Create or Update a Multi-Page Website",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}

Prompts

1 advertised

build-website — Build a Multi-Page Website on Wordy Page

Advertised by the server during the last successful anonymous check.

Guided workflow for designing and publishing a mobile-friendly multi-page website with one Unsplash header image per page, and ALL CAPS blue callouts on wordy.page.

topic
What the website or event is about. (required)
slug
Desired web address slug at https://wordy.page/<slug>/.
owner_email
Owner email address to verify and own the site. (required)

Resources

3 advertised

Wordy Page AI Agent Guide (llms.txt)

Advertised by the server during the last successful anonymous check.

Concise overview, formatting rules, and quickstart for AI agents publishing on Wordy Page.

Wordy Page AI Agent Guide (llms.txt) URI
wordy://docs/llms

MIME type: text/markdown

Wordy Page Full API & Formatting Reference (llms-full.txt)

Advertised by the server during the last successful anonymous check.

Complete API reference, multi-page payload examples, and automation recipes.

Wordy Page Full API & Formatting Reference (llms-full.txt) URI
wordy://docs/llms-full

MIME type: text/markdown

Wordy Page OpenAPI 3.1 Specification (openapi.json)

Advertised by the server during the last successful anonymous check.

OpenAPI 3.1 schema for Wordy Page HTTP endpoints.

Wordy Page OpenAPI 3.1 Specification (openapi.json) URI
wordy://docs/openapi

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-02: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
567 ms
95th percentile latency
567 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 567 ms · metadata changed · 5 tool(s), 3 resource(s), 0 resource template(s), 1 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http wordy-mcp https://wordy.page/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add wordy-mcp --url https://wordy.page/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable wordy-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "wordy-mcp": {
      "url": "https://wordy.page/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "wordy-mcp": {
      "type": "streamableHttp",
      "url": "https://wordy.page/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start wordy-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "wordy-mcp": {
      "type": "http",
      "url": "https://wordy.page/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http wordy-mcp https://wordy.page/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "wordy-mcp": {
      "url": "https://wordy.page/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "wordy-mcp": {
      "serverUrl": "https://wordy.page/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Wordy Page MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Wordy Page MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing