publish_website
Create a new site from a file bundle
Everything machine-readable and agent-facing that Nanopage publishes: the REST API and its OpenAPI spec, the MCP server, llms.txt, sitemap, and markdown content negotiation.
https://api.nanopage.site/mcpStreamable HTTP · JSON-RPC 2.0 · bearer-token authhttps://api.nanopage.site/v1JSON over HTTPS · bearer-token auth · tokens with API accessNanopage exposes its publishing API as a Model Context Protocol server, so Claude Code, Claude Desktop, Cursor, Codex, and other AI agents can build and publish hosted websites natively.
https://api.nanopage.site/mcpStreamable HTTP · JSON-RPC 2.0 · bearer-token auth
Create a new site from a file bundle
Add a version to an existing site
Upload URLs for images and other binaries
List every website in the account
Full details for one website
All versions, newest first
Look up a publish job
Slug validity + availability
Read a collection's entries
Create or update entries by slug
Delete one entry
The MCP server page covers the connection flow, tools, and hosting contract in full. Grab client config snippets on the MCP interface page, and create tokens on the API tokens page. Read the announcement post for a walkthrough.
Publishing and content management as plain HTTPS + JSON, for scripts and for agents that speak REST instead of MCP: create sites and versions, and read and write the entries of a site's collections. The full surface is described by an OpenAPI 3.1 spec at nanopage.site/openapi.json (also served at api.nanopage.site/openapi.json).
https://api.nanopage.site/v1JSON over HTTPS · bearer-token auth · tokens with API access
GET /v1/websites
POST /v1/websites
GET /v1/websites/{websiteId}
GET /v1/websites/{websiteId}/versions
POST /v1/websites/{websiteId}/versions
POST /v1/uploads
GET /v1/jobs/{jobId}
GET /v1/slugs/suggest?value=…
GET /v1/websites/{websiteId}/collections
POST /v1/websites/{websiteId}/collections
GET …/collections/{collection}
PATCH …/collections/{collection}
GET …/collections/{collection}/entries
POST …/collections/{collection}/entries/batch
GET …/entries/{entry}
PUT …/entries/{slug}
DELETE …/entries/{entry}
POST /v1/websites/{websiteId}/assets
Tokens: create personal access tokens on the API tokens page and choose what each one reaches: the REST API, the MCP server, or both. No token ever reaches the dashboard, billing, domains, or admin. OAuth sign-ins from MCP clients reach both. The OAuth scope is published machine-readably as RFC 9728 protected-resource metadata at api.nanopage.site/.well-known/oauth-protected-resource, and the API's 401 responses point at it via WWW-Authenticate: Bearer resource_metadata="…".
Coming from WordPress, Ghost, Webflow, Squarespace or a spreadsheet? Send your posts, products or events to a collection and they appear on your site as if they had been written in the editor.
/{collection}-{slug}.publishedAt and createdAt keep your archive in order.{ "html": "…" } or { "markdown": "…" } and ends up exactly as if you had pasted it into the editor: headings, lists, quotes, links, images with captions.<img> tags in the HTML are downloaded into the collection's library, once per URL. baseUrl resolves relative paths.curl -X POST https://api.nanopage.site/v1/websites/$SITE/collections/blog/entries/batch \
-H "Authorization: Bearer $NANOPAGE_TOKEN" -H "content-type: application/json" \
-d '{
"baseUrl": "https://old-blog.example.com/",
"entries": [{
"slug": "how-we-roast-our-coffee",
"publishedAt": "2021-03-04T10:00:00Z",
"data": {
"title": "How we roast our coffee",
"cover": "https://old-blog.example.com/uploads/roast.jpg",
"body": { "html": "<h2>Beans</h2><p>We start early…</p>" }
}
}]
}' AI agents can do the same through the MCP tool upsert_entries: ask Claude to move your WordPress blog into Nanopage and point it at the export.
OpenAPI 3.1 spec for the Nanopage REST API — every operation with typed schemas and operation IDs.
Compact navigation index of the product and site, written for LLMs and agents.
Complete annotated index: every use-case page, template, and blog post with descriptions.
Every indexable page with last-modified dates.
AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot…) are explicitly allowed.
RFC 9728 protected-resource metadata declaring the supported API token scopes.
Core pages serve text/markdown via the Accept header (with Vary: Accept), and at explicit .md URLs. 404s return a short markdown body pointing agents at the sitemap and llms.txt.
curl -H "Accept: text/markdown" https://nanopage.site/Email hello@nanopage.site — every email is read.