Skip to content
UPG is in early alpha. The specification is still evolving and may change between versions.
Tools/Context & Session/submit_feedback

submit_feedback

Send feedback about the Unified Product Graph (a bug, a feature request, an observation) to the project's triage queue at unifiedproductgraph.org, from any MCP client. Anonymous; no account. SHAPE IT FIRST for actionability, asking the user at most one round of questions (don't guess): a bug wants steps to reproduce, expected vs actual, and severity (`details`); a feature_request wants the underlying problem, the desired outcome, and any current workaround (`details`). CONSENT IS REQUIRED: the tool sends NOTHING unless you pass confirmed:true. Call it first WITHOUT confirmed to get back the exact payload, show that payload to the user (including the auto-collected `context`), and only re-call with confirmed:true after they say yes. PRIVACY: `context` is auto-assembled from the MCP client name/version, the server version, the runtime, and graph SIZE counts only; it never includes node titles, descriptions, or any graph content.

Context & Sessionatomic (single outbound POST). Never reads or writes the local graph.

Arguments

typestringrequired

Intake type: "bug" (something is broken), "feature_request" (something is missing), "observation" (a note/pattern worth recording), or "general".

bugfeature_requestobservationgeneral
titlestringrequired

A concise one-line summary (≤200 chars).

descriptionstringrequired

The full report (≤5000 chars). Make it actionable: enough for someone to act without a follow-up.

detailsobjectoptional

Type-aware structured fields (optional). For a bug: steps_to_reproduce, expected, actual, severity (low|medium|high|critical). For a feature_request: problem, desired_outcome, workaround. Ignored for observation/general.

product_stagestringoptional

Optional product stage the reporter is working at.

confirmedbooleanoptional

CONSENT GATE. Must be true to actually send. Omit (or false) to get back a preview of the exact payload and send nothing.

Returns

On send: { status: "submitted", id, message }.
Without consent: { status: "confirmation_required", preview }.
On a rejected/failed POST: an error result with a clear message (401 bad key, 429 rate-limited, …).