What people build
One endpoint, resolved by account
get_status first to
learn which account is active and what stands in its way, and treat tools/list as the contract for
your session.
Tools that open a widget declare it with _meta.ui.resourceUri. In hosts that support MCP Apps, such
as Claude and ChatGPT, the widget renders inline, just as it does in the Semicola app. Other clients
receive the same data as structured content and a text summary.
MCP or REST
Use MCP when a model needs to discover capabilities and choose its next step. Use the REST API (https://api.semicola.com/api/v2/...) when your code already knows what to call, for example
a nightly export. Both act on the same records.
Safety is part of the contract
- Writes are idempotent. Every write takes an
idempotencyKey; repeating it returns the first result. - Writes are versioned. Changes send
expectedRevision; a stale value fails instead of overwriting someone else’s work. - Spending needs a person. Launching a campaign or approving a buy returns
pending_confirmationfirst. Only a second call, made after the person agrees, commits it. - Missing facts become questions. A
needs_inputresult asks for what is missing rather than guessing.
Connect in five minutes
Add the endpoint, sign in, and prove access with a read-only call.
MCP client setup
Host-by-host configuration and connection lifetime.
Authentication
OAuth for people, API keys for headless software.
v3 Tool Catalog
Every tool, its risk, its widget and its input fields.
Errors
Failure shapes and how to recover.
For agents
The short brief to hand an autonomous agent.