Skip to content
KFKiteframe
Try my content

Developers

One protocol layer for humans and agents.

Build with REST, TypeScript, Python, webhooks, declarative manifests, CLI, and scoped MCP tools.

A stable API with evidence built in.

Every successful answer returns current evidence, retrieval confidence, a durable conversation ID, and token usage.

  • OpenAPI 3.1 contract
  • Hashed scoped credentials
  • Idempotent action receipts
  • Explicit abstention
POST /api/v1/responses · 200 OKjson
{  "input": "How do I enforce SSO?"}{  "data": {    "status": "answered",    "confidence": 0.91,    "evidence": [{ "title": "Security guide" }]  }}

Management MCP

Create one revocable client token per app, choose its scopes, and keep every call isolated to its workspace.

Verified AI MCP

Let AI clients inspect sources and living docs, track editorial work, create governed drafts, and ask evidence-grounded questions through Streamable HTTP.

kiteframe_sources

kiteframe_docs

kiteframe_publish_articles

kiteframe_create_article

kiteframe_answer

REST API

Versioned tenant-scoped responses, sources, evals, releases, actions, structured errors, and hard usage caps.

TypeScript and Python

The official @sansavision/kiteframe package exposes answers, sources, Living Docs, Fieldnotes, domains, and delivery with scoped bearer credentials.

CLI

Ask verified knowledge and inspect sources from local or CI environments.

Webhooks

Encrypted signing secrets, HMAC-SHA256 signatures, delivery health, and replay-safe event identifiers.

Official TypeScript SDK

One client for every Kiteframe surface.

Install the Sansa Vision package, create a scoped API key, and use the same typed client for verified answers, docs, publishing, domains, and exports.

Create a sandbox
npm · @sansavision/kiteframetypescript
npm install @sansavision/kiteframeimport { Kiteframe } from "@sansavision/kiteframe";const kiteframe = new Kiteframe({  apiKey: process.env.KITEFRAME_API_KEY});const answer = await kiteframe.ask({  question: "Which plan fits a beginner?",  sources: "required"});