@@ -37,6 +37,43 @@ end users. Insiders-only flags are not user-toggleable.
3737
3838## Declaring tool availability
3939
40+ ### Issue artifacts
41+
42+ Enable ` --features=issue_artifacts ` (or ` GITHUB_FEATURES=issue_artifacts ` ) to
43+ expose ` issue_artifact_read ` (` method: list | get ` ) and ` issue_artifact_write `
44+ (` method: create | update | delete ` ) in the ` issues ` toolset.
45+ This flag is ** off by default** , including in Insiders mode. Read-only mode
46+ exposes only ` issue_artifact_read ` .
47+
48+ The MCP flag only exposes tools; it does not grant API access. The tools
49+ use the configured authenticated GitHub client and base URL without an
50+ endpoint-specific preview header. They declare ` repo ` in their OAuth challenge
51+ metadata; API access also depends on the token's permissions and repository
52+ access. API failures are returned explicitly; writes are not retried.
53+
54+ Artifact numbers are scoped to their owning issue, not global IDs. Updates
55+ preserve omitted fields, allow ` body: "" ` to clear the body, and cannot change
56+ type. Lists return one explicit ` page ` /` perPage ` with bodies; request successive
57+ pages until fewer than ` perPage ` artifacts are returned. This works with or
58+ without REST ` Link ` headers; the tools do not expose those headers.
59+ Artifact names and bodies are sanitized as user-authored content.
60+ Both tools fail closed in lockdown mode because the reference artifact
61+ response does not identify authors for content-trust checks.
62+
63+ All methods require ` owner ` , ` repo ` , and ` issue_number ` . Get, update, and delete
64+ also require ` artifact_number ` . Create requires ` type ` , ` name ` , and ` body ` ;
65+ an empty body is allowed. Update requires ` name ` , ` body ` , or both. Method-specific
66+ fields are rejected when used with another method.
67+
68+ Create and list's optional type filter support the existing REST API types:
69+ ` generic ` , ` link ` , ` plan ` , and ` embedded_html ` . For ` embedded_html ` , supply HTML
70+ source in ` body ` . Returned artifact types remain unrestricted for forward
71+ compatibility.
72+
73+ Get, create, and update return an ` artifact ` object. List returns a ` list ` object
74+ containing ` artifacts ` , ` page ` , and ` perPage ` ; delete returns a ` deleted ` object
75+ containing ` issue_number ` , ` artifact_number ` , and a confirmation message.
76+
4077Tools, resources, and prompts use ` inventory.NewFeatureRule ` when feature flags
4178change whether they are available. Each rule declares the flags it references
4279and evaluates them with a fail-closed ` FeatureResolver ` , so normal Go boolean
@@ -395,6 +432,30 @@ as output formatting) won't appear here.
395432 - 'blocked_by' - the subject issue is blocked by the related issue.
396433 - 'blocking' - the subject issue blocks the related issue. (string, required)
397434
435+ ### ` issue_artifacts `
436+
437+ - ** issue_artifact_read** - Read issue artifacts
438+ - ** OAuth Challenge Scopes** : ` repo `
439+ - ` artifact_number ` : Required for get: positive issue-scoped artifact number, not its global ID (integer, optional)
440+ - ` issue_number ` : Positive issue number (integer, required)
441+ - ` method ` : (string, required)
442+ - ` owner ` : Repository owner (string, required)
443+ - ` page ` : For list only: page number, starting at 1 (default 1) (integer, optional)
444+ - ` perPage ` : For list only: results per page, from 1 to 100 (default 30) (integer, optional)
445+ - ` repo ` : Repository name (string, required)
446+ - ` type ` : (string, optional)
447+
448+ - ** issue_artifact_write** - Write issue artifacts
449+ - ** OAuth Challenge Scopes** : ` repo `
450+ - ` artifact_number ` : Required for update and delete: positive issue-scoped artifact number, not its global ID (integer, optional)
451+ - ` body ` : Required for create, optional for update: artifact content (HTML source for embedded_html); an empty string clears it (string, optional)
452+ - ` issue_number ` : Positive issue number (integer, required)
453+ - ` method ` : (string, required)
454+ - ` name ` : Required for create, optional for update: nonempty artifact name (string, optional)
455+ - ` owner ` : Repository owner (string, required)
456+ - ` repo ` : Repository name (string, required)
457+ - ` type ` : (string, optional)
458+
398459### ` duplicate_detection `
399460
400461- ** find_duplicate** - Find duplicate issues
0 commit comments