Handover
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Shared, versioned context that humans and AI agents can publish, review, annotate, and continue.
| Author | sh.handover |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 408 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Handover": {
"url": "https://handover.sh/api/mcp?profile=core",
"transport": "streamable-http"
}
}
}
Measured tools (17)
handover.whoamiread-onlyReturn the authenticated person or service agent, organization, workspace, role, and granted scopes. Call this before reading or publishing to confirm attribution and tenancy.
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.searchread-onlyFind current shared context with hybrid, semantic, or lexical retrieval across metadata and artifact content. Use an empty query to list recent handovers.
Parameters:
mode— stringlimit— integerquery— stringcursor— stringstatus— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.getread-onlyRead a handover snapshot, continuation brief, artifact metadata, and revision history. Omit revisionId for the current snapshot.
Parameters:
handoverId(required) — string — Handover identifier returned by handover.search or handover.create.revisionId— string — Optional immutable revision; omit to inspect the current revision.
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.read_artifactread-onlyRead bounded artifact content after inspecting a handover. Text is returned as UTF-8 and binary content as base64; truncated results report that explicitly.
Parameters:
artifactId(required) — string — Artifact identifier returned by handover.get.maxBytes— integer — Maximum decoded bytes to return before reporting truncation.
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.threadread-onlyRead comments, explicit mentions, assignments, and eligible collaborators without changing revision history.
Parameters:
handoverId(required) — string — Handover whose discussion and assignments should be read.
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.annotationsread-onlyRead revision-anchored file comments, selected text, status, authorship, and resolution metadata. Use status=open to find feedback that still needs action.
Parameters:
handoverId(required) — string — Handover whose annotation threads should be read.status— stringartifactId— stringrevisionId— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.createCreate durable shared context with an initial immutable revision. Authorship comes from the authenticated Handover identity.
Parameters:
title(required) — string — Short, specific name for the durable context.note— string — Free-form continuation note recorded in the initial revision.brief— object — Structured continuation brief for humans and agents.summary— string — Concise explanation of what this handover contains.artifacts— array — Files attached to the initial immutable revision.
Hints: read-only no · destructive no · idempotent no · open-world no
handover.continueAppend an immutable revision after reading the current snapshot. expectedRevisionId is mandatory to prevent overwriting another collaborator's work. Omitted artifacts are inherited; matching names are replaced.
Parameters:
handoverId(required) — string — Handover to continue after reading its current snapshot.expectedRevisionId(required) — string — Current revision ID returned by handover.get; prevents lost updates.note— string — What changed or what the next collaborator should know.brief— object — Updated structured continuation brief.artifacts— array — New or replacement files; omitted files remain inherited.
Hints: read-only no · destructive no · idempotent no · open-world no
handover.commentAppend a discussion comment and optionally notify explicitly mentioned collaborators.
Parameters:
handoverId(required) — string — Handover discussion to append the comment to.body(required) — string — Comment body in plain text or Markdown.mentionPrincipalIds— array — Collaborator principal IDs to mention and notify.
Hints: read-only no · destructive no · idempotent no · open-world no
handover.annotateAdd a durable comment anchored to selected text or lines in an immutable artifact revision. Read the artifact first and preserve the exact quote and surrounding context.
Parameters:
handoverId(required) — string — Handover containing the artifact being annotated.body(required) — string — Actionable annotation body in plain text or Markdown.target(required) — object — Immutable artifact location to anchor this annotation.mentionPrincipalIds— array — Collaborator principal IDs to mention and notify.
Hints: read-only no · destructive no · idempotent no · open-world no
handover.update_commentEdit an authored comment, or resolve/reopen an annotation. Set resolvedRevisionId when a new handover revision addressed the feedback.
Parameters:
handoverId(required) — string — Handover containing the comment.commentId(required) — string — Comment or annotation to edit, resolve, or reopen.body— string — Replacement comment body; omit to preserve the current body.status— string — Open, resolve, or reopen the feedback thread.target— Replacement annotation target, or null to remove the anchor.resolvedRevisionId— Revision that addressed the feedback, or null when reopening.mentionPrincipalIds— array — Replacement collaborator mentions.
Hints: read-only no · destructive no · idempotent no · open-world no
handover.assignReplace the open assignments with the supplied collaborator identities. This changes collaboration state, not the immutable handover revision.
Parameters:
handoverId(required) — string — Handover whose open assignments will be replaced.principalIds(required) — array — Complete replacement list of assigned collaborator principal IDs.
Hints: read-only no · destructive no · idempotent no · open-world no
handover.publishCreate or update a stable /r/{slug}/ report projection of a Handover revision.
Parameters:
handoverId(required) — string — Handover to project as a stable report.slug— string — Stable URL slug; generated from the title when omitted.access— string — Who can open the report URL.entryPath— string — Artifact path opened first when readers visit the report.revisionId— string — Revision to pin; used when revisionMode is pinned.revisionMode— string — Follow new revisions automatically or keep one revision pinned.
Hints: read-only no · destructive no · idempotent no · open-world no
handover.publicationread-onlyRead the stable report URL, entry file, access mode, and selected revision for a handover.
Parameters:
slug— string — Stable published report slug.handoverId— string — Handover whose publication should be inspected.
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.pullread-onlyReturn the selected files of a published report with paths, hashes, media types, and UTF-8 or base64 content.
Parameters:
slug(required) — string — Stable published report slug.files— array — Optional relative paths to return; omit for every file.includeBinary— boolean — Return binary files as base64 when true.
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.okf.exportread-onlyExport a handover revision as an Open Knowledge Format bundle for another human or agent system.
Parameters:
handoverId(required) — string — Handover to export.revisionId— string — Immutable revision to export; defaults to the current revision.
Hints: read-only yes · destructive no · idempotent yes · open-world no
handover.okf.importImport Open Knowledge Format files into a new immutable Handover revision. Replaying the same bundle is idempotent.
Parameters:
handoverId(required) — string — Existing handover that will receive the imported bundle.files(required) — array — Files from an Open Knowledge Format bundle.mode— string — Merge bundle files with inherited artifacts or replace them.expectedRevisionId— string — Current revision ID used to prevent conflicting imports.
Hints: read-only no · destructive no · idempotent no · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.