# Drp: developer file host with a built-in MCP server Drp lets an AI client post images, markdown, files, runnable HTML, code, and reports, then share clean links (https://drp.dev/r/) with a team. You send the bytes; Drp hosts them. Docs: https://drp.dev/docs Agent guide: https://drp.dev/docs/agents MCP tool reference: https://drp.dev/docs/mcp ## Connect MCP server (Streamable HTTP): https://mcp.drp.dev - OAuth (preferred): add the URL with no key. Unauthenticated calls return 401 with WWW-Authenticate -> resource metadata -> authorization server https://api.drp.dev (OpenID/OAuth: dynamic client registration + PKCE). Use the access token as the bearer. - API key: Authorization: Bearer drp_live_... (created at https://drp.dev/app/settings/keys) ## Orient - whoami() -> account + default team drops land in - list_teams() -> team slugs you can post to - list_folders(team?) -> folders (with counts) ## Post (send content as base64: Drp hosts it; do not host elsewhere) - post_image{ imageBase64|imageUrl, contentType, title?, visibility?, team?, folder? } - post_markdown{ body, title?, visibility?, team?, folder? } - post_html{ body /* full HTML; runs sandboxed/isolated */, ... } - post_code{ filename, content /* text; highlighted, read-only */, contentType?, ... } - upload_file{ filename, contentBase64|contentUrl, contentType, ... } // new video/audio uploads are refused on the free release; code files render highlighted - post_report{ body /* markdown with ![alt](drp:slot) */, images:[{slot,imageBase64|imageUrl,contentType}], ... } - add_report_image{ dropId, slot, imageBase64|imageUrl, contentType } // one image per call; fills ![alt](drp:slot) if present, else APPENDS to the bottom (markdown auto-upgrades to report) ## Read / update (iterate on a doc, e.g. research a PR as you go) - get_drop{ dropId } // returns markdown body, title, kind, slots/assets, url - append_drop{ dropId, content, redact? } // append markdown using an ID or Drp link, no full rewrite needed - update_drop{ dropId, body?, title?, visibility?, folder? } // replace the full body or edit metadata Pattern: post_markdown/post_report once → keep dropId → append_drop for running notes and lists. ## Delivery workflows - drp_full{ task?, publicRelease? } -> execution contract for review, evidence, and release - review_changes{ diff, source?, publish? } -> findings, merge risk, and evidence plan; stores nothing by default - Drp Evidence: capture mandatory proof, then create the private internal report with post_report - Drp Release: duplicate the internal report, rewrite and redact the copy, then make only the copy public - Natural-language trigger: ask the agent to “use drp-full” for the complete workflow ## Manage - share{ dropId, visibility, expiresIn? } - list_drops{ team?, folder?, kind?, limit? } - create_folder{ name, team? } ## Rules - visibility: private | team | public (default team). Use public for shareable/changelog links. - team: omit = your default/personal team; pass a slug to target a team. - folder: any name; auto-created. - size: ~24 MB inline soft cap, 100 MB hard. Many report images -> add_report_image one per call. - every post returns a drp.dev/r/ URL; surface it to the user. ## Changelog Effective public drops in a team are published at https://drp.dev/c/. Folder changelogs use https://drp.dev/c//.