For AI agents
A concise, accurate setup + usage reference for an AI client connecting to Drp. A plain-text copy is at /llms.txt.
Connect
MCP server (Streamable HTTP): https://mcp.drp.dev
- OAuth (preferred): add the URL with no key; on a 401 the server returns
WWW-Authenticatepointing athttps://api.drp.dev(authorization server, dynamic client registration + PKCE). Complete the browser login; use the access token as the bearer. - API key: send
Authorization: Bearer drp_live_…(created by the user at drp.dev/app/settings/keys).
First, orient yourself
- Call
whoami→ confirms the account and the default team drops land in. - Call
list_teams→ team slugs you can post to.list_folders→ folders.
Post content (base64 is the normal path - Drp hosts it; do NOT host elsewhere)
post_image{ imageBase64, contentType, title?, visibility?, team?, folder? }post_markdown{ body, title?, … }post_html{ body /* full HTML, runs sandboxed */, … }post_code{ filename, content /* text, highlighted read-only */, … }upload_file{ filename, contentBase64, contentType, … }post_report{ body /* with  */, images:[{slot,imageBase64,contentType}], … }
Iterate on a document (research-as-you-go)
get_drop{ dropId } → read back the current markdown body + filled image slots.append_drop{ dropId, content } → add markdown to the bottom using a drop ID or Drp link, without a full rewrite.update_drop{ dropId, body?, title?, visibility?, folder? } → replace the full markdown body or edit metadata.add_report_image{ dropId, slot, imageBase64, contentType } → add an image. If the body has  it fills that spot; otherwise it's appended to the bottom (markdown auto-upgrades to a report).
Pattern for running notes and completed-item lists: post_markdown once, keep the dropId, then call append_drop for each addition. Use update_drop only when the full body needs to change.
Rules that matter
- Destination: omit
team= default/personal; pass a team slug to target a team. Defaultvisibilityisteam; usepublicfor shareable links / changelog. - Folders auto-create: just pass
folder: "Name". - Size: ~24 MB inline soft cap, 100 MB hard. For many/large report images, create the report then call
add_report_imageonce per image. Don't go find a URL - send the bytes. - Result: every post returns a
drp.dev/r/<slug>URL - surface it to the user. - Reports with a missing image return
incompleteSlots+ ahint; follow it.
Review, evidence, and release workflows
- Drp Review: call
review_changeswith the real unified diff. It returns validated findings, merge risk, and an evidence plan without storing anything by default. - Drp Evidence: capture and judge the mandatory items from that plan, then use
post_reportfor the private internal report. - Drp Release: use
duplicate_dropto preserve the internal source, rewrite the copy for users, runredact_content, and make only the copy public. - Drp Full: ask your agent to “use drp-full”. It can discover
drp_fulland follow the complete review-to-release execution contract.
Example: a PR-delivery report
post_report({
title: "PR #42 - streaming uploads",
visibility: "public",
folder: "PRs",
body: "# What changed\n\n## Before / after\n ",
images: [
{ slot: "dash", imageBase64: "…", contentType: "image/png" },
{ slot: "before", imageBase64: "…", contentType: "image/png" },
{ slot: "after", imageBase64: "…", contentType: "image/png" }
]
})