tools.schemasevery tool has an object input schema
pass
tools.annotations14 of 14 tools declare readOnlyHint or destructiveHint
warn
tools.directory_hints2 of 14 tools declare all four hints; missing: signup (openWorldHint); save_file (openWorldHint); create_share_link (openWorldHint); …
pass
tools.token_costabout 3,503 tokens to load every tool
pass
tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
warn
stability.changes14 tool changes in 30 days
fail
stability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
n/a
deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package
14 tools, about 3,503 tokens to load them all · tool set e2d10f4d1fb6 · tools last changed 2026-10-30 · checked 2026-11-07 18:35 UTC
Tool changes
update_shareadded
Set when an owned share expires. expires_in_hours is measured from now. Example: 168 for 7 days. Does not return the token. Requires your API key.
list_sharesadded
List grants you own. Pass file_id to limit the list to one file. Returns grant_id, status, open_count, max_opens, expires_at, and audience. Does not return tokens or download urls. Requires your API key.
delete_fileadded
Delete a file you own. The bytes are removed and existing share links stop working. Requires your API key.
Create a controlled download link for a file you own. Use this when a person or another agent should fetch the file. The response includes url and token ONCE. Save the url immediately. Later status calls do not return it. Download with GET on that url. Requires your API key.
after · 79% of words in common
Create a controlled download link for a file you own. Use this when a person or another agent should fetch the file. The response includes url and token ONCE, plus expires_at and max_opens. Save the url immediately. Later status calls do not return it. When expires_in_hours is omitted, the link expires in 7 days. Download with GET on that url. Requires your API key.
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
Endpoints
remote
auth
reachable
uptime 30d
p50
protocol
last ok
https://hand-off.space/mcpstreamable-http
none
yes
100%
827 ms
2025-11-25
2026-11-07
Tools (14)
approve_share
Approve an owned grant that was created with requires_approval. Opens stay blocked until this succeeds. Requires your API key.
create_share_link
Create a controlled download link for a file you own. Use this when a person or another agent should fetch the file. The response includes url and token ONCE, plus expires_at and max_opens. Save the url immediately. Later status calls do not return it. When expires_in_hours is omitted, the link expires in 7 days. Download with GET on that url. Requires your API key.
delete_filedestructive
Delete a file you own. The bytes are removed and existing share links stop working. Requires your API key.
deny_sharedestructive
Deny an owned grant. A denied grant stays blocked. Requires your API key.
fetch_shared_fileread-only
Download a file from a share url or token. Use this when you were given a Handoff url and need the bytes. Honors expiry, open limits, approval, and agent audience. anyone_with_link needs no key. An agent audience uses your API key. Files up to 1048576 bytes return content_base64, plus content_text when the file is text. Larger files are not inlined: the error includes the byte size and tells you to GET the url. A successful inline return counts as an open. A file over the inline limit does not.
get_access_logread-only
Read the latest 1000 access attempts for an owned grant, including refused downloads. Use this to see whether a share was opened. Requires your API key.
get_share_statusread-only
Read an owned grant: token_prefix (not the secret), audience, approval, expiry, revocation, and open_count. Does not download the file and does not return the share URL. Requires your API key.
list_filesread-only
List this account's files, newest first, up to 1000. Use this to find a file_id before sharing. Returns metadata only, never bytes or download URLs. Requires your API key.
list_sharesread-only
List grants you own. Pass file_id to limit the list to one file. Returns grant_id, status, open_count, max_opens, expires_at, and audience. Does not return tokens or download urls. Requires your API key.
revoke_sharedestructive
Permanently revoke an owned share. Later downloads fail. This cannot be undone and does not delete the file. Requires your API key.
save_file
Save a private file for this account. Pass name and content_text or content_base64. Returns the file id and metadata. Does not share the file. Requires your API key.
share_file
Share a file in one call and get a download link. Pass name and content_text (or content_base64). Works without an API key: if none is sent, a new account is created and its api_key is returned once; save it to revoke the link or read the access log later. Default link: anyone with the link, expires in 7 days.
signup
Create a Handoff account and return an API key once. No Authorization header is required. Save api_key. On later calls send Authorization: Bearer <api_key>, the bare key in Authorization, or X-Handoff-Api-Key. Pass api_key only if you cannot set headers. share_file can create this key for you. The key is a secret. Do not put it in a file you share.
update_share
Set when an owned share expires. expires_in_hours is measured from now. Example: 168 for 7 days. Does not return the token. Requires your API key.
Public records for any NYC property by address or BBL: permits, violations, sales, owners.
Official server.json
{
"name": "io.github.jueluddinsf/handoff",
"title": "Handoff: Send Files to Users & Agents",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://hand-off.space/mcp",
"type": "streamable-http",
"headers": [
{
"name": "Authorization",
"isSecret": true,
"description": "API key from signup. Send Authorization: Bearer and the hf_ key, or the bare key. Not required to connect or list tools."
}
]
}
],
"version": "1.0.1",
"repository": {
"url": "https://github.com/jueluddinsf/handoff-mcp",
"source": "github"
},
"websiteUrl": "https://hand-off.space",
"description": "Send a file to a user or agent as a share link with expiry, max opens, approval, revoke and logs."
}