Skip to content
AM

The three surfaces: SPAs, MCP, HTTP APIs

InBlack exposes the same product data through three caller-specific surfaces. The boundary is caller type, not an assumed one-to-one feature map.

The six web apps

The SPAs are for human operators. They call GraphQL and REST product APIs directly.

PillarHuman UI
Portalportal.inblack.app
Accountingaccounting.inblack.app
Commercecommerce.inblack.app
Studiostudio.inblack.app
Customer 360cx.inblack.app
Reportingreporting.inblack.app

This is the right surface for multi-step UI work: onboarding, table filtering, form drafts, optimistic edits, settings pages, and review workflows.

The MCP surface

MCP is the agent API. The canonical runtime is the Cloudflare Worker in apps/ai-coo-cf, and the canonical tool catalog is apps/ai-coo-cf/src/tools/catalog.ts.

SurfaceEndpointAuth
Public MCPhttps://ai-coo.inblack.app/mcpZITADEL bearer, tenant supplied with X-Tenant-ID after organization selection
Public manifesthttps://ai-coo.inblack.app/mcp/manifestSame as public MCP
Public aliashttps://mcp.inblack.app/mcpSame as public MCP
Internal MCPhttps://ai-coo.inblack.app/internal/mcpService token or inblack:mcp:internal scope
Metadatahttps://ai-coo.inblack.app/.well-known/inblack-mcpPublic metadata

The public MCP transport is streamable HTTP. Legacy SSE paths on the dedicated MCP alias return legacy_sse_retired.

Use MCP when a non-human caller acts on tenant state: AI COO, external agents, IDE agents, customer agents, and automation that benefits from typed tools, tier-aware visibility, structured errors, provenance, simulate tools, and pending-action review.

The product APIs

Product APIs are the service layer. UIs call them directly, and agents may use them only in the ADR-0019 carve-outs: read-heavy queries, bulk operations, internal admin endpoints, code-mode orchestration, webhooks, and storefront or agentic-commerce protocol traffic.

ServiceProtocol
portal-apiGraphQL at /graphql, REST under /api/...
accounting-apiGraphQL at /graphql
commerce-apiGraphQL at /graphql, storefront REST under /storefront/v1/, signed agentic commerce under /agentic/
customer360-apiGraphQL at /graphql
studio-apiGraphQL at /graphql, GitHub webhook REST
reporting-apiREST under /api/v1/reporting

Customer-facing agent writes that mutate financial state remain MCP-first even inside code-mode. Examples include journal-entry posting, refunds, account adjustments, and other writes that touch the books.

How to choose

Caller or workloadUse
Human operating the productSPA
Agent taking customer-facing actionMCP by default
Agent mutating financial stateMCP
Agent running read-heavy or bulk code-mode workProduct APIs, unless a financial write is needed
Backend integration or scheduled exportProduct APIs
External storefront or shopping agent protocolCommerce storefront/API or signed agentic commerce routes
InBlack internal diagnosticsInternal MCP or internal APIs, depending on the operation

When docs link across surfaces, the link must be source-backed. Do not assume every UI action has an MCP tool or every API endpoint has an agent-facing tool.