Overview
A Page is a fully hosted search UI served athttps://mxp.co/p/{slug}. Each Page
combines one or more retriever-backed tabs, an optional hero section, a featured
gallery, stats bar, custom theme, and SEO metadata — all managed via a single API
resource.
When you publish a retriever with POST /v1/retrievers/{id}/publish, a companion Page
is automatically created at /p/{public_name}. You can then customize it further or
create entirely new Pages from scratch.
Auto-created on publish
Publishing a retriever auto-creates a Page at
/p/{public_name}. No extra step needed.Globally unique slugs
Page slugs are unique across all organizations. Once claimed,
mxp.co/p/{slug} is yours.No-auth public access
End-users browse
mxp.co/p/{slug} without any API key. Your branding, your data.Multi-tab search
Each tab routes to a different retriever — image search, text search, video — all in one URL.
Rendering modes
Pages support three rendering modes, evaluated in priority order:| Priority | Mode | When to use |
|---|---|---|
| 1 | custom_html | Full control — embed raw HTML/CSS/JS in a sandboxed iframe |
| 2 | sections[] (template: "generic") | Slot-based composition with typed blocks |
| 3 | Named presets | Legacy templates ("brand-compliance", etc.) |
Sections-based pages (recommended)
Settemplate: "generic" and pass an ordered sections array. Each section has a
type and a props dict:
| Type | Description |
|---|---|
hero | Full-width headline with optional background image/video/gradient |
stats-bar | Horizontal row of label+value stat pills |
featured-gallery | Auto-executing gallery on page load |
search-tabs | Tab nav + search form + results grid |
results-grid | Grid of result cards (standalone, without tabs) |
results-list | List layout results |
markdown-content | Rendered markdown text block |
iframe-embed | Sandboxed iframe escape hatch (props.url) |
Custom HTML pages
For full control, setcustom_html to a raw HTML string. It renders in a sandboxed
iframe at full viewport size. The iframe can call mxp.co/p/{slug}/search directly:
Creating a Page
Visit your Page
Your page is live immediately at
https://mxp.co/p/product-search. No deployment needed.Tab routing
Each tab intabs[] routes searches to a retriever. You can use either:
retriever_id— an internal retriever in your organization (org-scoped)public_name— a marketplace catalog entry (proxied to the public API, no org context needed)
Auto-creation on retriever publish
When you publish a retriever, a companion Page is created automatically:public_name. You can then customize it via PATCH /v1/pages/{page_id} — add sections,
a hero, SEO config, or additional tabs.
If a Page with the same slug already exists, the auto-creation is skipped (idempotent).
Draft / Publish / Rollback
Pages support a draft workflow — edits viaPATCH are saved as drafts and are
not visible to end-users until you publish.
How it works
- Create a page → it’s live immediately (version 0).
- Edit the page via
PATCH→ changes are saved to the document but the public API continues to serve the last published snapshot. - Publish with
POST /v1/pages/{page_id}/publish→ snapshots the current config, bumps the version, and makes the changes live. - Rollback with
POST /v1/pages/{page_id}/rollback→ restores the previous published version (one level of undo).
For convenience, you can set
"publish": true in a PATCH request to apply
the update and publish in a single call.Example: Edit → Preview → Publish
Version tracking
Each publish increments theversion counter. The response includes:
version— current published version numberhas_unpublished_changes—truewhen the draft differs from the published snapshot
/r/ redirects to /p/
Legacy marketplace URLs atmxp.co/r/{public_name} automatically redirect to
mxp.co/p/{public_name} when a Page exists for that slug. If no Page exists, the
original /r/ marketplace rendering is used as a fallback.
Public search API
End-users search through pages without any API key:Password protection
Pages can be gated with a password stored in your org secrets:"password_protected": true for these pages.
Implement password verification in your frontend before calling the search endpoint.
Hero section
background_type can be "image", "video", "gradient", or "solid".

