Skip to main content
Glama
brynj-digital

laravel-forge-readonly-mcp

Get Deployment Log

get_deployment_log
Read-onlyIdempotent

Retrieve a deployment's stdout/stderr log to diagnose why a deploy failed. Get the deployment id from list_deployments first.

Instructions

The output of a deployment — the deploy script's stdout/stderr, which is what actually tells you why a deploy failed. Get the deployment id from list_deployments. Requires the site:manage-deploys scope; be aware that scope ALSO grants the ability to deploy, so a strictly read-only token will get a 403 here while list_deployments and get_deployment still work.

Input Schema

NameRequiredDescriptionDefault
siteYesSite id from list_sites.
serverYesServer id the site is on.
deploymentYesDeployment id from list_deployments.
tail_linesNoReturn only the last N lines, where failures appear (default 200). Output is additionally capped by character count, so a very long single line cannot flood the response.
organizationNoOrganisation slug. Optional when the server has a default configured.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.3.0

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation it discloses the critical auth nuance: the required site:manage-deploys scope also grants deploy rights, so a strictly read-only token gets a 403 here even though list_deployments and get_deployment succeed. That is exactly the operational trap an agent needs warned about, and it is not derivable from the annotations.

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?

Three sentences, each carrying distinct payload: what it returns, where the id comes from, and the scope/403 caveat. Nothing is padding and the most consequential warning is not buried.

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?

With no output schema, the description correctly describes the return value (deploy script stdout/stderr), covers the prerequisite scope and its failure mode, and the schema fully documents parameters — nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters and the tail_lines cap are already documented in the schema. The description confirms the deployment id comes from list_deployments but adds no syntax or format detail beyond the schema, so the baseline 3 is appropriate.

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?

It names a specific verb+resource (the deployment's stdout/stderr log) and immediately distinguishes it from sibling reads by explaining it 'is what actually tells you why a deploy failed', which separates it from get_deployment (metadata) and get_deployment_script (the script itself). An agent can pick it out without opening a schema.

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?

It gives clear usage context (diagnosing failed deploys) and tells the agent where to source the id ('Get the deployment id from list_deployments'). It stops short of explicitly naming the neighbouring reads it is not, so the when-not guidance is implied rather than stated.

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