Skip to main content
Glama

Publish content

dropthis_publish

Publish content (HTML, files, or a URL) to a new permanent public URL and receive a shareable link with a drop ID.

Instructions

Publish content to a NEW permanent public URL and get back its drop_… id. Accepts exactly one content input: content (inline HTML/text), files (in-memory multi-file bundle), file/paths (a local file or directory, stdio/local only), or source_url (a public http(s) URL the server fetches). For a files bundle: a drop holds up to 200 files; each file is content (text you write), source_url (a remote asset dropthis fetches server-side — use this for images/video/pdf/fonts), or content_base64 (small inline bytes only); never base64-inline an image into HTML. Use when the user wants to publish, share, post, put online, make public, or get a shareable link for generated content — a report, dashboard, slide deck, site, or file. Creates a NEW drop every call: do NOT call this to change something you already published — that makes a duplicate. To change an existing drop, use dropthis_update_content (the files at the URL) or dropthis_update_settings (title, visibility, password, expiry, metadata) with the drop_… id from this call's response. If you only kept the URL or slug, call dropthis_resolve to recover the drop_… id instead of publishing again (which would make a duplicate). Two URLs come back: url is the canonical, always-branded human view (the badge is guaranteed, with no client detection); for a single non-HTML file the response also carries raw_url, which serves that file's exact bytes at its natural path — share url with humans, hand raw_url to other agents (raw_url is null for HTML drops, where the page is the artifact, and for collections, whose per-file paths come from dropthis_get_content). Routing: by default the drop lands on the account's default custom domain when one is live (the first live path-mode domain becomes the default automatically), otherwise on the shared dropthis pool — accounts holding only dedicated domains also land on the shared pool. Pass domain (a LIVE custom domain — see dropthis_domains_list) to target a specific domain, plus an optional vanity slug on path-mode domains (1-63 lowercase letters/digits/hyphens; a taken slug is auto-suffixed with a warning). Don't pass domain for quick throwaway shares — default routing already handles those. Oversized png/jpeg/webp images are optimized server-side by default (re-encoded smaller, paths unchanged, every transform disclosed in the response warnings[] as image_optimized/image_optimize_skipped); pass optimize:false for byte-exact storage.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fileNoLocal file OR directory path to publish (stdio/local only). A directory is published as a complete multi-file site.
pathNoFilename/path for inline content (default index.html).
slugNoVanity slug for the drop's path — valid on path-mode custom domains only: 1-63 lowercase letters/digits/hyphens (no leading/trailing/double hyphen). A taken slug is auto-suffixed with a warning; omit for a random slug. Rejected (422) on the shared pool.
entryNoEntry file for a multi-file bundle (default index.html).
filesNoA drop holds up to 200 files; each file is `content` (text you write), `source_url` (a remote asset dropthis fetches server-side — use this for images/video/pdf/fonts), or `content_base64` (small inline bytes only); never base64-inline an image into HTML. HTML/CSS/JS reference bundled assets by relative path (e.g. `assets/photo.jpg`). `entry` selects the main file when it is not `index.html`.
pathsNoList of local file/directory paths to publish as one bundle (stdio/local only).
titleNoDrop title.
domainNoServe the drop on this custom domain — the hostname of a LIVE domain on this account (see dropthis_domains_list), or pass 'shared' to publish to the shared pool even when the account has a default domain. Path-mode domains serve it at https://{domain}/{slug}/; a dedicated domain serves it at the hostname root and conflicts (409) once occupied. Omit to use the account's default domain, else the shared pool.
contentNoInline HTML or text to publish.
noindexNoPrevent search-engine indexing.
metadataNoArbitrary JSON key-value metadata.
optimizeNoServer-side image optimization for oversized png/jpeg/webp files, on by default — omit to use the server default (true); every transform is disclosed in the response warnings[] (image_optimized/image_optimize_skipped). Pass false for byte-exact storage.
passwordNoRequire a password to view the drop. Pro/Business only — on Free/Keep the server returns feature_not_in_plan (403) with an upgrade_url. Remove a password later via dropthis_update_settings with password=null.
workspaceNoTarget workspace slug or id (delegated credentials only; omit to publish into the active workspace). Only needed to publish into a workspace that is NOT currently active.
expires_atNoAuto-delete after this ISO 8601 timestamp, e.g. 2026-12-31T00:00:00Z.
source_urlNoPublic http(s) URL to fetch and publish.
visibilityNopublic (default) or unlisted. Unlisted is link-only: anyone with the URL can view the drop, but it is excluded from any public listing or discovery.
content_typeNoMIME type for inline content.
idempotency_keyNoPrevent duplicate publishes on retry.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoThe drop's permanent drop_… id — persist it for every follow-up tool.
urlNoThe canonical, always-branded public URL (share with humans).
nextNoStructured follow-up hints keyed by action.
slugNoURL slug — a locator, not an id.
titleNo
rawUrlNoRaw-bytes URL for a single non-HTML file; null for HTML drops and collections.
statusNo
noindexNo
metadataNo
revisionNo
expiresAtNo
sizeBytesNoTotal published bundle size in bytes — check before iterating on a heavy page.
workspaceNoThe workspace this drop belongs to {id, slug, name, kind}.
visibilityNo
passwordProtectedNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description richly discloses behaviors beyond the annotations: every call creates a NEW drop (duplicate risk), routing falls back to the shared pool if no live domain, image optimization transforms are disclosed in warnings[], and raw_url is null for HTML drops. This adds substantial context beyond the openWorldHint/destructiveHint flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although long, every sentence earns its place for a 19-parameter, three-mode publishing tool. It is front-loaded with the core purpose and explicitly enumerates content input options before diving into routing, optimization, and return-value nuances.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for this complex tool: it covers all input modes, the multi-file structure, domain and slug routing, image optimization behavior, returned URLs (url vs raw_url), and even plan restrictions (password feature). An output schema exists, but the description provides the operational context the schema cannot.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning far beyond the field names: it explains the five mutually exclusive content input modes, the 200-file limit, when to use source_url vs content_base64, slug validation and auto-suffixing, and domain routing behavior. This is genuinely additive semantic guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Publish content to a NEW permanent public URL and get back its drop_… id.' It clearly distinguishes this creation tool from the update siblings (dropthis_update_content/dropthis_update_settings) and explains what makes it unique (always creates a new drop).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is present: 'Use when the user wants to publish, share, post, put online, make public, or get a shareable link.' It also gives strong when-not-to-use instructions: never call to change existing content, and if you only have a URL/slug, call dropthis_resolve instead of publishing again to avoid duplicates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dropthis-dev/dropthis-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server