For developers

The Satiara Connector Protocol

Satiara isn't tied to one platform. It talks to your site through one endpoint that implements nine tools. WordPress sites get our ready-made plugin. Any other stack (Next.js, Ghost, Sanity, Rails, anything) can connect by hosting this endpoint. An afternoon of work, and Satiara runs on it.

The envelope

One endpoint, JSON-RPC 2.0

Host a single HTTPS URL with an unguessable secret in the path (treat it like a password). Satiara POSTs every call to it in this shape, and reads the reply from result.content[0].text (a JSON string):

POST https://yoursite.com/api/satiara/<secret>
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": { "name": "get_site_info", "arguments": {} }
}

→ 200 OK
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": { "content": [ { "type": "text", "text": "{\"name\":\"My Site\",\"url\":\"https://yoursite.com\"}" } ] }
}

→ errors: { "result": { "isError": true, "content": [ { "type": "text", "text": "reason" } ] } }
The contract

Nine tools

Implement all nine and every Satiara feature works: autopilot, refreshes, internal links, SEO delivery, brand detection, cover images. set_seo, set_featured_image and get_brand may return an error if your stack can't support them, Satiara degrades gracefully.

ToolArgumentsReturnsWhat it's for
get_site_infonone{ name, description, url, published_posts, draft_posts }Basic facts about the site.
list_posts{ per_page?, type? }{ posts: [{ id, title, status, type, link, date?, modified?, excerpt? }], total? }The content inventory.
get_post{ id }{ id, title, content }One post's full HTML content.
create_post{ title, content, status?, categories?, tags? }{ id, link? }Create a draft or published post. Content is clean HTML.
update_post{ id, content }okReplace a post's content (used for refreshes and fixes; Satiara keeps undo state on its side).
add_internal_links{ id, links: [{ anchor_text, target_url? , target_post_id? }] }{ inserted }Wrap existing anchor text in links to related pages. Never duplicate an existing link.
set_seo{ id, seo_title?, meta_description?, schema? }okStore the SEO title, meta description, and JSON-LD so YOUR templates render them in <head>. Never inject into the body.
set_featured_image{ id, svg, title?, replace? }okUpload the branded cover SVG and set it as the post's featured image. Keep an existing image unless replace is true.
get_brandnone{ name?, description?, home?, logo_url?, icon_url?, colors?, font? }The site's brand as the platform knows it (used for automatic brand detection).
Rules that keep owners safe

What your endpoint must honor

The secret is the authCompare it with a constant-time check and return 403 on mismatch. Rotate it whenever the owner asks.
Never deleteThe protocol has no delete tool on purpose. Satiara creates, updates, and links, it never removes content.
SEO goes in the headRender seo_title, meta_description, and JSON-LD in your templates' <head>, never inject script tags into the body.
Honest errorsReturn isError with a plain reason. Satiara shows owners real messages, not mystery failures.

Reference implementation: the WordPress plugin (~500 lines of PHP) implements the whole protocol, port it to your stack in an afternoon. Then add your site in the dashboard, choose Custom (API), and paste your endpoint URL.

Build once. Autopilot forever.

Questions about the protocol? growth@satiara.com

Start your trial, $7