You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add confidence parameter to issue mutation MCP tools
Add an optional confidence integer parameter (0–100) to update_issue_type,
update_issue_labels, and set_issue_fields MCP tools. The confidence score
is passed through to the REST/GraphQL API on mutation calls.
- Rename structs to WithIntent (labelWithIntent, issueTypeWithIntent)
- Add confidence schema property (integer, min 0, max 100) with prompt
guidance describing what different confidence levels represent
- Update tool descriptions to encourage including confidence scores
- Pass confidence in the API request body alongside rationale/suggest
Closesgithub/plan-track-agentic-toolkit#219
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
-`confidence`: How confident you are in this choice (0–100). 90–100: very high — clear signal or explicit user request. 70–89: high — strong signals, likely correct. 50–69: moderate — reasonable inference but ambiguous. 30–49: low — best guess, user review recommended. 0–29: very low — speculative. (number, optional)
201
202
-`is_suggestion`: If true, this issue type change is sent to the API as a suggestion (suggest:true) rather than an applied value. Whether the type is applied or recorded as a proposal is determined by the API. (boolean, optional)
202
203
-`issue_number`: The issue number to update (number, required)
203
204
-`issue_type`: The issue type to set (string, required)
Copy file name to clipboardExpand all lines: pkg/github/__toolsnaps__/set_issue_fields.snap
+7-1Lines changed: 7 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,13 +4,19 @@
4
4
"openWorldHint": true,
5
5
"title": "Set Issue Fields"
6
6
},
7
-
"description": "Set issue field values for an issue. Fields are organization-level custom fields (text, number, date, or single select). Use this to create or update field values on an issue.",
7
+
"description": "Set issue field values for an issue. Fields are organization-level custom fields (text, number, date, or single select). Use this to create or update field values on an issue. When setting values, include a confidence score (0–100) reflecting how certain you are about the choice.",
8
8
"inputSchema": {
9
9
"properties": {
10
10
"fields": {
11
11
"description": "Array of issue field values to set. Each element must have a 'field_id' (string, the GraphQL node ID of the field) and exactly one value field: 'text_value' for text fields, 'number_value' for number fields, 'date_value' (ISO 8601 date string) for date fields, or 'single_select_option_id' (the GraphQL node ID of the option) for single select fields. Set 'delete' to true to remove a field value.",
12
12
"items": {
13
13
"properties": {
14
+
"confidence": {
15
+
"description": "How confident you are in this choice (0–100). 90–100: very high — clear signal or explicit user request. 70–89: high — strong signals, likely correct. 50–69: moderate — reasonable inference but ambiguous. 30–49: low — best guess, user review recommended. 0–29: very low — speculative.",
16
+
"maximum": 100,
17
+
"minimum": 0,
18
+
"type": "integer"
19
+
},
14
20
"date_value": {
15
21
"description": "The value to set for a date field (ISO 8601 date string)",
Copy file name to clipboardExpand all lines: pkg/github/__toolsnaps__/update_issue_labels.snap
+7-1Lines changed: 7 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
"openWorldHint": true,
5
5
"title": "Update Issue Labels"
6
6
},
7
-
"description": "Update the labels of an existing issue. This replaces the current labels with the provided list.",
7
+
"description": "Update the labels of an existing issue. This replaces the current labels with the provided list. When setting values, include a confidence score (0–100) reflecting how certain you are about the choice.",
8
8
"inputSchema": {
9
9
"properties": {
10
10
"issue_number": {
@@ -22,6 +22,12 @@
22
22
},
23
23
{
24
24
"properties": {
25
+
"confidence": {
26
+
"description": "How confident you are in this choice (0–100). 90–100: very high — clear signal or explicit user request. 70–89: high — strong signals, likely correct. 50–69: moderate — reasonable inference but ambiguous. 30–49: low — best guess, user review recommended. 0–29: very low — speculative.",
27
+
"maximum": 100,
28
+
"minimum": 0,
29
+
"type": "integer"
30
+
},
25
31
"is_suggestion": {
26
32
"description": "If true, this label is sent to the API as a suggestion (suggest:true) rather than an applied label. Whether the label is applied or recorded as a proposal is determined by the API.",
Copy file name to clipboardExpand all lines: pkg/github/__toolsnaps__/update_issue_type.snap
+7-1Lines changed: 7 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,15 @@
4
4
"openWorldHint": true,
5
5
"title": "Update Issue Type"
6
6
},
7
-
"description": "Update the type of an existing issue (e.g. 'bug', 'feature').",
7
+
"description": "Update the type of an existing issue (e.g. 'bug', 'feature'). When setting values, include a confidence score (0–100) reflecting how certain you are about the choice.",
8
8
"inputSchema": {
9
9
"properties": {
10
+
"confidence": {
11
+
"description": "How confident you are in this choice (0–100). 90–100: very high — clear signal or explicit user request. 70–89: high — strong signals, likely correct. 50–69: moderate — reasonable inference but ambiguous. 30–49: low — best guess, user review recommended. 0–29: very low — speculative.",
12
+
"maximum": 100,
13
+
"minimum": 0,
14
+
"type": "integer"
15
+
},
10
16
"is_suggestion": {
11
17
"description": "If true, this issue type change is sent to the API as a suggestion (suggest:true) rather than an applied value. Whether the type is applied or recorded as a proposal is determined by the API.",
Description: t("TOOL_UPDATE_ISSUE_LABELS_DESCRIPTION", "Update the labels of an existing issue. This replaces the current labels with the provided list."),
283
+
Description: t("TOOL_UPDATE_ISSUE_LABELS_DESCRIPTION", "Update the labels of an existing issue. This replaces the current labels with the provided list. When setting values, include a confidence score (0–100) reflecting how certain you are about the choice."),
"State the concrete signal (e.g. 'Reports a crash when saving' → bug).",
322
323
MaxLength: jsonschema.Ptr(280),
323
324
},
325
+
"confidence": {
326
+
Type: "integer",
327
+
Description: "How confident you are in this choice (0–100). 90–100: very high — clear signal or explicit user request. 70–89: high — strong signals, likely correct. 50–69: moderate — reasonable inference but ambiguous. 30–49: low — best guess, user review recommended. 0–29: very low — speculative.",
328
+
Minimum: jsonschema.Ptr(0.0),
329
+
Maximum: jsonschema.Ptr(100.0),
330
+
},
324
331
"is_suggestion": {
325
332
Type: "boolean",
326
333
Description: "If true, this label is sent to the API as a suggestion (suggest:true) rather than an applied label. "+
returnutils.NewToolResultError("each label must be a string or an object with 'name' and optional 'rationale' and/or 'is_suggestion'"), nil, nil
419
+
returnutils.NewToolResultError("each label must be a string or an object with 'name' and optional 'rationale', 'confidence', and/or 'is_suggestion'"), nil, nil
Description: t("TOOL_UPDATE_ISSUE_TYPE_DESCRIPTION", "Update the type of an existing issue (e.g. 'bug', 'feature')."),
512
+
Description: t("TOOL_UPDATE_ISSUE_TYPE_DESCRIPTION", "Update the type of an existing issue (e.g. 'bug', 'feature'). When setting values, include a confidence score (0–100) reflecting how certain you are about the choice."),
"State the concrete signal (e.g. 'Reports a crash when saving' → bug, 'Asks for dark mode support' → feature).",
524
543
MaxLength: jsonschema.Ptr(280),
525
544
},
545
+
"confidence": {
546
+
Type: "integer",
547
+
Description: "How confident you are in this choice (0–100). 90–100: very high — clear signal or explicit user request. 70–89: high — strong signals, likely correct. 50–69: moderate — reasonable inference but ambiguous. 30–49: low — best guess, user review recommended. 0–29: very low — speculative.",
548
+
Minimum: jsonschema.Ptr(0.0),
549
+
Maximum: jsonschema.Ptr(100.0),
550
+
},
526
551
"is_suggestion": {
527
552
Type: "boolean",
528
553
Description: "If true, this issue type change is sent to the API as a suggestion (suggest:true) rather than an applied value. "+
Description: t("TOOL_SET_ISSUE_FIELDS_DESCRIPTION", "Set issue field values for an issue. Fields are organization-level custom fields (text, number, date, or single select). Use this to create or update field values on an issue."),
937
+
Description: t("TOOL_SET_ISSUE_FIELDS_DESCRIPTION", "Set issue field values for an issue. Fields are organization-level custom fields (text, number, date, or single select). Use this to create or update field values on an issue. When setting values, include a confidence score (0–100) reflecting how certain you are about the choice."),
"State the concrete signal (e.g. 'Reports a crash when saving' → high priority).",
957
995
MaxLength: jsonschema.Ptr(280),
958
996
},
997
+
"confidence": {
998
+
Type: "integer",
999
+
Description: "How confident you are in this choice (0–100). 90–100: very high — clear signal or explicit user request. 70–89: high — strong signals, likely correct. 50–69: moderate — reasonable inference but ambiguous. 30–49: low — best guess, user review recommended. 0–29: very low — speculative.",
1000
+
Minimum: jsonschema.Ptr(0.0),
1001
+
Maximum: jsonschema.Ptr(100.0),
1002
+
},
959
1003
"is_suggestion": {
960
1004
Type: "boolean",
961
1005
Description: "If true, this field value is sent to the API as a suggestion (suggest:true) rather than an applied value. "+
0 commit comments