Table of contents

Developers

Capabilities

Capabilities are the contract an application and a provider use to agree on what a request can do. The protocol defines Chat, Tools, Images, Reasoning, and structured output as named capabilities; an application declares what it needs and a provider declares what each model supports. Bricoop intersects the two so a request only runs when the model can actually serve it.

Declaring capabilities

Providers declare what their models support through models[].kind and models[].capabilities.*; an entry of kind: chat with capabilities.tools: true means the model accepts tool calls. Applications declare what they need through their model slots and capability flags; a slot that issues tool calls declares the Tools capability. Bricoop reads both declarations and only offers a model to an application when every required capability is present.

Negotiation

When the user picks a model for a slot, Bricoop negotiates by intersecting the application’s required capabilities with the model’s supported capabilities. If every required capability is present, the model is offered; if any is missing, the model is hidden or flagged. Negotiation happens at selection time, not at request time, so the user never sees a “model cannot do this” error after sending a message.

Unavailable capabilities

An unsupported request is rejected explicitly with a clear “unsupported capability” error naming the missing capability. Bricoop never silently degrades a request, never strips a tool call to force a fit, and never treats a missing capability as a sign of pair incompatibility between the application and provider. If the user needs the capability, they pick a model that supports it; the application and provider themselves remain compatible.

Revision: sha256:5b1ec441bae98684d595b9fc0f8c4dd6e0b7c9fff11fbb577d8b2bec2db4c6c9 Edit this page