Start with an explicitly published snapshot
Review an article in Tideflow AI and select Publish. This creates the approved snapshot served through MCP and queues a delivery revision. Saving further draft edits does not change the published snapshot. Publishing also does not deploy your website: your builder still needs to apply the content through its own workflow.
The examples below are MCP tools/call messages. Send them through the initialized connection described in the MCP guide. The content ID and rev_1 shown are illustrative; use the ID and revision returned by your project.
List pending work
Call list_content with an optional limit from 1 to 100. The result contains a content array ordered by the oldest pending work. Each item includes id, title, route, operation, revision, queuedAt, and updatedAt. operation is create until the first acknowledgement, then update for subsequent deliveries. Deleted content uses operation delete: fetch its current notice with get_content, remove the supplied route, incoming links, and sitemap entry, then acknowledge that removal revision. Deletion in Tideflow AI does not wait for your builder. Reading the list does not consume an item.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_content",
"arguments": {
"limit": 20
}
}
}Fetch the current snapshot
Pass an item’s id to get_content. It returns the current published snapshot without consuming it. The revision may have advanced since you listed the queue, so save the revision from this fetch together with the content you apply.
The payload includes content.markdown, route, heroImage (or null), author identity and links, seo.title, seo.description, seo.canonicalUrl, aeo.citations, and aeo.structuredData. Use the supplied author and hero-image details rather than replacing them with invented bylines or stock metadata.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_content",
"arguments": {
"id": "CONTENT_ID_FROM_LIST"
}
}
}Apply content and metadata together
Render the Markdown at the supplied route using your site’s content pipeline. Apply the SEO title, meta description, and canonical URL. Render every aeo.structuredData object as an application/ld+json script. Preserve supplied datePublished and dateModified values exactly; do not replace them with build or deployment timestamps.
Serialize JSON-LD safely for an HTML script context. This helper escapes less-than characters so a value containing a closing script tag cannot terminate the JSON-LD element. Feed the returned string to your framework’s JSON-LD script renderer; it is not a substitute for safe Markdown rendering.
function serializeJsonLd(value) {
return JSON.stringify(value).replace(/</g, "\\u003c");
}
// For every object in snapshot.aeo.structuredData:
// render <script type="application/ld+json"> with
// serializeJsonLd(object) as its serialized content.Validate, then acknowledge
Check the rendered page, route, byline, image, SEO tags, and structured data. Run your repository’s build and relevant checks. Only after successful application and validation should you call ack_content with the fetched id and revision. Do not acknowledge from a finally block: failed work must remain pending.
A successful response includes acknowledged: true, alreadyAcknowledged, id, and revision. Repeating the acknowledgement of the same delivered revision is idempotent. Acknowledgement records application by the builder; it is not independent proof of a live deployment or AI discovery.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ack_content",
"arguments": {
"id": "CONTENT_ID_FROM_LIST",
"revision": "rev_1"
}
}
}Handle updates and retries
If a newer version is published before acknowledgement, ack_content returns stale_revision and the newer work stays queued. Fetch the current snapshot, apply and validate it, then acknowledge that fetched revision. Do not merely copy the latest revision number into an acknowledgement for older content.
If fetching reports content_not_found, confirm the item still has a published snapshot in the connected project. If rendering, validation, or the acknowledgement request fails, keep the item pending and retry deliberately. After a successful batch, list pending content again to find remaining work. Separate author updates can be processed through list_authors, get_author, and ack_author with the same exact-revision discipline.