Skip to main content
Glama
openl-tablets

OpenL MCP Server

Official

Merge Project Branches

openl_merge_project_branches
Destructive

Merges project branches in either direction while checking permissions and locks before writing, and reports conflicts for user resolution instead of auto-choosing.

Instructions

Attempt to merge project branches. The tool first repeats the relationship and permission precheck: up-to-date returns without a write, and permission/lock blockers fail before merge. The precheck does not predict conflicts, so an allowed attempt can still return status='conflicts'. mode='receive' merges otherBranch into the current branch; mode='send' merges the current branch into otherBranch. A conflict result creates read-only, session-bound conflict state: inspect it on this same MCP server, then hand resolution to the user in Studio or cancel the pending state. Never choose OURS or THEIRS automatically. force is only for an eligible protected-target bypass and requires confirmForce=true.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeYesreceive merges the other branch into the project's current branch; send merges the current branch into otherBranch.
forceNoBypass eligible protected-target restrictions. Default false. Use only after Studio reports blockedBy='bypass-required'.
projectIdYesProject ID returned by backend. Use the exact 'projectId' value from openl_list_projects() response without modification or reformatting.
otherBranchYesThe other branch: source for receive mode, target for send mode. Discover all merge targets with openl_list_project_branches(scope='repository').
confirmForceNoMust be true when force=true, confirming the protected-branch bypass.
response_formatNoResponse format: 'json' for structured, round-trippable data (default), 'markdown' for human-readable output, 'markdown_concise' for a brief summary (1-2 paragraphs), or 'markdown_detailed' for full details with contextjson
Behavior5/5

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

Goes far beyond what destructiveHint/openWorldHint already provide: discloses the repeated precheck, the no-write short-circuit on up-to-date, precheck's inability to predict conflicts, the read-only session-bound conflict state, the force/confirmForce coupling, and the explicit prohibition on auto-resolving conflicts. This is extensive behavioral disclosure that meaningfully reduces agent surprise. No contradiction with the annotations — the 'attempt' language and destructiveHint are consistent.

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

Conciseness4/5

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

Approximately 150 words and dense, but every sentence earns its place given the destructive, two-mode, conflict-lifecycle complexity. Front-loaded correctly: purpose first, then precheck behavior, then mode semantics, then conflict handling, then guardrails. Slightly long, yet the length is commensurate with the operational risk the tool carries.

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

Completeness3/5

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

Despite high complexity (6 params, two modes, conflict lifecycle, force bypass) and no output schema, the description covers precheck outcomes, the status='conflicts' result, and the conflict-state lifecycle well. However, it never enumerates the other status values an agent may receive (e.g., what a successful merge returns), and no output schema exists to fill that gap — leaving agents to guess at the full response shape for round-tripping.

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 coverage is 100%, so the baseline is 3 with the schema doing the heavy lifting. The description adds genuine value on top: clarifies the directionality of mode ('receive merges otherBranch into the current branch; send merges the current branch into otherBranch'), tightens force semantics to 'eligible protected-target bypass' with confirmForce coupling, and explains conflict-state consequences of an allowed attempt. Slight redundancy with schema text, but the enrichment justified 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?

Opens with 'Attempt to merge project branches' — a specific verb plus resource, with the 'attempt' qualifier accurately signaling open-world failure. The description distinguishes this from sibling conflict-inspection tools (openl_get_merge_conflicts, openl_read_merge_conflict_file, openl_cancel_merge_conflicts) by centering on the merge execution itself and the conflict state it creates.

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?

Provides strong when-to-use guidance: precheck short-circuits (up-to-date returns without a write, permission/lock blockers fail early), force is reserved for protected-target bypass with confirmForce=true, and the explicit guardrail 'Never choose OURS or THEIRS automatically.' The one gap is that conflict inspection and cancellation are described generically ('inspect it on this same MCP server... cancel the pending state') rather than naming the sibling tools openl_get_merge_conflicts, openl_read_merge_conflict_file, and openl_cancel_merge_conflicts.

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

Install Server

Other Tools

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/openl-tablets/openl-mcp'

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