Brisora Get your free demo

Request path

Five layers, one direction.

01

AI CLIENT

Conversation Tool selection Explanation

A language model talks to the user and chooses when to call a tool. It is outside Brisora and holds none of Brisora's rules.

02

MCP TRANSPORT

Streamable HTTP Stateless Size and rate bounds

Carries one self-contained request and one response. No sessions are kept.

03

BRISORA ADAPTER

Tool schemas Input validation Serialization

Checks the shape of a request and formats the result. It contains no procurement or commercial rule.

04

APPLICATION SERVICES

Notice acquisition Normalization Composition

Sequences the core functions for one request: fetch the notice, normalize it, qualify it. The only outbound connection in the system is made here, to the public TED website.

05

DOMAIN CORE

Qualification Policy evaluation Landed cost BOM selection

Pure, deterministic functions. No network access, no clock reads, no model. Given the same inputs they return the same result.

Ownership

What each side owns.

The MCP layer owns

  • Transport
  • Schemas
  • Validation of request shape and size
  • Serialization of results

The Brisora core owns

  • Qualification rules
  • Commercial policy rules
  • Commercial arithmetic
  • Selection logic
  • Decision semantics and vocabularies
NO_BUSINESS_LOGIC_IN_MCP_ADAPTER=YES

This boundary is tested, not assumed. For each tool, the result returned through MCP is compared with the result of calling the core function directly on the same input, and they must be identical.

A second test reads the server's import graph and fails if anything that could send, store, approve or call a model becomes reachable from it.

Why the split matters

A model can be persuaded. A rule cannot.

A language model's output depends on how it is asked. If procurement rules lived in the conversation layer, a differently worded prompt could produce a different decision. Because they live in the core, the wording of a question changes only which tool is called, never what the tool concludes.

Results are returned in closed vocabularies with their reasons attached, so the client relays a decision rather than forming one. What is attached is described under how Brisora preserves decision provenance.

Runtime properties

What the server holds: nothing.

No persistence

No database, file or cache. An instance is built for a request and discarded after it.

No credentials

The server has no keys for email, payments, procurement portals or any other system.

One outbound destination

A single read-only request to the public TED website per notice analysis, with redirects refused.

The tools this architecture exposes are listed on the Brisora MCP page. The rules the core enforces are stated as five principles.