Skip to content
TjatiMachine docs

Tjati for AI agents

Give your agent a safe way into Tjati.

One MCP endpoint. Explicit authority. Durable work that stays reviewable after the client session ends.

Machine-readable first. Human-operable by design.

Canonical connection
REMOTE MCP
Endpointhttps://api.tjati.com/mcp
Transport
Streamable HTTP
Authorization
OAuth protected
Discovery
Protected resource metadata
Default authority
state:readcapture:creatework:propose
clientOAuthscoped installtools

Read this page without this page

A direct lane for agent runtimes.

No visual parsing and no JavaScript required. Start with the concise guide, then load only the contract depth the task needs.

Recommended

Agent guide

/agent.md

The concise first read for connection, authority, safe defaults, and operating rules.

Open resource text/markdown
Discovery

Documentation index

/llms.txt

A low-token map of canonical Tjati resources and their purpose.

Open resource text/plain
Complete

Full agent context

/llms-full.txt

Every client setup, scope, delivery rule, and readiness check in one context file.

Open resource text/plain

Trust model

Authority leaves evidence.

Every durable change moves through an inspectable chain, from intent to a state-aware reversal.

01 / Preview

See the intent.

Inspect the operation, target, and expected impact.

02 / Approve

Keep the boundary.

High-impact work can wait for a member.

03 / Receipt

Retain evidence.

Applied changes keep actor and result context.

04 / Undo

Refuse stale state.

Compensating changes verify the world first.

Connect

One contract. Seven clients.

Every client connects to the same remote MCP service. The host surface changes; Tjati scopes and trust controls do not.

Claude Desktop

Remote MCP with OAuth

Docs-supported
  1. Open Settings, choose Customize, then open Connectors and select Add custom connector.
  2. Name the connector Tjati, enter https://api.tjati.com/mcp, and choose Connect.
  3. Complete the cloud OAuth flow, then review the requested Tjati scopes before granting access.
  4. Ask Claude to list your areas. A read-only result confirms the connection.

Publish gate: Official client documentation supports this flow. End-to-end compatibility soak remains a publish gate.

Remote MCP URL
https://api.tjati.com/mcp

Authority

Permission stays visible.

OAuth is the default for interactive clients. Scoped personal access tokens are the fallback for approved headless hosts.

OAuth for interactive clients

The MCP endpoint advertises protected-resource metadata. A compatible client discovers the authorization server, opens Tjati sign-in, and returns with a scoped installation.

OAuth discovery
https://api.tjati.com/.well-known/oauth-protected-resource/mcp

Recovery

If a refresh token expires or access is revoked, remove the stale client connection and start OAuth again. Reauthorization creates fresh authority; it does not restore a revoked key.

Scoped PAT for headless hosts

  1. Open Settings → Connected agents in Tjati and create an agent installation.
  2. Grant only the scopes the host needs.
  3. Issue a key once, store it in a secret manager, and inject it through the runtime environment.
  4. Send it as Authorization: Bearer <token>.

Never put a PAT in a repository, client profile, prompt, or webhook body. Rotate it after suspected exposure.

Start with the default grant

state:readcapture:creatework:propose. Add stronger authority only when the workflow proves it needs it.

Observe and capture

state:readcapture:createcalendar:read

Plan and act

work:proposework:execute

Automate and communicate

automation:managecommunications:draft

communications:draft Member session only. The two draft tools write to a real mailbox and have no durable change-set adapter, so an agent actor calling one is refused with AgentMutationUnsupportedError. A granted agent can still call the read-only connection-list tool.

A scope grants eligibility, not unconditional execution. High-impact operations can still pause for member approval.

Always-on

The session can end. The work continues.

Schedules create durable runs. Signed webhooks deliver results with bounded retries, failure evidence, and explicit replay.

Receive a signed event

Generate

Request a 32-byte base64url signing secret. Agent callers retain it before proposing the subscription.

Subscribe

Register an HTTPS endpoint and one or more durable core.* event filters.

Verify

Check the timestamp, delivery ID, event ID, raw body, and HMAC signature before processing.

Dedupe

Use the event ID for logical deduplication and the delivery ID for attempt-chain evidence.

Signature input
const signed = [
  timestamp,
  deliveryId,
  eventId,
  rawBody
].join('.')

const expected = hmacSha256Base64url(secret, signed)
timingSafeEqual(expected, signature)

Replay creates a new auditable delivery chain.

Automatic attempts keep one delivery ID. Manual replay is available for terminal deliveries and links back to the original chain.

Replay a terminal delivery
POST /api/v1/webhook-deliveries/{id}/replay
Idempotency-Key: <unique-key>

{ "reason": "receiver recovered" }

Revocation shuts down future authority.

Revoking an installation or its qualifying grant disables subscriptions and schedules, cancels queued work where possible, and preserves terminal delivery evidence. A request already in flight may still finish remotely.

Contracts

Use the schema. Never a guess.

Use the live generated OpenAPI contract for REST integrations and the concise Tjati index for canonical setup and policy links.

Current

OpenAPI

The live generated REST contract for the currently deployed Tjati API.

Open API contract
Current

Documentation index

A concise, same-origin index of canonical Tjati resources and release status.

Open llms.txt

Commercial model

Agent access is included.

Agent access is bundled into Standard and Max. There is no separate agent add-on in this release. Usage is metered for abuse protection and product learning; billing remains unchanged.