# azolai · TV-Jason CMS (i24 + channel14)

> Multi-tenant news/TV SaaS on Cloudflare. Everything is a Jason contract (UI=DB=plugin). Agents produce → LLM-control gate → human approve → close. grant=app: a capability/automation/org is a grant, not new code. 63=kitchen (transcribe/record) only; CF serves everything.

## API
- [items feed](https://azolai-mcp.desk-ai.vip/api/tv/items/recent): recent items (JSON)
- [item](https://azolai-mcp.desk-ai.vip/api/tv/items/8463): one item by id
- [stats](https://azolai-mcp.desk-ai.vip/api/tv/stats): totals/signed/closed
- [capabilities](https://azolai-mcp.desk-ai.vip/api/capabilities): the grantable plugin catalog

## Capabilities (23) — the giant i24 code, shortened to grantable plugins
- admin.catalog (Catalog Reader) [edge]
- admin.grant (Capability Granter) [edge]
- admin.provision (Org Provisioner) [edge]
- agent.super (agent_super) [edge]
- boundary.detect (boundary_detect) [edge]
- clip.make (clip_make) [edge]
- compose.article (compose_article) [edge]
- correction.harvest (correction_harvest) [edge]
- demo.shared-brain-proof (הוכחת מוח משותף) [edge]
- hls.record (hls_record) [cloudflare-stream]
- item.approve (item_approve) [edge]
- item.sign (item_sign) [edge]
- master.generate.image (Master Generate Image) [edge]
- master.generate.site (Master Generate Site) [edge]
- master.govern (Master Govern) [edge]
- master.integrate.cross (Master Integrate Cross) [edge]
- master.orchestrate (Master Plugin (brain)) [edge]
- master.provision.org (Master Provision Org) [edge]
- publish.item (publish_item) [edge]
- qa.score (qa_score) [edge]
- render.surface (render_surface) [edge]
- retention.manage (retention_manage) [edge]
- wa.smart-welcome (Smart Welcome) [edge]

## Flows (n8n/Zapier as Jason)
- JF-GENERIC-AUTOMATION-001: Zapier-style: webhook → filter → enrich → delay → notify (4 nodes, trigger=webhook)
- JF-I24-NEWS-001: TV segment → published article (n8n/Zapier as Jason) (6 nodes, trigger=event)

## Contracts (31, layers JL→TN)
- [JL-FOUNDATION-001](https://azolai-mcp.desk-ai.vip/c/JL-FOUNDATION-001): L0/foundation-lock · tenant=_all
- [JT-I24-THEME-001](https://azolai-mcp.desk-ai.vip/c/JT-I24-THEME-001): L1/token-reference · tenant=i24
- [JC-I24-ARTICLE-001](https://azolai-mcp.desk-ai.vip/c/JC-I24-ARTICLE-001): L2/component · tenant=i24
- [JR-SSE-COMPONENT-REGISTRY-001](https://azolai-mcp.desk-ai.vip/c/JR-SSE-COMPONENT-REGISTRY-001): L2/surface · tenant=i24
- [JF-GENERIC-AUTOMATION-001](https://azolai-mcp.desk-ai.vip/c/JF-GENERIC-AUTOMATION-001): L3/journey · tenant=_all
- [JF-I24-NEWS-001](https://azolai-mcp.desk-ai.vip/c/JF-I24-NEWS-001): L3/journey · tenant=i24
- [GRANT-I24-ARTICLE-DEDUP](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-ARTICLE-DEDUP): L4/capability-grant · tenant=i24
- [GRANT-I24-ENTITY-EXTRACT](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-ENTITY-EXTRACT): L4/capability-grant · tenant=i24
- [GRANT-I24-HEADLINE-GENERATE](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-HEADLINE-GENERATE): L4/capability-grant · tenant=i24
- [GRANT-I24-NEWS-GAP_DETECT](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-NEWS-GAP_DETECT): L4/capability-grant · tenant=i24
- [GRANT-I24-PDF-SIGN](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-PDF-SIGN): L4/capability-grant · tenant=i24
- [GRANT-I24-STORY-CLUSTER](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-STORY-CLUSTER): L4/capability-grant · tenant=i24
- [GRANT-I24-TOPIC-DETECT](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-TOPIC-DETECT): L4/capability-grant · tenant=i24
- [GRANT-I24-WIRE-CLASSIFY](https://azolai-mcp.desk-ai.vip/c/GRANT-I24-WIRE-CLASSIFY): L4/capability-grant · tenant=i24
- [MIGRATION-I24-V-SIGNED-001](https://azolai-mcp.desk-ai.vip/c/MIGRATION-I24-V-SIGNED-001): L4/migration-manifest · tenant=i24
- [JC-ASSET-MODEL-001](https://azolai-mcp.desk-ai.vip/c/JC-ASSET-MODEL-001): LJC/component · tenant=_all
- [JC-ASSET-IMAGE-001](https://azolai-mcp.desk-ai.vip/c/JC-ASSET-IMAGE-001): LJC/component · tenant=_all
- [JC-ASSET-CLIP-001](https://azolai-mcp.desk-ai.vip/c/JC-ASSET-CLIP-001): LJC/component · tenant=_all
- [JC-ASSET-VIDEO-001](https://azolai-mcp.desk-ai.vip/c/JC-ASSET-VIDEO-001): LJC/component · tenant=_all
- [JC-BUILDER-DEPTS-001](https://azolai-mcp.desk-ai.vip/c/JC-BUILDER-DEPTS-001): LJC/registry · tenant=admin
- [JC-BUILDER-CATALOG-001](https://azolai-mcp.desk-ai.vip/c/JC-BUILDER-CATALOG-001): LJC/component · tenant=admin
- [JC-FACTORY-CUSTOMER-001](https://azolai-mcp.desk-ai.vip/c/JC-FACTORY-CUSTOMER-001): LJC/capability-set · tenant=admin
- [JC-SITE-ENVELOPE-001](https://azolai-mcp.desk-ai.vip/c/JC-SITE-ENVELOPE-001): LJC/site-envelope · tenant=_all
- [JP-AZOLAI-001](https://azolai-mcp.desk-ai.vip/c/JP-AZOLAI-001): LJP/platform · tenant=_root
- [JP-MASTER-PLUGIN-001](https://azolai-mcp.desk-ai.vip/c/JP-MASTER-PLUGIN-001): LJP/master-plugin · tenant=admin
- [JT-MAARIV-THEME-001](https://azolai-mcp.desk-ai.vip/c/JT-MAARIV-THEME-001): LJT/token-reference · tenant=maariv
- [TN-ADMIN-001](https://azolai-mcp.desk-ai.vip/c/TN-ADMIN-001): LTN/tenant · tenant=admin
- [TN-I24-001](https://azolai-mcp.desk-ai.vip/c/TN-I24-001): LTN/tenant · tenant=i24
- [TN-CHANNEL14-001](https://azolai-mcp.desk-ai.vip/c/TN-CHANNEL14-001): LTN/tenant · tenant=channel14
- [TN-I25-001](https://azolai-mcp.desk-ai.vip/c/TN-I25-001): LTN/tenant · tenant=i25
- [TN-I26-001](https://azolai-mcp.desk-ai.vip/c/TN-I26-001): LTN/tenant · tenant=i26

## Optional
- [edge-api](https://azolai-edge-api.deskai-il.workers.dev): control/admin/flows
- [sse-rooms](https://azolai-sse-rooms.deskai-il.workers.dev): real-time DO rooms
