Skip to main content
Glama

bourne_site_select

Choose a candidate from a live session, persist selection evidence, and create a new immutable execution plan for later execution.

Instructions

Choose one candidate returned by bourne_site_candidates, persist selection evidence, and create a new immutable execution plan without executing it. request_id and candidate_id must come from the same live candidate session; regenerate candidates after a server restart. This writes a new plan without editing existing plans. Review the returned plan before calling bourne_execute_plan; selection fails when required approvals, declarations, or provider trust are missing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
containerNoOptional existing Apptainer or Singularity image and explicit mounts to freeze into the plan; Bourne never builds or pulls it.
rationaleNoOptional explanation stored with the selection; Bourne does not treat the rationale itself as verification evidence.
request_idYesRequest ID returned by bourne_site_candidates in the current live MCP server session.
candidate_idYesViable candidate ID returned for request_id by bourne_site_candidates.
selection_sourceYesProvenance label identifying the human, agent, or deterministic rule that made the selection; this label does not grant authority.
variant_approvalsNoProvider-bound parameter names whose candidate value changes the user explicitly approved.
trusted_provider_contractNoExplicitly trust the declarative provider's semantic classifications; the provider cannot set this decision for itself.
explicit_user_declarationsNoParameter names the user explicitly declared to affect execution only, rather than scientific meaning.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
dataNo
errorNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed16 schema fields changedv0.8.1
    • addedInput schema / $defs / ContainerExecutionDocument / properties / clean_environment / description
      Added value: +"Request a clean container environment when the runtime supports it."
    • addedInput schema / $defs / ContainerExecutionDocument / properties / image / description
      Added value: +"Existing image path; Bourne verifies it but never builds or pulls it."
    • addedInput schema / $defs / ContainerExecutionDocument / properties / image_digest / description
      Added value: +"Optional expected sha256:<hex> digest for the existing image."
    • addedInput schema / $defs / ContainerExecutionDocument / properties / mounts / description
      Added value: +"Explicit bind mounts applied when the immutable plan executes."
    • addedInput schema / $defs / ContainerExecutionDocument / properties / runtime / description
      Added value: +"Existing container runtime that the selected site will use."
    • addedInput schema / $defs / ContainerMountDocument / properties / destination / description
      Added value: +"Absolute path where the source is mounted in the container."
    • addedInput schema / $defs / ContainerMountDocument / properties / read_only / description
      Added value: +"Whether the bind mount must be read-only; defaults to true."
    • addedInput schema / $defs / ContainerMountDocument / properties / source / description
      Added value: +"Existing host path to bind into the scientific container."
    • addedInput schema / properties / candidate_id / description
      Added value: +"Viable candidate ID returned for request_id by bourne_site_candidates."
    • addedInput schema / properties / container / description
      Added value: +"Optional existing Apptainer or Singularity image and explicit mounts to freeze into the plan; Bourne never builds or pulls it."
    • addedInput schema / properties / explicit_user_declarations / description
      Added value: +"Parameter names the user explicitly declared to affect execution only, rather than scientific meaning."
    • addedInput schema / properties / rationale / description
      Added value: +"Optional explanation stored with the selection; Bourne does not treat the rationale itself as verification evidence."
    • addedInput schema / properties / request_id / description
      Added value: +"Request ID returned by bourne_site_candidates in the current live MCP server session."
    • addedInput schema / properties / selection_source / description
      Added value: +"Provenance label identifying the human, agent, or deterministic rule that made the selection; this label does not grant authority."
    • addedInput schema / properties / trusted_provider_contract / description
      Added value: +"Explicitly trust the declarative provider's semantic classifications; the provider cannot set this decision for itself."
    • addedInput schema / properties / variant_approvals / description
      Added value: +"Provider-bound parameter names whose candidate value changes the user explicitly approved."
  2. Changed2 schema fields changedv0.8.0
    • addedInput schema / $defs
      Added value: +{
      +  "ContainerExecutionDocument": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "clean_environment": {
      +        "default": true,
      +        "title": "Clean Environment",
      +        "type": "boolean"
      +      },
      +      "image": {
      +        "maxLength": 16384,
      +        "minLength": 1,
      +        "title": "Image",
      +        "type": "string"
      +      },
      +      "image_digest": {
      +        "anyOf": [
      +          {
      +            "pattern": "^sha256:[0-9a-f]{64}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Image Digest"
      +      },
      +      "mounts": {
      +        "items": {
      +          "$ref": "#/$defs/ContainerMountDocument"
      +        },
      +        "maxItems": 128,
      +        "title": "Mounts",
      +        "type": "array"
      +      },
      +      "runtime": {
      +        "enum": [
      +          "apptainer",
      +          "singularity"
      +        ],
      +        "title": "Runtime",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "runtime",
      +      "image"
      +    ],
      +    "title": "ContainerExecutionDocument",
      +    "type": "object"
      +  },
      +  "ContainerMountDocument": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "destination": {
      +        "maxLength": 16384,
      +        "minLength": 1,
      +        "title": "Destination",
      +        "type": "string"
      +      },
      +      "read_only": {
      +        "default": true,
      +        "title": "Read Only",
      +        "type": "boolean"
      +      },
      +      "source": {
      +        "maxLength": 16384,
      +        "minLength": 1,
      +        "title": "Source",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "destination"
      +    ],
      +    "title": "ContainerMountDocument",
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / container
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/ContainerExecutionDocument"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  3. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state readOnlyHint=false, idempotentHint=false, and destructiveHint=false; the description carries substantial behavioral context beyond those flags. It discloses that the tool creates a new plan without editing existing plans, that `request_id` and `candidate_id` live in a single session that breaks across server restarts, and that selection fails when required approvals, declarations, or provider trust are missing. There is no contradiction with the annotations—'writes a new plan' is consistent with non-read-only, and 'without editing existing plans' is consistent with destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and satisfies tasks: a purpose statement, a session prerequisite, write-semantics, a follow-up workflow hint, and failure conditions — all in roughly 70 words. The sentences are front-loaded with purpose, and each sentence provides distinct, non-redundant information. No filler or placeholder text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 schema parameters, an output schema, and a complex workflow position (candidates → select → execute), the description covers a caller's critical needs: where the identifiers come from, how to recover after restart, that no existing plan is modified, the immediate next step to review the plan, and the reasons a selection can fail. The output schema exists, so return-value documentation is not needed in the description. The description is sufficiently complete that an agent can correctly invoke the tool within the sibling chain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value above the schema by tying `request_id` and `candidate_id` to the same live candidate session in a way the individual field descriptions only implicitly cover, and by explaining the gating conditions for `variant_approvals`, `explicit_user_declarations`, and `trusted_provider_contract` in the degenerate 'selection fails' clause. Since each parameter still has strong schema documentation, the description supplements rather than compensates, moving it to a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-plus-resource structure: 'Choose one candidate returned by `bourne_site_candidates`, persist selection evidence, and create a new immutable execution plan without executing it.' It names the exact input source, the action, and the output artifact. It also implicitly distinguishes itself from `bourne_execute_plan` by explicitly stating the plan is not executed, and from `bourne_site_candidates` by stating the candidate is already returned. This is unambiguous about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong usage context: candidates must come from a live `bourne_site_candidates` session, and the plan should be reviewed before calling `bourne_execute_plan`. It also warns to regenerate after a server restart. However, it does not explicitly state when NOT to use this tool or contrast with `bourne_plan`, so the when-to-use framing is strong but lacks an explicit exclusion for alternative planning paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/KozakHou/project-bourne'

If you have feedback or need assistance with the MCP directory API, please join our Discord server