Architecture
The conversation layer is not the decision engine.
Brisora has five layers: an AI client, an MCP transport, a thin Brisora adapter, application services, and a deterministic domain core. A request passes down through them and a result passes back up. All decision logic is in the core; the layers above it carry requests and cannot alter outcomes.
Request path
Five layers, one direction.
AI CLIENT
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.
MCP TRANSPORT
Carries one self-contained request and one response. No sessions are kept.
BRISORA ADAPTER
Checks the shape of a request and formats the result. It contains no procurement or commercial rule.
APPLICATION SERVICES
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.
DOMAIN CORE
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
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.