Skip to content

feat(attachments): add MCP attachment tools and metadata support#413

Open
jmynes wants to merge 6 commits into
mainfrom
add-attachments
Open

feat(attachments): add MCP attachment tools and metadata support#413
jmynes wants to merge 6 commits into
mainfrom
add-attachments

Conversation

@jmynes

@jmynes jmynes commented Mar 7, 2026

Copy link
Copy Markdown
Owner

Summary

Note: This code was written by an external collaborator (no GitHub account) and applied from a git bundle.

Corresponds to PUNT-334.

  • Add MCP tools for managing ticket attachments: add_attachment, list_attachments, remove_attachment, download_attachment, and update_attachment
  • Expand allowed upload types to include JSON, JSONL, and Markdown
  • Add semantic metadata fields to attachments: purpose (plan, transcript, screenshot, etc.), sourceCommit, and commitDirtyStatus for AI agent context tracking
  • New streaming download API endpoint for retrieving attachment files
  • UI updates: purpose badges and commit hashes shown in attachment list

Commits

  • e989470 feat(mcp): add file attachment tools (add, list, remove)
  • b4f976e feat(upload): add JSON as allowed attachment type
  • b0aa839 feat(upload): add JSONL as allowed attachment type
  • e0b7701 feat(upload): add Markdown as allowed attachment type
  • 1b92d1e feat(mcp): add download_attachment tool
  • cb2e9b7 feat(attachments): add purpose, sourceCommit, and commitDirtyStatus metadata

Test plan

  • Verify MCP attachment tools work end-to-end (add, list, download, update, remove)
  • Confirm JSON, JSONL, and Markdown files can be uploaded via UI and MCP
  • Check purpose badges and commit metadata render in attachment list
  • Run pnpm test to confirm no regressions

Some sucker that doesnt know how to be private and others added 6 commits February 28, 2026 12:37
Add three new MCP tools for managing ticket attachments:
- add_attachment: upload a local file and attach it to a ticket
- list_attachments: list all attachments on a ticket
- remove_attachment: remove an attachment by ID or filename

Adds multipart/form-data support to the MCP API client for file uploads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add application/json to allowed document types across the upload
pipeline, admin settings, client defaults, schema defaults, MCP
extension map, fuzz tests, and docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add application/jsonl to allowed document types across the upload
pipeline, admin settings, client defaults, schema defaults, MCP
extension map, fuzz tests, and docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add text/markdown to allowed document types across the upload pipeline,
admin settings, client defaults, schema defaults, MCP extension map,
fuzz tests, and docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ability to download ticket attachments to local filesystem via MCP.
Includes a new streaming API endpoint and MCP tool that supports lookup
by attachment ID or filename.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…etadata

Add semantic metadata fields to attachments so AI agents can tag what an
attachment represents (plan, transcript, screenshot, etc.) and which
codebase version was being referenced.

- Add AttachmentPurpose enum and three nullable fields to Prisma schema
- Update POST/PATCH API routes, export schema, and MCP tools
- Add update_attachment MCP tool for editing metadata on existing attachments
- Display purpose badges and commit hashes in attachment list UI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Mar 7, 2026

Copy link
Copy Markdown

Thank you for your contribution! Before we can merge this PR, you need to sign our Contributor License Agreement.

To sign the CLA, please reply to this comment with:

I have read the CLA Document and I hereby sign the CLA

You only need to sign once. After signing, all your future contributions are covered.


I have read the CLA Document and I hereby sign the CLA


Some sucker that doesnt know how to be private seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

@jmynes jmynes self-assigned this Mar 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant