Class BowireMcpOptions

Namespace
Kuestenlogik.Bowire.Mcp
Assembly
Kuestenlogik.Bowire.Mcp.dll

Tunables for BowireMcpTools. Defaults are security-first: invocation is blocked unless either the URL is on the AllowedServerUrls list or AllowArbitraryUrls is explicitly opted into. The discover, env, and record-list tools stay available regardless because they are read-only.

public sealed class BowireMcpOptions
Inheritance
BowireMcpOptions
Inherited Members

Constructors

BowireMcpOptions()

public BowireMcpOptions()

Properties

AllowArbitraryUrls

Drop the allowlist entirely. Only safe in fully sandboxed contexts (CI containers without network access to internal infrastructure). The CLI prints a banner when this is set so the user can't claim ignorance.

public bool AllowArbitraryUrls { get; set; }

Property Value

bool

AllowedServerUrls

URLs the agent may target via bowire.invoke / bowire.subscribe. Default-loaded from the active Bowire environments file (~/.bowire/environments.json) when LoadAllowlistFromEnvironments is left at its default of true. Add additional URLs explicitly when scripting the server outside of an interactive Bowire session.

public IList<string> AllowedServerUrls { get; }

Property Value

IList<string>

DefaultSubscribeMs

Default sample window for bowire.subscribe when the agent doesn't supply one. Five seconds is enough to see typical heartbeat / event cadences without making the agent wait.

public int DefaultSubscribeMs { get; set; }

Property Value

int

LoadAllowlistFromEnvironments

When true (default), seed AllowedServerUrls from every serverUrl field in ~/.bowire/environments.json at server start. Disable when running fully detached (e.g. CI) and configure AllowedServerUrls manually.

public bool LoadAllowlistFromEnvironments { get; set; }

Property Value

bool

LoadAllowlistFromTypedUrls

When true, also seed AllowedServerUrls from the user's typed-URL history (~/.bowire/typed-urls.json). Wider than LoadAllowlistFromEnvironments — typed URLs include every server the user has actually pointed Bowire at, not just the ones they've saved as named environments. Default false: opt-in via --allow-invoke on the CLI because it materially widens what an agent can hit.

public bool LoadAllowlistFromTypedUrls { get; set; }

Property Value

bool

Remarks

Strictly additive — combines with AllowedServerUrls

  • the environments seed; never narrows the list. Tools also gain a bowire.allowlist.permit(url) entry point that appends to the typed-URL file so an agent can record "the user just typed this URL into the workbench" without re-reading the file.

MaxSubscribeFrames

Cap on how many frames bowire.subscribe returns in a single tool result, regardless of how long the agent samples. Stops a chatty stream from blowing up the JSON-RPC response.

public int MaxSubscribeFrames { get; set; }

Property Value

int

MaxSubscribeMs

Cap on how long bowire.subscribe will sample a streaming call before returning the collected frames. The agent can pass a shorter durationMs argument; values above this cap are clamped so a buggy agent can't pin a stream open indefinitely.

public int MaxSubscribeMs { get; set; }

Property Value

int

RequireConfirmationForMutations

When true (default), tools that mutate live state (bowire.mock.start, bowire.record.start, bowire.env.switch) require an explicit second-step confirmation: the first call returns { pending: true, token, plan }; the agent re-invokes with confirm: true or passes the confirmationToken to actually execute. Read-only tools (bowire.discover, bowire.env.list) bypass this gate. Set false for fully-autonomous agent runs that have a higher-level approval layer of their own.

public bool RequireConfirmationForMutations { get; set; }

Property Value

bool

ServerName

Server-info name advertised in the MCP initialize response.

public string ServerName { get; set; }

Property Value

string

ServerVersion

Server-info version advertised in the MCP initialize response.

public string ServerVersion { get; set; }

Property Value

string