Skip to main content
Glama

Create GitHub Issue Set

create_issue_set

Split an SDLC plan into GitHub issues, previewing changes by default; pass dryRun false to create them.

Instructions

Split an SDLC plan into GitHub issues. Supports dryRun (default TRUE) - preview mode.

SAFETY: dryRun defaults to true. You MUST explicitly pass dryRun:false to create issues.

Dry-run output is designed to work as a human pre-write confirmation page: it includes a per-issue preview (title/labels/truncated body), warnings for issues missing labels, missing/short bodies, or titles exceeding GitHub's 256-character limit, and the exact repo coordinates that would be written to.

Args:

  • owner, repo: Repository coordinates.

  • titlePrefix (string?): Prefix for every issue title.

  • issues (array): 1-50 issues, each with title, body, labels?, assignees?. Accepts plan_from_context's issueDrafts directly.

  • dryRun (boolean): Default true - preview mode only.

Optional recovery controls belong in request params._meta["io.github.SakuraCianna/agentic-sdlc-mcp/issue-recovery"], never tool arguments:

  • idempotencyKey: 1-128 ASCII characters matching [A-Za-z0-9._:-]+. Use the same key in preview and live metadata and reuse the complete payload when resuming.

  • previewDigest: The 64-character lowercase hex digest from the reviewed preview. Mismatches cause zero writes. The metadata value is a strict object with only those optional fields. Invalid recovery metadata is rejected before GitHub access. Other tool arguments retain their legacy ignored-extra-field behavior.

Returns: Confirmed created/reused issue numbers, per-input created/reused/failed/unknown/pending status and recovery guidance, or a preview + digest. Cancellation stops new writes but cannot establish whether an in-flight write committed. Idempotency recovery checks at most 300 issues including closed ones and fails closed for missing inputs when evidence is incomplete. Markers are correlation data, not authorization; concurrent processes and restarts cannot guarantee exactly-once writes. SDLC_READ_ONLY=true rejects live writes.

Input Schema

NameRequiredDescriptionDefault
repoNoGitHub repo. Falls back to GITHUB_REPO.
ownerNoGitHub owner. Falls back to GITHUB_OWNER.
dryRunNoIf true (default), preview issues without creating them.
issuesYesArray of issues to create (1-50).
titlePrefixNoOptional prefix prepended to every issue title.

Output Schema

NameRequiredDescriptionDefault
countYesNumber of issues previewed or known successful issue references, including previously confirmed issues during recovery.
itemsNoPer-input live results. Unknown means the write may have committed; pending means no request started.
dryRunYesWhether this was a preview-only run.
issuesYesKnown successful issue references (empty in dry run). Inspect items for newly created, reused, or no longer verified references.
previewYesPer-issue preview (title, labels, truncated body) -- populated in dry run only.
failuresYesRejected or unconfirmed writes. Inspect items to distinguish failed from unknown commit status. Empty in dry run and on full success.
recoveryNoRecovery guidance. Even with a key, cross-process races and server restarts cannot guarantee exactly-once creation.
warningsYesHuman-review flags, e.g. missing labels, overlong title, missing/short body.
targetRepoYesRepository targeted by the preview or live batch.
previewDigestNoDigest binding the complete ordered issue payload, target repository and optional request-metadata idempotencyKey. Return it as previewDigest inside request params._meta['io.github.SakuraCianna/agentic-sdlc-mcp/issue-recovery'], never tool arguments.
previewTitlesYesFinal titles (with prefix applied).
trustBoundaryNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv1.11.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / properties / count / description
      Previous value: -"Number of issues previewed or successfully created."New value: +"Number of issues previewed or known successful issue references, including previously confirmed issues during recovery."
    • changedOutput schema / properties / failures / description
      Previous value: -"Issues that could not be created. Empty in dry run and on full success."New value: +"Rejected or unconfirmed writes. Inspect items to distinguish failed from unknown commit status. Empty in dry run and on full success."
    • changedOutput schema / properties / issues / description
      Previous value: -"Created issues (empty in dry run)."New value: +"Known successful issue references (empty in dry run). Inspect items for newly created, reused, or no longer verified references."
    • addedOutput schema / properties / items
      Added value: +{
      +  "description": "Per-input live results. Unknown means the write may have committed; pending means no request started.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "inputIndex": {
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "issue": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "labels": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "number": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "number",
      +          "title",
      +          "url",
      +          "labels"
      +        ],
      +        "type": "object"
      +      },
      +      "reason": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "created",
      +          "reused",
      +          "failed",
      +          "unknown",
      +          "pending"
      +        ],
      +        "type": "string"
      +      },
      +      "title": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "inputIndex",
      +      "title",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / previewDigest
      Added value: +{
      +  "description": "Digest binding the complete ordered issue payload, target repository and optional request-metadata idempotencyKey. Return it as previewDigest inside request params._meta['io.github.SakuraCianna/agentic-sdlc-mcp/issue-recovery'], never tool arguments.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / recovery
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Recovery guidance. Even with a key, cross-process races and server restarts cannot guarantee exactly-once creation.",
      +  "properties": {
      +    "message": {
      +      "type": "string"
      +    },
      +    "retrySafe": {
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "enum": [
      +        "completed",
      +        "partial",
      +        "cancelled",
      +        "timed_out",
      +        "unknown",
      +        "blocked"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "retrySafe",
      +    "message"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changedv1.9.0
    • addedOutput schema / properties / trustBoundary
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "callerAndRepositoryContent": {
      +      "const": "untrusted",
      +      "type": "string"
      +    },
      +    "instructionHandling": {
      +      "const": "never_execute",
      +      "type": "string"
      +    },
      +    "permissionHandling": {
      +      "const": "never_expand",
      +      "type": "string"
      +    },
      +    "secretHandling": {
      +      "const": "never_reveal",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "callerAndRepositoryContent",
      +    "instructionHandling",
      +    "secretHandling",
      +    "permissionHandling"
      +  ],
      +  "type": "object"
      +}
  3. First observedv1.5.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false): it discloses that preview is the default, that SDLC_READ_ONLY=true rejects writes, that cancellation cannot establish whether an in-flight write committed, that idempotency checks cap at 300 issues and fail closed, and that markers are not authorization. This is exactly the mutation-risk context annotations alone cannot carry.

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?

Dense but deliberately sectioned (SAFETY, Args, recovery controls, Returns), with the purpose and the dryRun safety rule front-loaded. Some return-value prose is heavier than needed given an output schema exists, but each section earns its place.

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?

Covers the full decision surface for a destructive-ish batch write: default preview, explicit opt-in for live writes, recovery metadata format and location, per-input status outcomes, and the read-only environment override. 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.

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, but the description adds value beyond the schema: the issues array reuses plan_from_context issueDrafts, titlePrefix semantics are reinforced, and the recovery controls (idempotencyKey format, previewDigest) live in request params._meta rather than as tool arguments — a non-obvious placement the schema does not show.

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?

States a specific verb and resource ('Split an SDLC plan into GitHub issues') and names the source artifact (SDLC plan / plan_from_context issueDrafts). An agent can distinguish this from siblings like create_pr_summary or prepare_work_item immediately.

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?

Strong on the critical usage rule: dryRun defaults to true and you must pass dryRun:false to write. It also states that issues accepts plan_from_context's issueDrafts directly, tying it to a prior sibling in the workflow. It does not explicitly state when to prefer this over other creation siblings, but the context is clear.

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