Build on the creative system, not around it.
Read signals, create drafts, and prepare production workflows while Plotmesh keeps costs, originality checks, and publishing decisions under creator control.
Start in the sandbox
Every account has a fully isolated workspace with deterministic fixtures. Sandbox credentials cannot reach a live balance, production queue, or connected publishing channel.
- Use the same request and response contracts as live
- Test signal, campaign, and approval workflows safely
- Switch to a live grant only when your integration is ready
Connect an AI assistant
Use the Streamable HTTP MCP endpoint. Compatible clients discover OAuth 2.1 automatically, then Plotmesh shows the requesting client, scopes, workspace, environment, budgets, and expiry before access is granted.
https://plotmesh-developer-mcp.restless-art-dba5.workers.dev/mcpTokens are short-lived, grants expire, and every call rechecks tenant membership and scopes.
Use the REST API
Create a sandbox API key in Studio, then send it as a bearer credential. Keys are shown once and stored only as hashes.
curl "https://plotmesh.xyz/v1/signals?workspaceId=YOUR_WORKSPACE_ID" \
-H "Authorization: Bearer YOUR_SANDBOX_KEY"Every response carries a Plotmesh-Request-Id header. Most mutations accept an Idempotency-Key header; a few routes require it or use Plotmesh-Idempotency-Key instead — see the OpenAPI file for exact parameters per route.
Consequential actions pause
Production and publishing tools create an expiring request in Studio. Approval records permission, but does not silently run the action: the client must explicitly resume it. Rejection makes the request unusable.
Signed webhooks
Webhook bodies are signed as HMAC-SHA256(timestamp + "." + rawBody), delivered with a v1= prefixed signature (Plotmesh-Webhook-Signature + Plotmesh-Webhook-Timestamp headers). Verify against the raw bytes, reject timestamps older than five minutes, strip the prefix before comparing, and deduplicate with the event idempotency_key. SDK helpers implement the same contract.
Momentum (v1.6) events are emitted in the same database transaction as the change they report: momentum.deck.ready, momentum.plan.revised, momentum.plan.approved, momentum.grant.issued, momentum.grant.revoked, momentum.grant.consumed, momentum.publication.queued, momentum.publication.scheduled, momentum.publication.published, momentum.publication.failed and momentum.publication.blocked. Payloads carry identifiers, hashes and states — never customer copy or credentials. Publishing permissions are issued by a person in Studio; API keys and MCP clients can read them (publish:read, channels:read) but never issue, revoke or use them.