HETIBANK SDK Read the docs
Open source · Apache-2.0 · v0.1.0

One contract.
Four places to ship it.

The HETIBANK SDK packages the hard parts of real-estate UI: payment-first cards where every figure shows its certainty, a brand theme that cannot fail contrast, agent-safe chat, MCP Apps widgets and validated plugins.

Four surfaces, one contract

Every surface renders the same canonical envelopes, so a figure that appears in a card on the website appears identically in chat and inside an agent widget.

Websites

Websites

Brokerage website kit: payment-first cards, search, financing, reports.

Open the demo
Chat

Chat

Chat surface: safe Markdown, component envelopes, forms, evidence, PTT.

Open the demo
MCP Apps

Apps

MCP Apps widget: bridge handshake, tool result, ChatGPT fallback.

Open the demo
Plugins

Plugins & MCP server

Manifest validation, deterministic bundles, an MCP server with six read-only tools, and a publishable template.

Read the plugin guide

Packages

Install only the surfaces you need. Everything is ESM with types, and React is a peer dependency.

PackageWhat it doesVersion
@hetibank/appsMCP Apps / OpenAI Apps SDK kit: JSON-RPC bridge, widget runtime, tool-result hooks and resource templates.0.1.0
@hetibank/backgroundsToken-safe animated backgrounds for agent websites and report backdrops: 42 canvas/SVG effect profiles, paint-only and reduced-motion aware.0.1.0
@hetibank/chatUI kit for chat surfaces: messages, safe Markdown, component envelopes, evidence, forms, voice controls and handoff.0.1.0
@hetibank/clientTyped HETIBANK API client with an injected transport, typed errors and evidence-preserving responses.0.1.0
@hetibank/contractsCanonical, runtime-validated HETIBANK API and presentation contracts. No UI, no business math.0.1.0
@hetibank/pluginsOpen-source plugin kit: manifest schemas, validation CLI, packaging, MCP server and plugin templates.0.1.0
@hetibank/themeBrandable design tokens, brokerage overlays and WCAG contrast gates for the HETIBANK SDK.0.1.0
@hetibank/uiDependency-light HETIBANK UI primitives, states, evidence and shell containers with plain CSS and shadcn vocabulary.0.1.0
@hetibank/websitesUI kit for brokerage websites: property cards, search and filters, financing, reports and branded shell compositions.0.1.0

Quickstart

Render a canonical property card with a brand theme. The card data comes from the API; nothing here computes money.

pnpm add @hetibank/websites @hetibank/ui @hetibank/theme @hetibank/contracts

import { ThemeProvider } from "@hetibank/ui";
import { PropertyCard } from "@hetibank/websites";
import { createBrandTheme } from "@hetibank/theme";
import "@hetibank/theme/styles.css";
import "@hetibank/ui/styles.css";
import "@hetibank/websites/styles.css";

const theme = createBrandTheme({
  brand: { name: "Desert Bloom Realty", primary: "#5b3a29", accent: "#ad6436" },
});

export function SearchPage({ card }) {
  return (
    <ThemeProvider theme={theme} as="section">
      <PropertyCard component={card} />
    </ThemeProvider>
  );
}

Rules the code enforces

No client math

Payments, cash and rates are API facts. The SDK formats and never recomputes them.

Certainty is visible

A missing figure renders “Unavailable”, never 0. Every figure carries its source and as-of date.

Contrast is a gate

An inaccessible brand accent throws at theme creation, instead of shipping and failing silently.

Agent output is untrusted

Markdown is escaped, raw HTML is never injected, and message data stays data.