uploads.sh
Host files from coding agents; stage on a branch and attach to GitHub PRs.
Connector by uploads.shOfficial · Domain verified by the MCP Registry
Install
Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/uploads-sh-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://agents.uploads.sh/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: version-control, file-management
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 19 read · 8 write · 10 delete
- Secrets
- 2 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 37
Read from the source code; the running server may list different tools.
Read 19 · Look things up without changing anything.
changelogdoctorfeed_getfind_filesgallery_find_by_referencegallery_getget_metadatalistlist_activitylist_heldlist_metadata_keyslist_repo_files
Show 7 more tools
look_at_filesrepo_link_statussearch_docssearch_filesstagedusagewhoami
Write 8 · Create, change, send or run things.
approvefeed_creategallery_addgallery_creategallery_linkreconcilereplyreport
Delete 10 · Delete, drop, revoke or wipe things.
attachcommentdeletepromotepurge_expiredputscreenshotset_metadatasign_upload_urlunstage
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
AuthorizationUPLOADS_TOKEN
Other settings (environment variables or headers).
UPLOADS_API_URLUPLOADS_WORKSPACE
Network hosts it talks to 1
agents.uploads.sh· found in remote endpoint, install command
Files it touches
- Any path the agent passes to its tools
Tools (37)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
approveApprove held filesRelease uploads held for review (see `list_held`): pass `keys`, or `pr`/`issue` + `repo` to approve every held file there. The file returns at the same URL and the managed PR comment re-syncs. Check the file first: if it shows a real credential, rotate it and delete the file instead of approving. Same as `uploads approve`.
attachAttach to GitHubcan change or delete dataUpload one or more files as stable PR/issue attachments (in parallel) and maintain a managed GitHub comment. Returns `uploads` and `failures` (one bad file does not abort the batch). Each success has `url`, `embedUrl`, and `markdown` (prefer embedUrl for GitHub). With no pr/issue, targets the current branch PR, and files already staged for that branch are promoted into it (`promotion`/`promoteError`; renamed branches are followed automatically, or name the old branch with fromBranch). Attachments are public and keys are predictable; upload only non-sensitive media.
changelogProduct changelogread-onlyRead recent uploads.sh product updates (platform and CLI). Returns the latest entries with titles, dates, summaries, and a link to the full changelog at https://uploads.sh/changelog. Same as `uploads changelog`.
commentSync attachments commentcan change or delete dataRefresh the managed attachments comment on a GitHub PR or issue without re-uploading. Use after deleting media. Requires `repo` and exactly one of `pr`/`issue`. `held` counts files there held for review; see `list_held`.
deleteDelete filecan change or delete dataPermanently delete one uploaded file by key, along with its metadata. A files:write token can delete a gh/ object the server stamped as its upload. Older files and any other object need files:delete. Deleting a PR or issue attachment refreshes the managed comment.
doctorDiagnose setupread-onlyDiagnose the configuration: API health, token auth, and workspace/token alignment. Returns the same report as `uploads doctor --json`, including hints.
feed_createCreate change feedCreate a public newest-first screenshot feed (same product as CLI `uploads feed create`). Pass `repo` alone for the whole GitHub repo. Pass `pr` plus `repo` — or `github` as owner/repo#123 / a GitHub PR URL — to scope that same feed to one pull request. `issue` does the same for an issue. Optional `path` filters by page-path metadata. Creating the same scope again returns the existing URL. This is a live query, not a curated gallery. Anyone who knows the URL can view it. See https://uploads.sh/docs/feeds.
feed_getGet change feedread-onlyGet a workspace-owned change feed by ID, including its current newest-first screenshots and the canonical public /c/<id> URL. Each item includes pageUrl (`/c/<id>/<item>`) for the pager. The feed may be repo-wide or scoped to one pull request / issue (see `number` and `kind` on the result). Anyone with the URL can view the media.
find_filesFind filesread-onlySearch files by metadata (`filters`) and/or filename substring (`name`). At least one is required.
gallery_addAdd gallery itemAdd one existing, publicly served workspace object to a gallery. The tool reads the current version before writing and does not upload or delete the object.
gallery_createCreate galleryCreate a public ordered media gallery in this workspace. The returned canonical URL is suitable for an agent response, but anyone who knows it can view the gallery and its media.
gallery_find_by_referenceFind galleriesread-onlyFind galleries in this workspace linked to an external reference. Returns canonical public gallery URLs without contacting the provider.
gallery_getGet galleryread-onlyGet a workspace-owned gallery, including its ordered media and canonical public URL. Gallery media is public to anyone with the URL.
gallery_linkLink galleryLink a gallery to an external reference. Uses provider-neutral fields; github currently accepts owner/repo#number or a strict GitHub issue/PR URL. No GitHub credentials or API calls are used.
get_metadataGet metadataread-onlyRead the queryable tags on one file. Returns `{ metadata }` (empty when none).
Show 22 more tools
listList filesread-onlyList uploaded objects in the workspace, optionally filtered by key prefix. Paginate with cursor; each item includes its public URL when the workspace has one.
list_activityList recent activityread-onlyRecent GitHub-tagged activity in this workspace, grouped by pull request (default) or by repo. Pull rows are pull requests that received media tagged gh.kind=pull, newest last_media_at first. The default window is 90 days. Set all to true to lift it. Optional repo and state (open, closed, or merged) narrow those rows. A title is included only when the repo is linked to this workspace. Repo rows are distinct gh.repo values, newest metadata updated_at first. These times are not the object's uploaded-at. Untagged uploads are absent. This does not publish a feed. Pass cursor back unchanged with th…
list_heldList held filesread-onlyList uploads held for review. The classifier holds a file it thinks shows a secret (an API key, a password, a token) or sensitive personal data (an ID, a card number). A held file stays out of the managed PR comment, feeds, galleries, and its /f/ page, and its raw URL may 404, until a workspace member approves it with `approve`. Pass `pr`/`issue` + `repo` for one PR or issue, or `prefix`. Each item has `reason` (`secret: api_key`, `pii: financial`) and `area`, an approximate box around the flagged content as fractions of the image (null when unknown).
list_metadata_keysList metadata keysread-onlyList metadata keys in the workspace (with counts). Pass `key` to list that key's values instead. Use before `find_files`.
list_repo_filesList files in a reporead-onlyFiles tagged with gh.repo for one repository, newest metadata updated_at first. That time is not the object's uploaded-at. repo is owner/name. Optional pr matches gh.number. Optional path matches the path tag exactly. type is a filename suffix class: screenshot, video, or other. PDFs are other. Promoted copies (gh.status=promoted) are omitted. This does not publish a feed. Pass cursor back unchanged with the same arguments for the next page.
look_at_filesDescription is built at runtime.
promotePromote staged attachmentscan change or delete dataCopy staged or existing files into a PR's stable `gh/…/pull/…` prefix, then refresh the managed comment. Pass `branch` and/or `keys`. Requires `repo` and `pr`.
purge_expiredPurge expired filescan change or delete dataDelete objects older than the workspace retentionDays setting, then reconcile. Skips if retention is unset. Requires files:delete.
putUpload filecan change or delete dataUpload a file (or files) and get a public URL plus GitHub-ready markdown. Prefer the returned `embedUrl` in GitHub markdown. All uploads are public. Pass `pr`+`repo` to attach to a PR (stable key + managed comment). A result with `holdCheck: "pending"` may still be held for review if it shows a secret; `comment.held` counts files on the PR or issue held for review; see `list_held`. Pass `branch`+`repo` to stage for a PR that does not exist yet; if that branch already has one open PR (repo linked to this workspace), the file attaches to it instead. This server has no git, so in a checkout read …
reconcileReconcile usageRebuild usage ledger bytes/objects from storage (source of truth). Preserves the monthly upload counter. Requires files:write.
replyAnswer the person and end. This is the only way your answer reaches them.
repo_link_statusCheck repo bindingread-onlyWhether files staged for a repo will auto-attach into that repo's PRs from this workspace. Returns a tri-state `binding`: "self" (this repo is bound to this workspace — staged files will auto-attach), "other" (bound to a different workspace — they will not; the owning workspace is deliberately never disclosed), or "none" (unbound).
reportSend diagnostic reportSend an explicit diagnostic report to the uploads team (message + optional text log). Only call this when the user asked to submit feedback, a bug report, or error logs — never automatically. Do not include tokens, secrets, or private file contents. Same as `uploads report`.
screenshotCapture screenshotcan change or delete dataCapture a URL or local HTML file and host it. Shares put's attach, comment, and metadata options. `via=local` needs Chrome; `via=remote` renders server-side. localhost URLs are local-only.
search_docsSearch uploads.sh docsread-onlySearch the public uploads.sh documentation. Use this to answer questions about uploads.sh product workflows, including: attaching screenshots and video to GitHub PRs and issues; staging files before a PR exists; galleries; the GitHub App; comment config (.uploads.yml); hosted MCP and agent setup; screenshot capture and annotate; plans and limits; bring-your-own bucket. Same as `uploads docs`. Returns titles, URLs, and snippets. Pass `page` to fetch the full markdown of one page (slug, path, or URL). Omit `query` to list the catalog.
search_filesSearch public files in the connected uploads.sh workspaces, newest first. Give at least one of query, kind, screen, or surface.
set_metadataSet metadatacan change or delete dataSet or delete queryable tags on an existing file. `set` wins over `delete` for the same key. Tags appear on the public file page — do not store secrets. Requires `set` and/or `delete`.
sign_upload_urlSign upload URLscan change or delete dataDescription is built at runtime.
stagedList staged filesread-onlyList files staged for a git branch and whether they will auto-attach when a PR opens. Returns `{ repo, branch, files, binding }`.
unstageUnstage filesClear staged files for a branch, or specific keys, without deleting them. Sets gh.status=unstaged so they drop out of auto-promotion. Pass repo and branch, or keys. Needs files:write.
usageShow usageread-onlyWorkspace storage and monthly upload counters (and remaining headroom when budgets are configured).
whoamiWho am Iread-onlyShow the current uploads.sh identity: the workspace this token acts in and its scopes. A successful result also means the server is up.
Compare and alternatives
Featured in
Signals
- Stars
- 19
- Forks
- 3
- Open issues
- 78
- Weekly downloads
- 979
- Last commit
- Oct 23, 2026 (5 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
- Last package publish
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
sh.uploads/mcp- Version
- 0.60.0
- Auth
- Bearer token, API key
- Packages
- npm @buildinternet/uploads
- License
- Apache-2.0
- Repository
- github.com/buildinternet/uploads
- Website
- uploads.sh
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
uploads.sh MCP server. Agent Mart. https://agentmart.dev/connectors/uploads-sh-mcp (last updated 2026-10-24)