Skip to main content
Glama

Server Details

Publish AI-made web pages and share files as short links from any MCP client.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
kitsunde/putit-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation4/5

Each tool targets a distinct action or resource, with clear separation between upload_file, publish_site, and create_upload_session. The only mild overlap is that upload_file can also produce a website from .html or .zip, but descriptions clarify the intended use cases.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., create_upload_session, delete_link, get_account, list_links, make_permanent, publish_site, set_password, upload_file). The single verb 'extend' is a minor deviation, but overall naming is predictable.

Tool Count5/5

10 tools is well-scoped for a file/link hosting service, covering upload, management, account, and settings without redundancy. Each tool earns its place by addressing a specific need.

Completeness4/5

The surface covers core CRUD and lifecycle operations: creating links (upload_file, create_upload_session, publish_site), reading (get_link, list_links), deleting (delete_link), and updating (set_password, extend, make_permanent). Minor gaps exist, such as renaming or editing link metadata, but core workflows are fully supported.

Available Tools

10 tools
create_upload_sessionGet an upload URL for a large fileAInspect

For files too large to send inline: reserves a link and returns a one-time upload_url. PUT the raw bytes there (e.g. give the user the returned curl command), then poll get_link with the slug (and manage_token) until status is "live".

NameRequiredDescriptionDefault
slugNoCustom link name (3-40 letters, digits, dashes); available on plans with custom names.
filenameYesName of the file that will be uploaded, including extension.
passwordNoVisitors must enter this password to open the link; available on plans with password protection.
size_bytesNoExpected size, checked against your plan limit up front.

Output Schema

NameRequiredDescription
curlYesReady-to-run command for the user.
linkYes
methodYes
headersYes
max_bytesYes
expires_atYes
upload_urlYesOne-time URL: PUT the raw file bytes here (no auth header needed).
complete_urlNoWhen present: POST here (no body) after the PUT finishes. The curl command already does it.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only cover the coarse safety profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true). The description adds the operationally critical traits: the URL is one-time, the bytes go via PUT at that URL, and completion must be confirmed by polling for status 'live'. This is exactly the extra context the annotations cannot supply.

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?

Two sentences, front-loaded with the scoping condition, then the create→PUT→poll flow in order. No filler sentences; the parenthetical curl hint is genuinely actionable.

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?

With an output schema present, return-value explanation is unnecessary, and the description covers the full lifecycle an agent must drive: reserve, upload, poll. Nothing needed to invoke and follow through is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so slug, filename, password and size_bytes are already documented inline. The description only references slug and manage_token (the latter not even an input parameter) in the polling step, adding workflow context but no new parameter meaning. Baseline 3 applies.

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?

States a specific verb and resource (reserves a link, returns a one-time upload_url) and scopes it precisely to 'files too large to send inline', which implicitly separates it from the inline sibling upload_file. An agent can identify the job without opening the schema.

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

Usage Guidelines4/5

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

Gives clear context for when to use it ('too large to send inline') and an explicit post-call workflow: PUT bytes, then poll get_link with slug/manage_token until status is 'live'. It stops short of naming upload_file as the small-file alternative, so the exclusion is implied rather than stated.

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

extendExtend a linkAInspect

Restart an expiring link's expiry clock (also brings back a recently expired link). Permanent links are unaffected. Requires a connected account whose plan includes extending.

NameRequiredDescriptionDefault
slugYesThe link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works).

Output Schema

NameRequiredDescription
urlYesThe public link to share.
kindYeshtml | site | file | bundle | pending
slugYes
titleYes
viewsYesView count; null when the link's account plan has no view counts, or the link has no account.
statusYeschecking = not live yet (poll get_link); live = shareable; unpublished = not published; publishing = will be live soon (poll get_link); in_review = not available right now; removed = removed by moderation (see removed_reason, appeal_url).
permanentYes
appeal_urlNoOnly with status removed: mailto link to appeal to abuse@putit.online.
created_atYes
expires_atYesISO time the link stops working; null for permanent links.
file_countYes
manage_urlNoPrivate page to manage/delete the link. Only returned on creation; keep it secret.
size_bytesYes
content_urlNoOnly when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.
checkout_urlNoOnly with status unpublished: the page where the uploader can publish this link.
manage_tokenNoSecret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead.
removed_reasonNoOnly with status removed: why, in plain words.
status_messageYes
removed_categoryNoOnly with status removed: the moderation category (malware, phishing, explicit, …); null when not disclosed.
password_protectedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent mutation, so the bar is lower; the description adds real value by explaining what happens (expiry clock restarts, expired links return) and what is untouched (permanent links), plus a plan-level prerequisite. It omits rate-limit or repeated-call behavior, but covers the mutation's effect well.

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?

Three short sentences, front-loaded with the action, then the effect, then the eligibility constraint. Each sentence carries distinct information with no repetition or filler.

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?

An output schema exists, so return values need not be described. The description covers the action, its effect on expired vs permanent links, and the account/plan prerequisite — everything needed to invoke an annotated mutation correctly.

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

Parameters3/5

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

Only one parameter, and schema coverage is 100% with an example format ('k3x9pq' or a full URL). The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('extend', "link's expiry clock") and clarifies scope: it applies to expiring/recently expired links only. The note that 'Permanent links are unaffected' implicitly separates it from the sibling make_permanent, so an agent can route correctly without opening schemas.

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

Usage Guidelines4/5

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

Gives a clear precondition ('Requires a connected account whose plan includes extending') and an exclusion ('Permanent links are unaffected'), which tells the agent when this tool is not the right choice. It does not explicitly name make_permanent as the alternative for permanent links, so it stops just short of full routing guidance.

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

get_accountGet my planB
Read-onlyIdempotent
Inspect

The connected account's plan, permanent-link slots used/available, size limit and features.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
planYes
emailYes
featuresYes
plan_nameYes
subscribedYes
total_linksYes
upgrade_urlYes
dashboard_urlYes
free_link_daysYes
permanent_linksYes
max_upload_bytesYes

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, covering the safety profile. The description adds no behavioral context beyond that — no auth/permission requirements, no freshness or caching behavior, no note on latency. What it does add (the returned fields) duplicates the existing output schema, so it earns little credit.

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

Conciseness4/5

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

A single front-loaded noun phrase with no filler. It is a sentence fragment rather than a complete sentence, which slightly weakens it, but every word carries information.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and with no parameters and read-only annotations there is little else an agent requires. The only remaining gap is the absence of any usage context, which is minor for a parameterless account-info call.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.

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

Purpose4/5

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

The description names the resource precisely ("the connected account's plan") and enumerates the returned data points (slots used/available, size limit, features), so an agent can tell it apart from link-management siblings. The verb is implicit rather than stated, but the title plus read-only annotations make the retrieval operation unambiguous.

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

Usage Guidelines3/5

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

Usage is implied by the content — an agent would call this when it needs account-level limits or feature availability. There is no explicit when-to-use statement, no mention of prerequisites, and no pointer to any sibling tool, so it stops short of real guidance.

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

make_permanentKeep a link online permanentlyA
Idempotent
Inspect

Turn an expiring link into a permanent one (uses one of the plan's permanent slots; see get_account). Requires a connected account whose plan includes permanent links.

NameRequiredDescriptionDefault
slugYesThe link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works).

Output Schema

NameRequiredDescription
urlYesThe public link to share.
kindYeshtml | site | file | bundle | pending
slugYes
titleYes
viewsYesView count; null when the link's account plan has no view counts, or the link has no account.
statusYeschecking = not live yet (poll get_link); live = shareable; unpublished = not published; publishing = will be live soon (poll get_link); in_review = not available right now; removed = removed by moderation (see removed_reason, appeal_url).
permanentYes
appeal_urlNoOnly with status removed: mailto link to appeal to abuse@putit.online.
created_atYes
expires_atYesISO time the link stops working; null for permanent links.
file_countYes
manage_urlNoPrivate page to manage/delete the link. Only returned on creation; keep it secret.
size_bytesYes
content_urlNoOnly when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.
checkout_urlNoOnly with status unpublished: the page where the uploader can publish this link.
manage_tokenNoSecret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead.
removed_reasonNoOnly with status removed: why, in plain words.
status_messageYes
removed_categoryNoOnly with status removed: the moderation category (malware, phishing, explicit, …); null when not disclosed.
password_protectedYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the mutation/idempotency/destructive profile, and the description adds two things they don't: the operation consumes one of the plan's finite permanent slots (a quota side effect) and it requires an eligible connected account. It still doesn't say what happens when slots are exhausted or whether the action is reversible.

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?

Two dense sentences that front-load the action and then the resource prerequisite; the cross-reference to get_account is inline and every clause carries information.

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

Completeness4/5

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

With one well-documented parameter, a rich annotation set, an output schema, and an explicit account/plan precondition, the description is nearly self-sufficient. Only the edge case of slot exhaustion is left unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% for the single slug parameter, so the schema already documents format and accepted URL/name forms. The description adds no additional meaning about the parameter, which is the baseline case.

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

Purpose4/5

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

States a specific verb+resource with scope: 'Turn an expiring link into a permanent one.' An agent can tell this is a one-way conversion rather than the time-window tweak implied by the sibling 'extend', though the description never names that sibling to make the contrast explicit.

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

Usage Guidelines4/5

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

Gives clear preconditions (requires a connected account whose plan includes permanent links) and points to get_account for checking slot availability. It does not state when to prefer this over extend or what to do if no slots remain, so exclusions are absent.

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

publish_sitePublish a web page or siteAInspect

Put a web page or small static site you created online instantly. Pass {"files": {"index.html": "…", "style.css": "…", "app.js": "…"}} (paths relative to the site root; index.html required). Images can go in base64_files. Returns the public URL. Pages are served sandboxed on their own link.

NameRequiredDescriptionDefault
slugNoCustom link name (3-40 letters, digits, dashes); available on plans with custom names.
filesYesMap of path -> text content, e.g. {"index.html": "<!doctype html>…", "style.css": "body{…}"}. Must include index.html.
titleNoName for the site (shown in the dashboard).
passwordNoVisitors must enter this password to open the link; available on plans with password protection.
base64_filesNoOptional map of path -> base64 content for binary assets such as images.

Output Schema

NameRequiredDescription
urlYesThe public link to share.
kindYeshtml | site | file | bundle | pending
slugYes
titleYes
viewsYesView count; null when the link's account plan has no view counts, or the link has no account.
statusYeschecking = not live yet (poll get_link); live = shareable; unpublished = not published; publishing = will be live soon (poll get_link); in_review = not available right now; removed = removed by moderation (see removed_reason, appeal_url).
permanentYes
appeal_urlNoOnly with status removed: mailto link to appeal to abuse@putit.online.
created_atYes
expires_atYesISO time the link stops working; null for permanent links.
file_countYes
manage_urlNoPrivate page to manage/delete the link. Only returned on creation; keep it secret.
size_bytesYes
content_urlNoOnly when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.
checkout_urlNoOnly with status unpublished: the page where the uploader can publish this link.
manage_tokenNoSecret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead.
removed_reasonNoOnly with status removed: why, in plain words.
status_messageYes
removed_categoryNoOnly with status removed: the moderation category (malware, phishing, explicit, …); null when not disclosed.
password_protectedYes

TDQS

A3.6/5.0
Behavior4/5

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

With annotations already declaring the write/non-destructive/open-world profile, the description adds useful behavioral details: pages are served sandboxed on their own link, the public URL is returned, and index.html is required. It still omits auth needs, rate limits, and what happens on republish, but the added context is valuable.

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?

The description is front-loaded with purpose and usage, and every sentence earns its place by covering the required file structure, binary assets, return value, and serving behavior. It is appropriately sized with no wasted wording.

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

Completeness4/5

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

Given the rich schema (100% coverage), annotations, and an output schema, the description covers the essential call behavior: what it does, required index.html, optional base64 files, and where the content is served. It does not address optional parameters like slug, title, or password, but those are fully documented in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters thoroughly. The description repeats the files example and says images can go in base64_files, but adds no syntax or format details beyond what the schema provides.

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

Purpose4/5

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

The description states a specific verb ('Put ... online instantly') and resource ('a web page or small static site you created'). It does not distinguish this tool from siblings like upload_file or create_upload_session, so the agent must infer the boundary.

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

Usage Guidelines2/5

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

The description implies usage when you have a page or site you created, but provides no explicit when-to-use conditions, prerequisites, or alternatives. No guidance on when to choose this over upload_file or create_upload_session is given.

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

set_passwordSet or remove a link passwordA
Idempotent
Inspect

Protect a link with a password (visitors must enter it), or pass null to remove it. Requires a connected account whose plan includes passwords; otherwise returns a subscription_required error.

NameRequiredDescriptionDefault
slugYesThe link name, e.g. "k3x9pq" (a full https://putit.online/<name> URL also works).
passwordYesNew password, or null to remove protection.

Output Schema

NameRequiredDescription
urlYesThe public link to share.
kindYeshtml | site | file | bundle | pending
slugYes
titleYes
viewsYesView count; null when the link's account plan has no view counts, or the link has no account.
statusYeschecking = not live yet (poll get_link); live = shareable; unpublished = not published; publishing = will be live soon (poll get_link); in_review = not available right now; removed = removed by moderation (see removed_reason, appeal_url).
permanentYes
appeal_urlNoOnly with status removed: mailto link to appeal to abuse@putit.online.
created_atYes
expires_atYesISO time the link stops working; null for permanent links.
file_countYes
manage_urlNoPrivate page to manage/delete the link. Only returned on creation; keep it secret.
size_bytesYes
content_urlNoOnly when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.
checkout_urlNoOnly with status unpublished: the page where the uploader can publish this link.
manage_tokenNoSecret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead.
removed_reasonNoOnly with status removed: why, in plain words.
status_messageYes
removed_categoryNoOnly with status removed: the moderation category (malware, phishing, explicit, …); null when not disclosed.
password_protectedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the mutation profile (readOnlyHint false, idempotentHint true, destructiveHint false). The description adds value beyond them by disclosing the subscription_required error path and the semantics of null as removal rather than clearing a value.

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?

Two dense sentences; the set/remove duality is front-loaded and the prerequisite follows, with no wasted wording.

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?

An output schema exists so return values need not be explained, and the description still covers both operation modes, the plan prerequisite, and the failure error. Nothing needed to invoke correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates the null-to-remove behavior already documented in the schema and adds no length or format detail beyond it.

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?

States a specific verb (protect/set) and resource (link password) plus the dual mode: set a password or pass null to remove it. This is clearly distinguishable from siblings like delete_link or make_permanent.

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

Usage Guidelines4/5

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

Gives clear context for both use modes (protect vs. remove via null) and a prerequisite (plan must include passwords, else subscription_required). It does not name an alternative tool, but for this unique operation none exists among the siblings.

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

upload_fileUpload a fileAInspect

Put a file online and get a short public link. Pass text directly, or base64 with encoding="base64" for binary files (images, PDFs, zips). An .html file becomes a web page; a .zip containing index.html becomes a website. Returns the URL, expires_at and a manage_token (shown once; anonymous callers need it to check or delete the link). Status may be "checking"/"publishing" (call get_link before sharing) or "unpublished" (not published). Limit 20 MB inline; use create_upload_session for bigger files.

NameRequiredDescriptionDefault
slugNoCustom link name (3-40 letters, digits, dashes); available on plans with custom names.
contentYesFile content: plain text, or base64 when encoding is "base64" (use base64 for any binary file).
encodingNoHow `content` is encoded.text
filenameYesFile name including extension, e.g. "report.pdf" or "index.html". The extension decides how the link renders.
passwordNoVisitors must enter this password to open the link; available on plans with password protection.
mime_typeNoOptional MIME type; used to add a missing file extension.

Output Schema

NameRequiredDescription
urlYesThe public link to share.
kindYeshtml | site | file | bundle | pending
slugYes
titleYes
viewsYesView count; null when the link's account plan has no view counts, or the link has no account.
statusYeschecking = not live yet (poll get_link); live = shareable; unpublished = not published; publishing = will be live soon (poll get_link); in_review = not available right now; removed = removed by moderation (see removed_reason, appeal_url).
permanentYes
appeal_urlNoOnly with status removed: mailto link to appeal to abuse@putit.online.
created_atYes
expires_atYesISO time the link stops working; null for permanent links.
file_countYes
manage_urlNoPrivate page to manage/delete the link. Only returned on creation; keep it secret.
size_bytesYes
content_urlNoOnly when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.
checkout_urlNoOnly with status unpublished: the page where the uploader can publish this link.
manage_tokenNoSecret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead.
removed_reasonNoOnly with status removed: why, in plain words.
status_messageYes
removed_categoryNoOnly with status removed: the moderation category (malware, phishing, explicit, …); null when not disclosed.
password_protectedYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare a non-idempotent, non-destructive write; the description goes well beyond them by disclosing the 20 MB inline limit, the one-time manage_token, the possible "checking"/"publishing"/"unpublished" statuses, and the returned fields. This is exactly the behavioral context an agent needs before calling a write tool.

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?

Front-loaded with the core action and link result, then layered with encoding, rendering, return value, status, and size limit in a dense but waste-free sequence. Every sentence carries actionable information.

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?

Despite an output schema existing, the description helpfully names the key returns (URL, expires_at, manage_token) and covers limits, status handling, and the sibling for large files. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents each parameter. The description still adds real meaning beyond it: base64 for binary files, and the rendering semantics of filename extensions (.html becomes a web page, .zip with index.html becomes a website), plus the inline size ceiling.

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?

"Put a file online and get a short public link" states a specific verb and resource, and the description distinguishes this from create_upload_session (bigger files) and get_link (status checks). An agent can tell it apart from its siblings without opening their schemas.

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 routing: use create_upload_session for files above 20 MB, and call get_link when status is "checking"/"publishing". It also notes the manage_token requirement for anonymous callers to check or delete. When-to-use and when-to-use-something-else are both present.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • Changedcreate_upload_session1 field changed
      • changedOutput schema / properties / link / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
    • Changedextend1 field changed
      • changedOutput schema / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
    • Changedget_link1 field changed
      • changedOutput schema / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
    • Changedlist_links1 field changed
      • changedOutput schema / properties / links / items / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
    • Changedmake_permanent1 field changed
      • changedOutput schema / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
    • Changedpublish_site1 field changed
      • changedOutput schema / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
    • Changedset_password1 field changed
      • changedOutput schema / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
    • Changedupload_file1 field changed
      • changedOutput schema / properties / manage_token / description
        Previous value: -"Secret token for get_link/delete_link without an account. Only returned on creation."New value: +"Secret token returned on creation for every new link (keep it secret). Anonymous callers pass it to get_link/delete_link; a link in an account is managed by that account instead."
  2. 8 tool updates
    • Changedcreate_upload_session1 field changed
      • addedOutput schema / properties / link / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
    • Changedextend1 field changed
      • addedOutput schema / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
    • Changedget_link1 field changed
      • addedOutput schema / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
    • Changedlist_links1 field changed
      • addedOutput schema / properties / links / items / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
    • Changedmake_permanent1 field changed
      • addedOutput schema / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
    • Changedpublish_site1 field changed
      • addedOutput schema / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
    • Changedset_password1 field changed
      • addedOutput schema / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
    • Changedupload_file1 field changed
      • addedOutput schema / properties / content_url
        Added value: +{
        +  "description": "Only when live, for sites and single files: where the content itself is served (https://<slug>.putitcdn.com/…). Share `url` instead; it always works.",
        +  "type": "string"
        +}
  3. 10 tool updates
    • First observedcreate_upload_session
    • First observeddelete_link
    • First observedextend
    • First observedget_account
    • First observedget_link
    • First observedlist_links
    • First observedmake_permanent
    • First observedpublish_site
    • First observedset_password
    • First observedupload_file

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to publish live, stateful HTML pages over MCP, providing shareable URLs, per-viewer data, and version history.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI chat clients to publish markdown content to an mdshare service and retrieve previously published pastes via MCP tools, without manual file uploads or curl requests.
    69 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.