Bridge Town
Server Details
Build financial models as code. Cloud execution, GSheets MCP, version control, collaboration.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
75 toolsarchive_commentaryDestructiveInspect
Soft-delete a commentary row by stamping archived_at / archived_by. Idempotent: archiving an already-archived row is a no-op that returns the existing row unchanged. Archived rows are hidden from list_commentary by default; pass include_archived=true to that tool to surface them. Archiving does NOT bump the version or append a version row (the trail tracks text edits, not lifecycle).
| Name | Required | Description | Default |
|---|---|---|---|
| commentary_id | Yes | UUID of the commentary entry. |
Output Schema
| Name | Required | Description |
|---|---|---|
| commentary | Yes |
batch_read_gsheet_rangesRead-onlyIdempotentInspect
Read multiple ranges from a connected Google Sheet in a single API call. Returns the values for each requested A1-notation range. Target the sheet by source_name (from list_data_sources) OR spreadsheet_id. Requires at least Viewer role on the project. Returns: spreadsheet_id, ranges (list of {range, values}), sheet_url. On error: error, message, hint.
| Name | Required | Description | Default |
|---|---|---|---|
| ranges | Yes | List of A1-notation ranges to read (e.g. ['Sheet1!A1:D10', 'Summary!B2:F20']). | |
| source_name | No | Logical name for this Google Sheet data source, used in SQL queries. | |
| project_name | Yes | Name of the Bridge Town project. | |
| spreadsheet_id | No | Google Spreadsheet ID from the sheet URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| error | No | |
| ranges | No | |
| message | No | |
| sheet_url | No | |
| spreadsheet_id | No |
cancel_project_inviteInspect
Cancel a pending project invite before the invitee signs up. Requires Owner role on the project. invite_id: the grant_id returned by invite_project_collaborator. Returns: project, invite_id, cancelled (bool).
| Name | Required | Description | Default |
|---|---|---|---|
| invite_id | Yes | UUID of the pending invite to cancel. | |
| project_name | Yes | Name of the Bridge Town project. Caller must have Owner role. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
cancel_runDestructiveInspect
Cancel a pending or running model execution. Returns: run_id (str) — cancelled run UUID; status (str) — always 'cancelled'; project_name (str) — project name; message (str) — confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Full UUID of the run to cancel. Must be in pending or running state. | |
| project_name | Yes | Name of the project the run belongs to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| status | Yes | |
| message | Yes | |
| project_name | Yes |
change_collaborator_roleInspect
Change the project role for an active collaborator. Requires Owner role on the project. target_user_id: UUID of the collaborator to update. role: one of 'viewer', 'editor', 'owner'. Cannot demote the only project owner. Returns: grant_id, project, user_id, new_role.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Project role to grant. One of: 'owner', 'editor', 'viewer'. | |
| project_name | Yes | Name of the Bridge Town project. Caller must have Owner role. | |
| target_user_id | Yes | UUID of the collaborator whose role or access to change. |
Output Schema
| Name | Required | Description |
|---|---|---|
| project | Yes | |
| user_id | Yes | |
| grant_id | Yes | |
| new_role | Yes |
commit_filesInspect
Use commit_files for atomic multi-file changes, especially model plus run.py edits
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | List of file operations to commit atomically. Each item must have: path (str, project-relative), content (str), encoding ('text' or 'base64'), and operation ('create', 'update', or 'delete'). For delete operations, content may be omitted. | |
| branch | No | Branch to operate on. Defaults to the project's default branch when omitted or null. | |
| project_name | Yes | Name of the Bridge Town project. | |
| commit_message | Yes | Git commit message. If omitted, the server generates a default message. |
Output Schema
| Name | Required | Description |
|---|---|---|
| branch | Yes | |
| project | Yes | |
| commit_sha | Yes | |
| files_changed | Yes |
compare_branchesInspect
Run a project on two branches concurrently and compare the resulting outputs side-by-side. Returns a structured project-output diff with absolute and percentage deltas for every changed metric. Changes of 10% or more are flagged as significant. Both branches run against the same data snapshot for an apples-to-apples comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| model_name | No | Model entry point to run for comparison (without .py extension). Defaults to 'run'. | |
| base_branch | No | Base branch to compare against (typically 'main'). | main |
| output_name | No | Named output from the model run to compare. Omit to compare all outputs. | |
| project_name | Yes | Name of the Bridge Town project. | |
| scenario_branch | Yes | Name of the scenario branch to compare against the base. |
Output Schema
| Name | Required | Description |
|---|---|---|
| diff | Yes | |
| errors | No | |
| project | Yes | |
| summary | Yes | |
| model_name | No | |
| base_branch | Yes | |
| base_status | Yes | |
| output_name | No | |
| base_commit_sha | Yes | |
| finance_summary | No | |
| scenario_branch | Yes | |
| scenario_status | Yes | |
| data_snapshot_ref | Yes | |
| scenario_commit_sha | Yes |
compare_runsRead-onlyIdempotentInspect
Compare two persisted model-run outputs side-by-side. Resolves run IDs using full UUID or UUID prefix. Both runs must be successful and belong to the same accessible project. Uses base_run_id as the anchor and comparison_run_id as the changed side in returned labels and deltas. Reuses the same diffing engine as compare_branches so result semantics stay aligned.
| Name | Required | Description | Default |
|---|---|---|---|
| base_run_id | Yes | UUID of the baseline model run to compare from. | |
| output_name | No | Named output to compare between the two runs. | |
| comparison_run_id | Yes | UUID of the comparison model run to compare to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| diff | Yes | |
| errors | No | |
| summary | Yes | |
| base_branch | No | |
| base_run_id | Yes | |
| base_status | Yes | |
| output_name | No | |
| project_name | Yes | |
| base_commit_sha | No | |
| base_parameters | No | |
| base_run_number | No | |
| base_started_at | No | |
| finance_summary | No | |
| base_finished_at | No | |
| comparison_branch | No | |
| comparison_run_id | Yes | |
| comparison_status | Yes | |
| comparison_commit_sha | No | |
| comparison_parameters | No | |
| comparison_run_number | No | |
| comparison_started_at | No | |
| base_data_snapshot_ref | No | |
| comparison_finished_at | No | |
| comparison_data_snapshot_ref | No |
create_branchInspect
Create a new git branch in a project. Use this to start a scenario branch for testing alternative assumptions. Scenario workflow: (1) create_branch to start the scenario, (2) patch_file for small edits or update_file for larger changeson the scenario branch, (3) compare_branches to run both branches and diff the outputs, (4) merge_branch (Owner only) to adopt the winning scenario into main, or create_pull_request for team review before merging.
| Name | Required | Description | Default |
|---|---|---|---|
| base_branch | No | Branch to create from. Defaults to 'main'. | main |
| branch_name | Yes | Name for the new branch. Must be a valid git ref name (no spaces, no special chars except hyphens and underscores). | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sha | Yes | |
| branch | Yes | |
| project | Yes | |
| base_branch | Yes |
create_commentaryInspect
Attach narrative analysis to a model run, or to one named output of the run. Use this after compare_runs / get_run_output to save the agent's interpretation alongside the data it explains. If output_name is omitted, the commentary is run-level. If output_name is provided and the run has output data available, the name is validated against the same resolver as get_run_output.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Commentary text content. | |
| run_id | Yes | UUID of the model run to attach commentary to. | |
| change_note | No | Optional brief note describing what changed in this version of the commentary. | |
| output_name | No | Named output within the run that this commentary describes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| commentary | Yes |
create_dashboardDestructiveInspect
Create or update a saved dashboard for a Bridge Town project. Generates chart HTML from a completed model run output, stores it in S3, and persists a Dashboard record. Requires Editor or Owner access to the project. output_key selects a key from the run's outputs dict — the same dict your model writes to /outputs/. When a model writes a JSON file such as /outputs/chart_data.json, the run's outputs dict stores it under the full filename including the extension (e.g.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Optional ISO 4217 currency code for formatting values (e.g. 'USD', 'EUR'). For data_grid dashboards, applies to columns explicitly typed as 'currency'; plain 'number' columns are not currency-formatted. | USD |
| subtitle | No | Optional subtitle displayed below the dashboard title. | |
| chart_type | Yes | Type of chart to render. Use list_chart_types to see all available types. | |
| output_key | Yes | Key in the model run's outputs dict to visualize (e.g. 'revenue_forecast'). | |
| description | No | Optional description displayed below the dashboard title. | |
| model_run_id | Yes | UUID of the successful model run whose output to render. | |
| project_name | Yes | Name of the Bridge Town project. | |
| dashboard_name | Yes | Unique name for this dashboard within the project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| project | Yes | |
| has_html | Yes | |
| chart_type | Yes | |
| created_at | Yes | |
| updated_at | Yes | |
| dashboard_id | Yes | |
| model_run_id | Yes | |
| dashboard_name | Yes |
create_fileInspect
Create a new file in a Bridge Town project and commit it. The path is project-relative (e.g. 'README.md', 'model/revenue.py', 'data/seed.csv', 'assets/logo.png'). Specify branch to commit to a non-default branch (e.g. a scenario branch). Omitting branch, passing an empty string, or passing null all resolve to the project's default branch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project-relative path for the new file (e.g. 'model/revenue.py', 'data/seed.csv'). Must not contain '..' or absolute path components. | |
| branch | No | Branch to operate on. Defaults to the project's default branch when omitted or null. | |
| content | Yes | File content as a UTF-8 string (when encoding='text') or base64-encoded bytes (when encoding='base64'). | |
| encoding | No | Encoding of the content field: 'text' for UTF-8 source (default); 'base64' for binary files. 'auto' is not allowed on writes. | text |
| project_name | Yes | Name of the Bridge Town project. | |
| commit_message | No | Git commit message. If omitted, the server generates a default message. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| project | Yes | |
| commit_sha | Yes |
create_projectInspect
Use create_project to start a new model workspace
| Name | Required | Description | Default |
|---|---|---|---|
| scaffold | No | When true (default), seeds the project with an auto-discovery run.py and a starter financial model. When false, creates a minimal empty project. | |
| description | No | Optional human-readable description for the project. | |
| project_name | Yes | Name for the new project. Must be unique within the workspace, URL-safe, and contain only alphanumeric characters, hyphens, and underscores. |
Output Schema
| Name | Required | Description |
|---|---|---|
| org | Yes | |
| run_py | Yes | |
| project | Yes | |
| gitea_id | Yes | |
| model_py | Yes | |
| clone_url | Yes | |
| description | Yes |
create_project_from_templateInspect
Create a new project using an internal workspace template as its starting point. Any workspace member may call this tool. The new project starts with a full copy of the template's code and version history. Data-source credentials and prior run outputs are NOT copied. Provenance is recorded so the new project's origin is traceable.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Branch in the template project to copy from. Defaults to the template's default branch. | |
| description | No | Optional description for the new project. | |
| new_project_name | Yes | Name for the newly created project. Must be unique within the workspace. | |
| template_project_name | Yes | Name of the existing project to use as a template source. |
Output Schema
| Name | Required | Description |
|---|---|---|
| org | Yes | |
| project | Yes | |
| gitea_id | Yes | |
| clone_url | Yes | |
| description | Yes | |
| template_source | Yes |
create_pull_requestInspect
Open a merge request (pull request) from head_branch into base_branch. Use this to start a team review workflow before merging a scenario branch. Requires at least Editor role. Returns: id (int) — PR number; title (str) — PR title; state (str) — always 'open' on creation; head_branch (str) — source branch; base_branch (str) — target branch; author (str) — creator login; created_at (str) — ISO timestamp; merged (bool) — always false on creation.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Optional description or context for the pull request. | |
| title | Yes | Title for the pull request. | |
| base_branch | No | Target branch to merge into (typically 'main'). | main |
| head_branch | Yes | Branch containing the changes to merge. | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| state | Yes | |
| title | Yes | |
| author | Yes | |
| merged | Yes | |
| created_at | Yes | |
| updated_at | Yes | |
| base_branch | Yes | |
| head_branch | Yes |
create_scheduled_runInspect
Create a new scheduled recurring model run for a project. cadence is required: a 5-field UTC cron expression (minute hour day_of_month month day_of_week). Examples: '0 8 * * 1' (every Monday 08:00 UTC), '0 0 1 * *' (monthly). Minimum interval: 15 minutes. All times are UTC. Runs appear in list_runs, get_run, and compare_runs once triggered.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Branch to execute the scheduled run from. Defaults to the project's default branch. | |
| cadence | Yes | Cron expression or interval string defining when the run executes (e.g. '0 9 * * 1' for Mondays at 9am UTC). | |
| model_name | No | Model file to execute on the schedule (without .py extension). Defaults to 'run'. | |
| project_name | Yes | Name of the Bridge Town project. | |
| idempotency_key | No | Optional idempotency key to prevent duplicate schedules. Re-sending the same key returns the existing schedule instead of creating a duplicate. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| schedule | Yes |
delete_branchDestructiveInspect
Delete a branch from a project. The default branch (main) cannot be deleted. Typically used to clean up scenario branches after merge_branch or merge_pull_request. Requires Owner role. DESTRUCTIVE — defaults to dry_run=True and returns a confirmation_token. To execute: call again with dry_run=False and echo the token.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview the deletion without mutating anything. | |
| branch_name | Yes | Name for the new branch. Must be a valid git ref name (no spaces, no special chars except hyphens and underscores. | |
| project_name | Yes | Name of the Bridge Town project. | |
| confirmation_token | No | Token required to confirm deletion (returned by a dry run). |
Output Schema
| Name | Required | Description |
|---|---|---|
| branch | Yes | |
| deleted | Yes | |
| dry_run | Yes | |
| message | Yes | |
| project | Yes | |
| audit_id | Yes | |
| confirmation_token | Yes |
delete_fileDestructiveInspect
Delete a file from a Bridge Town project. The path is project-relative (e.g. 'README.md', 'model/revenue.py', 'data/seed.csv', 'assets/logo.png'). Specify branch to delete from a non-default branch (e.g. a scenario branch). Defaults to the project's default branch when branch is omitted. Pass expected_sha (the sha returned by read_file) to enable optimistic concurrency control: if another session modified the file since you last read it the tool raises a ToolError with the current SHA.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project-relative path of the file to delete. | |
| branch | No | Branch to operate on. Defaults to the project's default branch when omitted or null. | |
| expected_sha | No | Expected blob SHA-1 (40 hex chars) for optimistic concurrency control. If the file has been modified since you last read it, the call fails with a conflict error. Read the file first to get its current sha. | |
| project_name | Yes | Name of the Bridge Town project. | |
| commit_message | No | Git commit message. If omitted, the server generates a default message. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| deleted | Yes | |
| project | Yes |
delete_projectDestructiveInspect
Delete a Bridge Town project. Requires Owner role on the project. This permanently removes the project and all its git history, files, and collaborator grants. The action cannot be undone. Safety: defaults to dry_run=True to confirm you are targeting the right project. The dry-run response lists what will be deleted without mutating anything and returns a confirmation_token.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | When true, simulate the deletion and return what would be removed without mutating anything. Defaults to true. | |
| project_name | Yes | Name of the project to delete. Requires Owner role. This action is permanent and cannot be undone. | |
| confirmation_token | No | Token required to confirm deletion (returned by a dry run). |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | |
| dry_run | Yes | |
| message | Yes | |
| project | Yes | |
| audit_id | Yes | |
| confirmation_token | Yes |
delete_scheduled_runDestructiveInspect
Delete a scheduled model run. DESTRUCTIVE — defaults to dry_run=True: previews what would be deleted and returns a confirmation_token valid for 5 minutes. To execute: call again with dry_run=False and echo the confirmation_token. schedule_id is required (from list_scheduled_runs).
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | When true, validate and preview the deletion without removing the schedule. | |
| schedule_id | Yes | UUID of the scheduled run to manage. | |
| confirmation_token | No | Token required to confirm deletion (returned by a dry run). |
Output Schema
| Name | Required | Description |
|---|---|---|
| audit | Yes | |
| dry_run | Yes | |
| message | Yes | |
| schedule_deleted | Yes | |
| confirmation_token | Yes | |
| schedule_to_delete | Yes |
delete_snapshotDestructiveInspect
Delete an unreferenced snapshot batch from S3. The snapshot prefix must match exactly the 'prefix' field returned by 'list_snapshots'. Snapshots referenced by a model run cannot be deleted and will return an error. This operation is irreversible. Returns: project_name (str) — project name; snapshot_prefix (str) — prefix of the deleted batch; deleted_count (int) — number of S3 objects removed.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project. | |
| snapshot_prefix | Yes | Prefix of the snapshot to delete (returned by list_snapshots as the snapshot identifier). |
Output Schema
| Name | Required | Description |
|---|---|---|
| project_name | Yes | |
| deleted_count | Yes | |
| snapshot_prefix | Yes |
describe_modelRead-onlyIdempotentInspect
Use describe_model for static model metadata without executing code
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project-relative path of the Python model file to describe (e.g. 'model/revenue.py'). | |
| branch | No | Branch to read the model from. Defaults to the project's default branch. | |
| project_name | Yes | Name of the Bridge Town project containing the model. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sha | Yes | |
| path | Yes | |
| inputs | Yes | |
| outputs | Yes | |
| project | Yes | |
| warnings | Yes | |
| confidence | Yes | |
| dependencies | Yes |
diffRead-onlyIdempotentInspect
Show a unified diff between two refs (commit SHAs or branch names) of a Bridge Town project. Refs are detected automatically: a ref consisting of 7–40 hexadecimal characters is treated as a commit SHA; anything else is treated as a branch name. Use list_versions to find commit SHAs. The diff shows exactly what changed between ref_a and ref_b across all files, or only the specified file when path (e.g.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project-relative file path (e.g. 'model/revenue.py'). Omit to operate on the whole project. | |
| ref_a | Yes | First git ref to diff from (commit SHA, branch name, or tag). | |
| ref_b | Yes | Second git ref to diff to (commit SHA, branch name, or tag). Defaults to HEAD if omitted. | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| diff | Yes | |
| path | Yes | |
| ref_a | Yes | |
| ref_b | Yes | |
| project | Yes | |
| has_changes | Yes |
export_projectInspect
Queue a portable .btx archive export for a Bridge Town project. Poll get_export(job_id) for completion and the pre-signed download URL. Returns: job_id (str) — export job UUID; status (str) — queued/pending status; project_id (str) — project slug; message (str) — next action; warning (str|null) — optional clamping or staging warning.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | UUID or name of the project to export. | |
| include_runs | No | When true, include model run history in the export archive. | |
| include_dashboards | No | When true, include dashboard configurations in the export archive. |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| message | Yes | |
| warning | Yes | |
| project_id | Yes |
export_run_outputInspect
Export completed model run outputs to a downloadable XLSX workbook or PDF table pack. Returns a time-limited pre-signed S3 download URL. Only successful runs can be exported. Supports list-of-dict (tabular) outputs; non-tabular outputs are skipped when output_name is omitted, or produce an error when named explicitly. Returns: run_id, project_name, format, output_names (list), skipped_output_names (list), file_size_bytes, download_url, download_url_expires_at (ISO-8601 UTC).
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Output format: 'csv', 'xlsx', or 'json'. | |
| run_id | Yes | UUID of the completed model run to export output from. | |
| output_name | No | Named output within the run to export. |
Output Schema
| Name | Required | Description |
|---|---|---|
| format | Yes | |
| run_id | Yes | |
| download_url | Yes | |
| output_names | Yes | |
| project_name | Yes | |
| file_size_bytes | Yes | |
| skipped_output_names | Yes | |
| download_url_expires_at | Yes |
format_gsheetDestructiveInspect
Unified Google Sheets formatting tool using discriminated spec.kind. Supported kinds: range_format, borders, freeze_panes, protect_range, validation, conditional_format, preset, list_presets. Examples: 1) Apply direct range styling: {"kind":"range_format","sheet_id":0,"start_row":0,"end_row":1,"start_col":0,"end_col":5,"bold":true}.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | No | Specification object describing the formatting/write/structure operation. See tool description for the schema. | |
| preset | No | Named formatting preset to apply (e.g. 'finance_table', 'summary'). | |
| tab_name | No | Name of the sheet tab to format. | Sheet1 |
| source_name | No | Name of the data source or model output to format. | |
| project_name | Yes | Name of the Bridge Town project. | |
| preset_params | No | Optional JSON object with parameters to pass to the preset. | |
| spreadsheet_id | No | Google Spreadsheet ID to format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
get_commentaryRead-onlyIdempotentInspect
Fetch one commentary row by id, optionally with its full version history. Use this when the caller already has a commentary_id (e.g. from list_commentary) and wants the current text or the complete edit trail. Pass include_versions=true to receive the append-only history ordered oldest-first; the trail is exactly the rows persisted by prior create/update_commentary calls.
| Name | Required | Description | Default |
|---|---|---|---|
| commentary_id | Yes | UUID of the commentary entry. | |
| include_versions | No | When true, include the full version history of the commentary. |
Output Schema
| Name | Required | Description |
|---|---|---|
| versions | No | |
| commentary | Yes |
get_exportRead-onlyIdempotentInspect
Poll a .btx export job by job_id. When the job has completed successfully the response includes a pre-signed download_url and download_url_expires_at (UTC, ISO-8601). Issuing the URL emits a synchronous SOC2 audit event; if the audit subsystem is unavailable the tool refuses to surface the URL.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | UUID of the export job to check. |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| created_at | Yes | |
| project_id | Yes | |
| started_at | Yes | |
| finished_at | Yes | |
| download_url | Yes | |
| error_message | Yes | |
| archive_size_bytes | Yes | |
| download_url_expires_at | Yes |
get_importRead-onlyIdempotentInspect
Poll an import job by job_id. Returns: job_id (str) — import job UUID; status (str) — current job state; target_workspace_id (str|null) — destination workspace; target_repo_name (str|null) — destination project; message (str) — status summary; error (str|null) — failure detail when present.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | UUID of the import job to check. |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| message | Yes | |
| target_repo_name | Yes | |
| target_workspace_id | Yes |
get_pull_requestRead-onlyIdempotentInspect
Get full detail for a pull request, including the unified diff. Requires at least Viewer role. Returns: id (int) — PR number; title (str); body (str) — PR description; state (str) — open or closed; head_branch / base_branch (str) — source and target branches; author (str) — creator login; created_at / updated_at (str) — ISO timestamps; merged (bool); merged_at (str | null) — merge timestamp when merged; diff (str) — unified diff of all changes in the PR.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project. | |
| pull_request_id | Yes | Numeric ID of the pull request within the project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| body | Yes | |
| diff | Yes | |
| state | Yes | |
| title | Yes | |
| author | Yes | |
| merged | Yes | |
| approvals | Yes | |
| merged_at | No | |
| created_at | Yes | |
| updated_at | Yes | |
| base_branch | Yes | |
| head_branch | Yes |
get_runRead-onlyIdempotentInspect
Use get_run to poll or inspect one run by run_id
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | UUID of the run to look up, or a UUID prefix (hex digits and dashes only). Use list_runs to discover run IDs for a project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| output | Yes | |
| run_id | Yes | |
| status | Yes | |
| truncated | Yes | |
| commit_sha | Yes | |
| parameters | Yes | |
| run_number | Yes | |
| started_at | Yes | |
| finished_at | Yes | |
| project_name | Yes | |
| error_message | Yes | |
| output_total_bytes | Yes |
get_run_outputRead-onlyIdempotentInspect
Retrieve a single named output from a completed model run. Use this instead of get_run when you only need one output and want to avoid the 1 MiB truncation cliff for large multi-tab runs. Resolves run_id using full UUID or UUID prefix. Requires a successful run status.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | UUID of a completed model run, or a short UUID prefix. Use list_runs to discover run IDs. | |
| encoding | No | How to encode the returned content: 'auto' (default) sniffs content type; 'json' returns raw JSON; 'text' returns text; 'base64' returns base64-encoded bytes. | auto |
| output_name | Yes | Key in the run's outputs dict to retrieve (e.g. 'forecast.json' or 'revenue'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| content | Yes | |
| encoding | Yes | |
| truncated | Yes | |
| size_bytes | Yes | |
| output_name | Yes | |
| project_name | Yes | |
| resolution_path | Yes | |
| resolved_output_name | Yes |
get_skillRead-onlyIdempotentInspect
Look up a Bridge Town skill by exact name or natural-language query. Use when you know a skill name or need to find one from a description. Set include_template=true to get the full prompt template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact skill name or slug (e.g. 'gsheet-finance-styles'). Hyphen/underscore variants are treated as equivalent. | |
| limit | No | Maximum number of alternate matches to return for query lookups. Ignored for exact name lookups. | |
| query | No | Natural-language description of the skill you need (e.g. 'format the P&L sheet with financial statement layouts'). Use when the exact skill name is unknown. | |
| include_template | No | Return the full Jinja2 prompt template body. Omit or set false for compact metadata only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| name | No | |
| error | No | |
| title | No | |
| matched | No | |
| message | No | |
| category | No | |
| template | No | |
| alternates | No | |
| confidence | No | |
| description | No | |
| resource_uri | No | |
| related_tools | No | |
| available_names | No | |
| required_context | No |
get_spreadsheet_metadataRead-onlyIdempotentInspect
Return metadata for a connected Google Sheet: the spreadsheet title, and for each tab the sheet ID, title, index, type, row count, and column count. Use this before write-back tools (write_gsheet) to discover available tabs and their dimensions. Target the sheet by source_name (from list_data_sources) OR spreadsheet_id — source_name is preferred for linked sheets.
| Name | Required | Description | Default |
|---|---|---|---|
| source_name | No | Logical name for this Google Sheet data source, used in SQL queries. | |
| project_name | Yes | Name of the Bridge Town project. | |
| spreadsheet_id | No | Google Spreadsheet ID from the sheet URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| error | No | |
| title | No | |
| sheets | No | |
| message | No | |
| sheet_url | No | |
| spreadsheet_id | No |
get_subscriptionRead-onlyIdempotentInspect
Return subscription status for the authenticated tenant: plan name, Stripe subscription status, current billing period end, and whether the subscription is set to cancel at period end. Use this when the user asks about their plan, billing, or renewal state. Returns: plan (str), stripe_subscription_status (str|null), current_period_end_iso (str ISO-8601|null), cancel_at_period_end (bool).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | Yes | |
| cancel_at_period_end | Yes | |
| current_period_end_iso | Yes | |
| stripe_subscription_status | Yes |
get_toolRead-onlyIdempotentInspect
Use get_tool after search_tools or when a prompt names a tool and you need the exact schema, annotations, usage guidance, and related tools
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the MCP tool to look up (e.g. 'run', 'create_file', 'query_data'). | |
| detail | No | Detail level to return: schema, usage, or full. | schema |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
get_usageRead-onlyIdempotentInspect
Return current-period usage counters for the authenticated tenant: project count vs quota, API token count vs quota, and model-run minutes consumed in the current UTC calendar month. Use this to answer 'am I close to a limit?' without a separate REST round-trip. Returns: projects_used (int), projects_quota (int), tokens_used (int), tokens_quota (int), run_minutes_used_this_month (float), run_minutes_quota (int|null), reset_date_iso (str ISO-8601).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tokens_used | Yes | |
| tokens_quota | Yes | |
| projects_used | Yes | |
| projects_quota | Yes | |
| reset_date_iso | Yes | |
| run_minutes_quota | Yes | |
| run_minutes_used_this_month | Yes |
import_projectInspect
Import a Bridge Town project from a .btx archive file. Pass the staged_import_id UUID returned by POST /api/projects/imports/stage after uploading the archive. Returns: job_id (str) — import job UUID for polling via get_import; status (str) — queued/pending state; target_workspace_id (str) — destination workspace; target_repo_name (str|null) — destination project; message (str) — next action; duplicate_of (str|null) — idempotent prior job.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | Optional JSON object with import configuration (e.g. conflict resolution strategy, target branch). | |
| archive_source | Yes | Opaque staged archive UUID returned by POST /api/projects/imports/stage. Must be a UUID string; filesystem paths, URLs, and basenames are not accepted. | |
| target_workspace_id | No | UUID of the target workspace to import into. Defaults to the current workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| message | Yes | |
| duplicate_of | Yes | |
| target_repo_name | Yes | |
| target_workspace_id | Yes |
ingest_data_sourceInspect
Make a data source queryable in Bridge Town. Handles file uploads and connected Google Sheet snapshots through one discriminated schema. Uses a discriminated spec.kind schema. kind='file_upload': encode a CSV or Excel file as base64 in spec.file_content. kind='google_sheet_snapshot': reference a connected sheet by spec.source_name or spec.data_source_id — the sheet must be connected via the Bridge Town web app.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | Ingestion specification. Set kind='file_upload' to ingest a CSV or Excel file. Set kind='google_sheet_snapshot' to snapshot a connected Google Sheet. | |
| project_name | Yes | Name of the Bridge Town project to ingest data into. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| error | No | |
| schema | No | |
| tables | No | |
| message | No | |
| row_count | No | |
| sheet_url | No | |
| source_name | No | |
| source_type | No | |
| project_name | No | |
| data_source_id | No | |
| spreadsheet_id | No | |
| snapshot_taken_at | No |
invite_project_collaboratorInspect
Invite a user to a project by email. Requires Owner role on the project. If the email belongs to an active workspace member, access is granted immediately and they receive a project-access email. Otherwise a pending project grant and workspace invitation are created together — the invitee receives a workspace invite email and both grants are resolved when they sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Project role to grant. One of: 'owner', 'editor', 'viewer'. | viewer |
| Yes | Email address of the user to invite. | ||
| project_name | Yes | Name of the Bridge Town project. Caller must have Owner role. |
Output Schema
| Name | Required | Description |
|---|---|---|
| role | Yes | |
| Yes | ||
| pending | Yes | |
| project | Yes | |
| grant_id | Yes | |
| workspace_invite | Yes |
list_branchesRead-onlyIdempotentInspect
List branches in a project. Requires at least Viewer role. Use max_results to bound the response size (default 100, max 1000). When the result is truncated, the response includes truncated=true and total_count so you know how many branches exist in total.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum number of branches to return. Defaults to 100. | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| project | Yes | |
| branches | Yes | |
| truncated | Yes | |
| total_count | Yes |
list_chart_typesRead-onlyIdempotentInspect
List all available dashboard chart types and their required data schemas. Call this before create_dashboard to discover which chart types are supported and what keys your model output must contain for each type. No project access required — returns static metadata only. Note: MCP transport authentication is still required (POST /mcp requires a valid JWT).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| truncated | Yes | |
| chart_types | Yes | |
| total_count | Yes |
list_commentaryRead-onlyIdempotentInspect
Discover run commentary across runs and projects accessible to the caller. All filters are AND-composed. When project_name and run_id are both omitted, the result is constrained to the caller's accessible projects so commentary from foreign projects is never leaked. Pass include_archived=true to surface soft-deleted rows for audit/recovery flows. Returns: commentary (list) — each entry mirrors the create response; total_returned (int) — the count of rows returned.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | UUID of the model run to attach commentary to. | |
| output_name | No | Named output within the run that this commentary describes. | |
| project_name | No | Name of the Bridge Town project to list commentary for. | |
| include_archived | No | When true, include archived commentary in the results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| truncated | Yes | |
| commentary | Yes | |
| total_count | Yes | |
| total_returned | Yes |
list_dashboardsRead-onlyIdempotentInspect
List saved dashboards for a Bridge Town project. Requires at least Viewer access to the project. Returns: project (str) — project name; dashboards (list[{name, description, is_shared, share_expires_at, has_html, created_at, updated_at}]) — one entry per dashboard; is_shared reflects only currently-active shares (false when expired); share_expires_at is the ISO-8601 UTC expiry timestamp, or null for no-expiry shares; count (int) — number of dashboards.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project whose dashboards to list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| project | Yes | |
| truncated | Yes | |
| dashboards | Yes | |
| total_count | Yes |
list_data_sourcesRead-onlyIdempotentInspect
Use list_data_sources before query_data so table and column names are grounded in the live project catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project whose data sources to list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| sources | Yes | |
| truncated | Yes | |
| total_count | Yes | |
| project_name | Yes |
list_filesRead-onlyIdempotentInspect
Use list_files before editing when you need the current project tree or a path prefix
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional subtree path to list within (e.g. 'model/' to list only model files). Omit to list all files. | |
| branch | No | Branch to operate on. Defaults to the project's default branch when omitted or null. | |
| pattern | No | Optional glob pattern to filter filenames (e.g. '*.py', 'model/**/*.py'). Applied after path filtering. | |
| max_results | No | Maximum number of files to return. Defaults to 1000. Results are truncated when the total exceeds this. | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| count | Yes | |
| files | Yes | |
| items | Yes | |
| branch | Yes | |
| project | Yes | |
| truncated | Yes | |
| total_count | Yes |
list_project_collaboratorsRead-onlyIdempotentInspect
List all active and pending collaborators for a project. Requires at least Viewer role on the project. Returns: project (str); collaborators (list[{grant_id, user_id, email, display_name, role, pending}]); count (int). Pending entries have user_id=null and pending=true — the invitee has not yet joined the workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project. Caller must have Owner role. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| project | Yes | |
| truncated | Yes | |
| total_count | Yes | |
| collaborators | Yes |
list_projectsRead-onlyIdempotentInspect
Use list_projects first when the user refers to a project by memory or asks what they can access
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| projects | Yes | |
| truncated | Yes | |
| total_count | Yes |
list_pull_requestsRead-onlyIdempotentInspect
List pull requests (merge requests) in a project. Requires at least Viewer role. state filter: 'open' (default), 'closed', or 'all'. Returns: project (str) — project name; pull_requests (list) — PR summaries with id, title, state, head_branch, base_branch, author, created_at, merged; count (int) — number of PRs returned; state_filter (str) — the state filter applied.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Filter by state: 'open' (default), 'closed', or 'all'. | open |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| project | Yes | |
| truncated | Yes | |
| total_count | Yes | |
| state_filter | Yes | |
| pull_requests | Yes |
list_runsRead-onlyIdempotentInspect
Use list_runs to find recent execution history before selecting a run_id
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of runs to return. Clamped to 1–50; defaults to 10. | |
| status | No | Optional status filter. One of: pending, running, success, failed, timed_out, cancelled. Omit or pass empty string for no filter. | |
| project_name | Yes | Name of the project whose run history to list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| runs | Yes | |
| items | Yes | |
| truncated | Yes | |
| total_count | Yes | |
| project_name | Yes | |
| total_returned | Yes |
list_scheduled_runsRead-onlyIdempotentInspect
List all scheduled recurring model runs for a project. Use create_scheduled_run to add a new schedule, update_scheduled_run to change an existing one, or delete_scheduled_run to remove one. Cadence: 5-field UTC cron expression. Minimum interval: 15 minutes. Returns: schedules (list) — each schedule's ID, cadence, enabled flag, next/last run times, and consecutive failure count; count (int) — number returned; message (str) — summary.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| message | Yes | |
| schedules | Yes | |
| truncated | Yes | |
| total_count | Yes |
list_snapshotsRead-onlyIdempotentInspect
List available data snapshots for a project with their creation dates and sizes. Snapshots are grouped by upload batch. A snapshot is marked 'referenced' if it is used by a model run and cannot be deleted. Use 'delete_snapshot' to remove unreferenced snapshots. Returns: project_name (str) — project name; snapshots (list[{timestamp, prefix, file_count, total_size_bytes, referenced}]) — one entry per batch; total_count (int) — number of snapshot batches.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| snapshots | Yes | |
| truncated | Yes | |
| total_count | Yes | |
| project_name | Yes |
list_versionsRead-onlyIdempotentInspect
List the version history (git commits) for a Bridge Town project. When path is provided (e.g. model/revenue.py, README.md, data/seed.csv), only commits that touched that file are shown; omit path to list project-wide history. Each version includes the commit SHA, human-readable commit message (derived from the natural-language prompt used to create or update the file), author name, and date.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project-relative file path (e.g. 'model/revenue.py'). Omit to operate on the whole project. | |
| limit | No | Maximum number of commits to return. Defaults to 20. | |
| branch | No | Branch to inspect. Defaults to the project's default branch. | main |
| cursor | No | Pagination cursor from a previous list_versions response to fetch the next page. | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| count | Yes | |
| items | Yes | |
| branch | Yes | |
| project | Yes | |
| versions | Yes | |
| truncated | Yes | |
| next_cursor | Yes | |
| total_count | Yes |
merge_branchInspect
Merge a head branch into a base branch (direct merge, no review required). If the merge would cause conflicts, returns a human-readable diff showing the conflicting changes so you can resolve them manually. Requires Owner role — only Owners can directly merge branches into main, protecting the base model from unreviewed assumption changes.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | When true, validate the merge without committing. Returns conflict status without modifying any branch. | |
| base_branch | No | Target branch to merge into. Defaults to 'main'. | main |
| head_branch | Yes | Name of the branch to merge into base_branch. | |
| project_name | Yes | Name of the Bridge Town project. | |
| commit_message | No | Custom commit message for the merge. If omitted, a default is generated. | |
| expected_head_sha | No | Optional expected SHA of head_branch tip for optimistic concurrency. Fails if the branch has moved since you last read it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| diff | No | |
| merged | Yes | |
| dry_run | No | |
| message | Yes | |
| project | Yes | |
| audit_id | Yes | |
| conflict | Yes | |
| head_sha | No | |
| up_to_date | Yes | |
| base_branch | Yes | |
| head_branch | Yes |
merge_pull_requestInspect
Merge an approved pull request into its base branch. Requires Owner role. style options: 'merge' (merge commit, default), 'squash' (squash into one commit), 'rebase' (rebase onto base branch). Safety: pass expected_head_sha (the PR head commit SHA from get_pull_request) to guard against new commits pushed to the PR branch since you last checked. Returns: project (str); pull_request_id (int); merged (bool); message (str); audit_id (str) — correlation ID present in the audit log for this merge.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Merge style: 'merge' (merge commit), 'rebase' (rebase and merge), or 'squash' (squash and merge). | merge |
| commit_title | No | Optional title for the merge commit. | |
| project_name | Yes | Name of the Bridge Town project. | |
| pull_request_id | Yes | Numeric ID of the pull request within the project. | |
| expected_head_sha | No | Optional SHA of the PR head commit for optimistic concurrency control. |
Output Schema
| Name | Required | Description |
|---|---|---|
| merged | Yes | |
| message | Yes | |
| project | Yes | |
| audit_id | Yes | |
| pull_request_id | Yes |
modify_gsheet_structureDestructiveInspect
Consolidated Google Sheets structure tool. Use spec.action as a discriminator: ensure_tab, insert_rows, or delete_rows. Examples: 1) Ensure a tab exists: {"action":"ensure_tab","tab_title":"Forecast"}. 2) Insert rows: {"action":"insert_rows","sheet_id":0,"start_row":1,"num_rows":3}. 3) Delete rows: {"action":"delete_rows","sheet_id":0,"start_row":20,"num_rows":5}.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | Specification object describing the formatting/write/structure operation. See tool description for the schema. | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| error | No | |
| detail | No | |
| message | No | |
| operation | No | |
| sheet_url | No | |
| spreadsheet_id | No |
patch_fileInspect
Use patch_file for a small known text replacement in one file
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project-relative path of the UTF-8 text file to patch. | |
| branch | No | Branch to operate on. Defaults to the project's default branch when omitted or null. | |
| find_text | Yes | Exact substring to find in the file. Must appear exactly as many times as expected_occurrences (default 1). | |
| expected_sha | No | Expected blob SHA-1 (40 hex chars) for optimistic concurrency control. If the file has been modified since you last read it, the call fails with a conflict error. Read the file first to get its current sha. | |
| project_name | Yes | Name of the Bridge Town project. | |
| replace_text | Yes | Text to replace each occurrence of find_text with. | |
| commit_message | No | Git commit message. If omitted, the server generates a default message. | |
| expected_occurrences | No | Expected number of times find_text appears. Defaults to 1. Use to guard against partial matches in files with repeated content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| project | Yes | |
| commit_sha | Yes | |
| replacements_applied | Yes |
query_dataRead-onlyIdempotentInspect
Use query_data for read-only DuckDB analysis against project data sources
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | SQL SELECT statement to execute against the project's registered data sources using DuckDB syntax. | |
| row_limit | No | Maximum number of rows to return. Defaults to 1000. Use to avoid overwhelming the context window with large result sets. | |
| project_name | Yes | Name of the Bridge Town project whose data sources to query. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| columns | Yes | |
| sources | Yes | |
| warnings | No | |
| row_count | Yes | |
| truncated | Yes |
read_fileRead-onlyInspect
Use read_file to inspect an existing model, run.py, README, or data seed before making changes
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project-relative file path to read (e.g. 'run.py', 'model/revenue.py'). | |
| branch | No | Branch to operate on. Defaults to the project's default branch when omitted or null. | |
| encoding | No | How to decode the file: 'auto' (default) sniffs binary vs text; 'text' returns UTF-8 string; 'base64' returns base64-encoded bytes. | auto |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sha | Yes | |
| path | Yes | |
| content | Yes | |
| project | Yes | |
| encoding | Yes | |
| size_bytes | Yes |
remove_project_collaboratorDestructiveInspect
Remove an active collaborator from a project using their target_user_id. Requires Owner role on the project. To cancel a pending invite instead, use cancel_project_invite with the invite_id (grant_id) returned by invite_project_collaborator. Cannot remove the only project owner. Returns: project, user_id, removed (bool).
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the Bridge Town project. Caller must have Owner role. | |
| target_user_id | Yes | UUID of the collaborator whose role or access to change. |
Output Schema
| Name | Required | Description |
|---|---|---|
| project | Yes | |
| removed | Yes | |
| user_id | Yes |
review_pull_requestInspect
Submit a review decision on a pull request. Requires at least Editor role. event options: 'comment' (neutral feedback), 'approve' (signal ready to merge), 'request_changes' (block merge until addressed). Returns: project (str); pull_request_id (int); event (str); message (str).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Review comment text. Required when event is 'COMMENT' or 'REQUEST_CHANGES'. | |
| event | Yes | Review decision: 'comment' (leave a comment), 'approve' (approve the PR), or 'request_changes' (request changes). | |
| project_name | Yes | Name of the Bridge Town project. | |
| pull_request_id | Yes | Numeric ID of the pull request within the project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| event | Yes | |
| message | Yes | |
| project | Yes | |
| pull_request_id | Yes |
rollback_versionDestructiveInspect
Restore a project file to the bytes it had at a previous version (commit SHA). Pass path as a project-relative file path (e.g. model/revenue.py, README.md, data/seed.csv, assets/logo.png). This creates a new commit — it does NOT rewrite history. Use list_versions to find the commit SHA you want to restore. Optionally specify a branch to restore on a scenario branch instead of the default branch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project-relative file path (e.g. 'model/revenue.py'). Omit to operate on the whole project. | |
| branch | No | Branch to inspect. Defaults to the project's default branch. | |
| dry_run | No | Preview the rollback without creating a commit. | |
| target_sha | Yes | Git commit SHA to roll back to. | |
| project_name | Yes | Name of the Bridge Town project. | |
| commit_message | No | Git commit message for the rollback commit. If omitted, a default is generated. | |
| confirmation_token | No | Token required to confirm rollback (returned by a dry run). | |
| expected_current_sha | No | Expected SHA of the current HEAD for optimistic concurrency. Fails if the branch has changed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| dry_run | Yes | |
| message | Yes | |
| project | Yes | |
| current_sha | Yes | |
| commit_message | Yes | |
| new_commit_sha | Yes | |
| restored_to_sha | Yes | |
| confirmation_token | Yes |
runInspect
Use run to execute a project via run.py or one model file
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Execution mode. 'sync' blocks until the run completes and returns results inline; 'async' queues the run immediately and returns a run_id to poll with get_run. | |
| scope | Yes | Execution scope. 'project' runs run.py as the top-level entry point (omit model_name); 'model' runs a single model file named model_name. | |
| branch | No | Branch to execute from. Defaults to the project's default branch when omitted or null. | |
| commit_sha | No | Exact git commit SHA to execute. When omitted, the latest commit on branch is used. | |
| model_name | No | Name of the model file to run (without .py extension). Required when scope='model'; ignored when scope='project'. | |
| parameters | No | Optional JSON object delivered as /inputs/parameters.json inside the sandbox container. Use for sensitivity analysis without branching. Must be JSON-serializable and under 64 KB. | |
| project_name | Yes | Name of the Bridge Town project to execute. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
search_toolsRead-onlyIdempotentInspect
Use search_tools when the task is clear but the tool name is unknown
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tools to return. Defaults to 5. | |
| query | Yes | Natural-language description of what you want to accomplish (e.g. 'run a financial model', 'list branches'). | |
| domain | No | Optional domain to restrict the search to (e.g. 'execution', 'models', 'data'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| reason | No | |
| recovery | No | |
| truncated | Yes | |
| total_count | Yes | |
| skill_matches | No |
update_commentaryInspect
Edit commentary text under optimistic concurrency. Pass the version you observed last (typically the value returned by create_commentary or get_commentary) as expected_version; if it no longer matches the stored row, the tool returns a commentary-stale-version error carrying expected_version and actual_version so the caller can re-fetch and merge.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Commentary text content. | |
| change_note | No | Optional brief note describing what changed in this version of the commentary. | |
| commentary_id | Yes | UUID of the commentary entry. | |
| expected_version | Yes | Expected version number for optimistic concurrency control. |
Output Schema
| Name | Required | Description |
|---|---|---|
| commentary | Yes |
update_fileInspect
Overwrite an existing file in a Bridge Town project and commit the change. The path is project-relative (e.g. 'README.md', 'model/revenue.py', 'data/seed.csv', 'assets/logo.png'). This tool is strict update-only: if the file does not exist it returns a not-found error instructing you to use create_file instead. Specify branch to commit to a non-default branch (e.g.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project-relative path of the existing file to overwrite. | |
| branch | No | Branch to operate on. Defaults to the project's default branch when omitted or null. | |
| content | Yes | New file content as a UTF-8 string (when encoding='text') or base64-encoded bytes (when encoding='base64'). | |
| encoding | No | Encoding of the content field: 'text' for UTF-8 source (default); 'base64' for binary files. 'auto' is not allowed on writes. | text |
| expected_sha | No | Expected blob SHA-1 (40 hex chars) for optimistic concurrency control. If the file has been modified since you last read it, the call fails with a conflict error. Read the file first to get its current sha. | |
| project_name | Yes | Name of the Bridge Town project. | |
| commit_message | No | Git commit message. If omitted, the server generates a default message. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| project | Yes | |
| commit_sha | Yes |
update_scheduled_runInspect
Update an existing scheduled model run. schedule_id is required (from list_scheduled_runs). Pass only the fields you want to change: cadence (new cron expression), enabled (pause or resume), branch (switch target branch), model_name (switch target model). Cadence validation: 5-field UTC cron, minimum 15-minute interval. Returns: schedule (dict) — updated schedule summary; message (str) — update summary.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Branch to execute the scheduled run from. Defaults to the project's default branch. | |
| cadence | No | Cron expression or interval string defining when the run executes (e.g. '0 9 * * 1' for Mondays at 9am UTC). | |
| enabled | No | Whether the scheduled run is active. | |
| model_name | No | Model file to execute on the schedule (without .py extension). Defaults to 'run'. | |
| schedule_id | Yes | UUID of the scheduled run to manage. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| schedule | Yes |
write_gsheetDestructiveInspect
Consolidated Google Sheets write tool. Provide spec.mode to choose one operation: replace, append, clear, batch, or new_spreadsheet. Examples: 1) Replace model output in a target range: {"mode":"replace","run_id":"...","output_name":"forecast.json","cell_range":"Forecast!A1"}. 2) Append model output to a tab: {"mode":"append","run_id":"...","output_name":"forecast.json","sheet_name":"History"}.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | Specification object describing the formatting/write/structure operation. See tool description for the schema. | |
| project_name | Yes | Name of the Bridge Town project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!