Developer & Integration Guide

Build on Tanat AI Infrastructure.

Whether you are embedding a no-code website widget, integrating via Cursor / Lovable / Bolt / v0, or building custom multi-agent workflows over REST and Model Context Protocol (MCP), everything runs on the same tenant-isolated infrastructure.

Create Workspace & Keys View /llms.txtView /api/mcp Manifest
01 / ARCHITECTURE & CONCEPTS

How Tanat is structured

Tanat cleanly separates your business organization from the AI agents and channels you deploy:

  • Tenant (Workspace): Your isolated business environment holding shared knowledge, team members, API keys, and governance policies.
  • Agents: Specialized AI personas (Support, Sales, Booking, HR, Operations, Finance, Custom) with versioned instructions and tool permissions.
  • Installations & Channels: A deployment binding an Agent to a surface (Website Widget, WhatsApp, Telegram, Slack, Shopify, or Custom API).
  • Knowledge & Memory: Approved business sources (FAQs, policies, URLs, documents) plus persistent per-customer memories recalled across sessions.
02 / WEBSITE WIDGET (NO-CODE / 1-LINE)

Embed on any website with one script tag

The Tanat widget renders inside an isolated Shadow DOM container so your website’s CSS never collides with the chat interface. It authenticates using an origin-locked publishable key (pk_...) that can only open sessions and send messages from your allowed domains.

<script
  src="https://api.tanat.space/embed/tanat-widget.js"
  data-key="pk_live_your_publishable_key"
  data-agent="inst_your_installation_id"
  data-api="https://api.tanat.space"
  data-theme="light"
  data-accent="#0C0D0B"
  data-position="bottom-right"
  data-welcome="Hi! How can I help you today?"
  defer
></script>

Programmatic Control: Once loaded, you can call window.TanatWidget.open(), window.TanatWidget.close(), or window.TanatWidget.toggle() from any button on your page.

03 / REACT, NEXT.JS & MODERN WEB

Integrate into React, Next.js, Remix, or Vite

Drop the script component into your root layout or page. No build plugins or heavy client bundles required.

import Script from 'next/script';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <body>
        {children}
        <Script
          src="https://api.tanat.space/embed/tanat-widget.js"
          data-key={process.env.NEXT_PUBLIC_TANAT_PUBLISHABLE_KEY}
          data-agent={process.env.NEXT_PUBLIC_TANAT_INSTALLATION_ID}
          data-api="https://api.tanat.space"
          data-theme="light"
          strategy="afterInteractive"
        />
      </body>
    </html>
  );
}
04 / VERIFIED CUSTOMER IDENTITY & MEMORY

Let the agent know which logged-in customer it is helping

For account-specific workflows (like order lookups, persistent memory recall, or refund requests), your backend can sign the customer’s ID with HMAC-SHA256 so it cannot be spoofed in the browser.

// Server-side (Node.js / Next.js Route Handler)
const res = await fetch('https://api.tanat.space/api/v1/platform/verify-user-token', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.TANAT_SECRET_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    installation_id: 'inst_your_installation_id',
    user_id: currentUser.id,
  }),
});
const { data } = await res.json();
// Pass data.user_id and data.user_signature to the widget or public session API
05 / VIBECODING (CURSOR, LOVABLE, BOLT, V0) & MCP

AI-Native Integration via /llms.txt and /api/mcp

Tanat is built for teams shipping with AI coding assistants:

  • GET /llms.txt — Machine-readable guide containing exact widget attributes, public session endpoints, and authenticated REST schemas.
  • GET /api/mcp — Model Context Protocol discovery manifest exposing tanat_open_session, tanat_send_message, tanat_add_knowledge, and tanat_create_payment_intent.
  • In your Workspace Dashboard under Developers & MCP, click Copy Vibecoder Prompt to get a ready-to-paste prompt pre-filled with your real pk_... and inst_... IDs.
06 / HEADLESS REST API

Full programmatic control over agents, knowledge, and actions

Authenticate server-to-server requests with Authorization: Bearer tnt_....

// 1. Open a conversation session
const sessionRes = await fetch('https://api.tanat.space/api/v1/sessions', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer tnt_your_secret_key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    installation_id: 'inst_your_installation_id',
    user_id: 'customer_4821',
  }),
});
const { data: session } = await sessionRes.json();

// 2. Send a message (grounded in workspace knowledge + customer memory)
const msgRes = await fetch(`https://api.tanat.space/api/v1/sessions/${session.id}/messages`, {
  method: 'POST',
  headers: {
    Authorization: 'Bearer tnt_your_secret_key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    content: 'What is your SLA credit policy for delayed shipments?',
  }),
});
const { data: reply } = await msgRes.json();
console.log(reply.content, reply.sources_used, reply.proposed_action);
07 / SECURITY, TEE & GOVERNANCE

Security & Isolation Guarantees

  • Hardware-Attested TEE Inference: AI inference runs on NEAR AI Cloud inside Trusted Execution Environments.
  • Publishable vs. Secret Keys: Publishable keys (pk_...) are strictly scoped to opening sessions and sending messages from allowlisted origins. They can never approve actions, read other sessions, or modify workspace settings.
  • Human-in-the-Loop Approvals: High-impact and financial actions remain in pending state until an authorized operator approves them.