Skip to main content
Glama

rush_pr_synthesize

Generate a semantic pull request markdown card from a git diff and evidence at a specified path, with optional file export when artifact writing is allowed.

Instructions

Synthesize semantic PR markdown card from git diff and evidence at ; export requires --allow-artifact-write.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
base_refNomain
export_pathNo
allow_artifact_writeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rawNo
toolNo
engineNo
statusNo
metricsNo
summaryNo
findingsNo
metadataNo
artifactsNo
duration_msNo
review_kindNo
engine_versionNo
review_providerNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv0.2.2
    • addedInput schema / properties / allow_artifact_write
      Added value: +{
      +  "default": false,
      +  "title": "Allow Artifact Write",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / base_branch
      Removed value: -{
      -  "default": "main",
      -  "title": "Base Branch",
      -  "type": "string"
      -}
    • addedInput schema / properties / base_ref
      Added value: +{
      +  "default": "main",
      +  "title": "Base Ref",
      +  "type": "string"
      +}
    • addedInput schema / properties / export_path
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "path",
      +      "type": "string"
      +    },
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Export Path"
      +}
    • addedInput schema / properties / path
      Added value: +{
      +  "format": "path",
      +  "title": "Path",
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[
      +  "path"
      +]
    • changedInput schema / title
      Previous value: -"mcp_rush_pr_synthesizeArguments"New value: +"__call__Arguments"
    • addedOutput schema / $defs
      Added value: +{
      +  "Finding": {
      +    "description": "One issue from any engine. total=False because not all engines\npopulate every field (e.g. heuristics may lack `rule`).",
      +    "properties": {
      +      "column": {
      +        "title": "Column",
      +        "type": "integer"
      +      },
      +      "evidence": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": true,
      +            "type": "object"
      +          },
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Evidence"
      +      },
      +      "fingerprint": {
      +        "title": "Fingerprint",
      +        "type": "string"
      +      },
      +      "fix": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": true,
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Fix"
      +      },
      +      "freshness": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Freshness"
      +      },
      +      "line": {
      +        "title": "Line",
      +        "type": "integer"
      +      },
      +      "message": {
      +        "title": "Message",
      +        "type": "string"
      +      },
      +      "patch": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Patch"
      +      },
      +      "path": {
      +        "title": "Path",
      +        "type": "string"
      +      },
      +      "provenance": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Provenance"
      +      },
      +      "remediation": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": true,
      +            "type": "object"
      +          },
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Remediation"
      +      },
      +      "rule": {
      +        "title": "Rule",
      +        "type": "string"
      +      },
      +      "rule_id": {
      +        "title": "Rule Id",
      +        "type": "string"
      +      },
      +      "severity": {
      +        "enum": [
      +          "info",
      +          "warn",
      +          "error"
      +        ],
      +        "title": "Severity",
      +        "type": "string"
      +      },
      +      "suggested_fix": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Suggested Fix"
      +      }
      +    },
      +    "title": "Finding",
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / properties / artifacts
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Artifacts"
      +}
    • addedOutput schema / properties / duration_ms
      Added value: +{
      +  "default": null,
      +  "title": "Duration Ms",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / engine
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Engine"
      +}
    • addedOutput schema / properties / engine_version
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Engine Version"
      +}
    • addedOutput schema / properties / findings
      Added value: +{
      +  "default": null,
      +  "items": {
      +    "$ref": "#/$defs/Finding"
      +  },
      +  "title": "Findings",
      +  "type": "array"
      +}
    • addedOutput schema / properties / metadata
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Metadata"
      +}
    • addedOutput schema / properties / metrics
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Metrics"
      +}
    • addedOutput schema / properties / raw
      Added value: +{
      +  "anyOf": [
      +    {},
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Raw"
      +}
    • removedOutput schema / properties / result
      Removed value: -{
      -  "title": "Result",
      -  "type": "string"
      -}
    • addedOutput schema / properties / review_kind
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "heuristic",
      +        "llm"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Review Kind"
      +}
    • addedOutput schema / properties / review_provider
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Review Provider"
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "default": null,
      +  "enum": [
      +    "ok",
      +    "warn",
      +    "fail",
      +    "error",
      +    "skipped"
      +  ],
      +  "title": "Status",
      +  "type": "string"
      +}
    • addedOutput schema / properties / summary
      Added value: +{
      +  "default": null,
      +  "title": "Summary",
      +  "type": "string"
      +}
    • addedOutput schema / properties / tool
      Added value: +{
      +  "default": null,
      +  "title": "Tool",
      +  "type": "string"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "result"
      -]
    • changedOutput schema / title
      Previous value: -"mcp_rush_pr_synthesizeOutput"New value: +"ToolResult"
  2. First observedv0.3.0

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does disclose one important behavior: export requires --allow-artifact-write. However, it does not clarify side effects, whether output is returned directly, or what happens when export is not permitted.

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 a single compact sentence that front-loads the core action and input source, then states the key export condition. No filler or redundant wording is present.

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

Completeness2/5

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

While an output schema exists, the description still omits important context such as the meaning of base_ref, the relationship between export_path and allow_artifact_write, and expected input semantics for evidence. This is insufficient for a tool with four parameters and no annotation support.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate for all four parameters. It adds meaning for 'path' as the evidence location and implies that 'allow_artifact_write' gates export, but it leaves 'base_ref' and 'export_path' semantically unexplained.

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 clearly identifies a specific verb ('Synthesize') and resource ('semantic PR markdown card'), and specifies the input sources ('git diff and evidence at <path>'). This distinguishes it from sibling tools like rush_review or rush_commit_msg.

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

Usage Guidelines3/5

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

The description implies the tool is used when git diff and evidence are available, but it does not explicitly state when to use this tool versus alternative Rush tools, nor does it provide exclusions. The export requirement is a usage hint, not a full routing guideline.

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