{"name":"sh.handover/handover","slug":"handover","title":"Handover","description":"Shared, versioned context that humans and AI agents can publish, review, annotate, and continue.","url":"https://mcp.market/server/handover","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":18,"stars":1,"forks":0,"downloads_week":null,"last_push_at":"2026-08-05T05:34:37.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T10:55:45.023Z","last_ok_at":"2026-11-04T10:55:45.023Z","latency_ms":251},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/44-pixels/handover-mcp","website":null,"version":"1.18.0","remotes":[{"type":"streamable-http","url":"https://handover.sh/api/mcp?profile=core"}],"packages":[],"tools":[{"name":"handover.annotate","description":"Add 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover containing the artifact being annotated."},"body":{"type":"string","minLength":1,"maxLength":10000,"description":"Actionable annotation body in plain text or Markdown."},"target":{"type":"object","additionalProperties":false,"properties":{"revisionId":{"type":"string","pattern":"^rev_","description":"Immutable revision containing the annotated artifact."},"artifactId":{"type":"string","pattern":"^art_","description":"Artifact containing the selected text or code."},"targetKind":{"type":"string","enum":["text","code","html"],"description":"Rendering context used to relocate and display the annotation."},"selector":{"type":"object","additionalProperties":false,"properties":{"exact":{"type":"string","minLength":1,"maxLength":4000,"description":"The exact selected text."},"prefix":{"type":"string","maxLength":500,"description":"Text immediately before the selection."},"suffix":{"type":"string","maxLength":500,"description":"Text immediately after the selection."},"startOffset":{"type":"integer","minimum":0,"description":"Zero-based character offset where the selection starts."},"endOffset":{"type":"integer","minimum":0,"description":"Zero-based character offset immediately after the selection."},"startLine":{"type":"integer","minimum":0,"description":"Zero-based line where the selection starts."},"endLine":{"type":"integer","minimum":0,"description":"Zero-based line where the selection ends."}},"required":["exact"],"description":"Exact quote plus optional position and surrounding context."}},"required":["revisionId","artifactId","targetKind","selector"],"description":"Immutable artifact location to anchor this annotation."},"mentionPrincipalIds":{"type":"array","description":"Collaborator principal IDs to mention and notify.","maxItems":20,"items":{"type":"string","pattern":"^prn_"}}},"required":["handoverId","body","target"],"additionalProperties":false}},{"name":"handover.annotations","description":"Read revision-anchored file comments, selected text, status, authorship, and resolution metadata. Use status=open to find feedback that still needs action.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover whose annotation threads should be read."},"artifactId":{"type":"string","pattern":"^art_"},"revisionId":{"type":"string","pattern":"^rev_"},"status":{"type":"string","enum":["open","resolved","stale"]}},"required":["handoverId"],"additionalProperties":false}},{"name":"handover.assign","description":"Replace the open assignments with the supplied collaborator identities. This changes collaboration state, not the immutable handover revision.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover whose open assignments will be replaced."},"principalIds":{"type":"array","description":"Complete replacement list of assigned collaborator principal IDs.","maxItems":20,"items":{"type":"string","pattern":"^prn_"}}},"required":["handoverId","principalIds"],"additionalProperties":false}},{"name":"handover.comment","description":"Append a discussion comment and optionally notify explicitly mentioned collaborators.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover discussion to append the comment to."},"body":{"type":"string","minLength":1,"maxLength":10000,"description":"Comment body in plain text or Markdown."},"mentionPrincipalIds":{"type":"array","description":"Collaborator principal IDs to mention and notify.","maxItems":20,"items":{"type":"string","pattern":"^prn_"}}},"required":["handoverId","body"],"additionalProperties":false}},{"name":"handover.continue","description":"Append 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover to continue after reading its current snapshot."},"expectedRevisionId":{"type":"string","pattern":"^rev_","description":"Current revision ID returned by handover.get; prevents lost updates."},"note":{"type":"string","minLength":1,"description":"What changed or what the next collaborator should know."},"brief":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"objective":{"type":"string","description":"The outcome the next human or agent should continue toward."},"currentState":{"type":"string","description":"Verified state at the moment this revision is published."},"decisions":{"type":"array","description":"Decisions already made that successors should preserve.","items":{"type":"string"},"maxItems":50},"openQuestions":{"type":"array","description":"Unresolved questions that still require evidence or judgment.","items":{"type":"string"},"maxItems":50},"nextSteps":{"type":"array","description":"Concrete continuation steps for the receiving actor.","maxItems":50,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Optional stable identifier for this step."},"text":{"type":"string","description":"One actionable continuation step."},"status":{"type":"string","enum":["open","done"],"description":"Whether the step still needs action."}},"required":["text"]}}},"description":"Updated structured continuation brief."},"artifacts":{"type":"array","description":"New or replacement files; omitted files remain inherited.","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"Filename shown in Handover."},"mediaType":{"type":"string","description":"IANA media type, such as text/markdown or text/x-sql."},"content":{"type":"string","description":"UTF-8 text, or base64 when encoding is base64."},"encoding":{"type":"string","enum":["utf-8","base64"],"default":"utf-8"}},"required":["name","content"]},"minItems":1,"maxItems":50}},"required":["handoverId","expectedRevisionId"],"additionalProperties":false,"anyOf":[{"required":["note"]},{"required":["brief"]},{"required":["artifacts"]}]}},{"name":"handover.create","description":"Create durable shared context with an initial immutable revision. Authorship comes from the authenticated Handover identity.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"title":{"type":"string","maxLength":200,"description":"Short, specific name for the durable context."},"summary":{"type":"string","maxLength":2000,"description":"Concise explanation of what this handover contains."},"note":{"type":"string","minLength":1,"description":"Free-form continuation note recorded in the initial revision."},"brief":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"objective":{"type":"string","description":"The outcome the next human or agent should continue toward."},"currentState":{"type":"string","description":"Verified state at the moment this revision is published."},"decisions":{"type":"array","description":"Decisions already made that successors should preserve.","items":{"type":"string"},"maxItems":50},"openQuestions":{"type":"array","description":"Unresolved questions that still require evidence or judgment.","items":{"type":"string"},"maxItems":50},"nextSteps":{"type":"array","description":"Concrete continuation steps for the receiving actor.","maxItems":50,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Optional stable identifier for this step."},"text":{"type":"string","description":"One actionable continuation step."},"status":{"type":"string","enum":["open","done"],"description":"Whether the step still needs action."}},"required":["text"]}}},"description":"Structured continuation brief for humans and agents."},"artifacts":{"type":"array","description":"Files attached to the initial immutable revision.","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"Filename shown in Handover."},"mediaType":{"type":"string","description":"IANA media type, such as text/markdown or text/x-sql."},"content":{"type":"string","description":"UTF-8 text, or base64 when encoding is base64."},"encoding":{"type":"string","enum":["utf-8","base64"],"default":"utf-8"}},"required":["name","content"]},"minItems":1,"maxItems":50}},"required":["title"],"additionalProperties":false,"anyOf":[{"required":["note"]},{"required":["brief"]},{"required":["artifacts"]}]}},{"name":"handover.get","description":"Read a handover snapshot, continuation brief, artifact metadata, and revision history. Omit revisionId for the current snapshot.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover identifier returned by handover.search or handover.create."},"revisionId":{"type":"string","pattern":"^rev_","description":"Optional immutable revision; omit to inspect the current revision."}},"required":["handoverId"],"additionalProperties":false}},{"name":"handover.okf.export","description":"Export a handover revision as an Open Knowledge Format bundle for another human or agent system.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover to export."},"revisionId":{"type":"string","pattern":"^rev_","description":"Immutable revision to export; defaults to the current revision."}},"required":["handoverId"],"additionalProperties":false}},{"name":"handover.okf.import","description":"Import Open Knowledge Format files into a new immutable Handover revision. Replaying the same bundle is idempotent.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Existing handover that will receive the imported bundle."},"expectedRevisionId":{"type":"string","pattern":"^rev_","description":"Current revision ID used to prevent conflicting imports."},"mode":{"type":"string","enum":["merge","replace"],"default":"merge","description":"Merge bundle files with inherited artifacts or replace them."},"files":{"type":"array","description":"Files from an Open Knowledge Format bundle.","items":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","description":"Relative path of this file inside the OKF bundle."},"mediaType":{"type":"string","description":"IANA media type; inferred from path when omitted."},"encoding":{"type":"string","enum":["utf-8","base64"],"description":"How content is encoded in this request."},"content":{"type":"string","description":"UTF-8 text, or base64 when encoding is base64."}},"required":["path","content"]},"minItems":1,"maxItems":100}},"required":["handoverId","files"],"additionalProperties":false}},{"name":"handover.publication","description":"Read the stable report URL, entry file, access mode, and selected revision for a handover.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover whose publication should be inspected."},"slug":{"type":"string","description":"Stable published report slug."}},"additionalProperties":false,"anyOf":[{"required":["handoverId"]},{"required":["slug"]}]}},{"name":"handover.publish","description":"Create or update a stable /r/{slug}/ report projection of a Handover revision.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover to project as a stable report."},"slug":{"type":"string","description":"Stable URL slug; generated from the title when omitted."},"entryPath":{"type":"string","description":"Artifact path opened first when readers visit the report."},"access":{"type":"string","enum":["organization","public"],"description":"Who can open the report URL."},"revisionMode":{"type":"string","enum":["latest","pinned"],"description":"Follow new revisions automatically or keep one revision pinned."},"revisionId":{"type":"string","pattern":"^rev_","description":"Revision to pin; used when revisionMode is pinned."}},"required":["handoverId"],"additionalProperties":false}},{"name":"handover.pull","description":"Return the selected files of a published report with paths, hashes, media types, and UTF-8 or base64 content.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Stable published report slug."},"files":{"type":"array","description":"Optional relative paths to return; omit for every file.","items":{"type":"string"},"maxItems":100},"includeBinary":{"type":"boolean","default":false,"description":"Return binary files as base64 when true."}},"required":["slug"],"additionalProperties":false}},{"name":"handover.read_artifact","description":"Read bounded artifact content after inspecting a handover. Text is returned as UTF-8 and binary content as base64; truncated results report that explicitly.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"artifactId":{"type":"string","pattern":"^art_","description":"Artifact identifier returned by handover.get."},"maxBytes":{"type":"integer","minimum":1,"maximum":2097152,"default":524288,"description":"Maximum decoded bytes to return before reporting truncation."}},"required":["artifactId"],"additionalProperties":false}},{"name":"handover.search","description":"Find current shared context with hybrid, semantic, or lexical retrieval across metadata and artifact content. Use an empty query to list recent handovers.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string"},"mode":{"type":"string","enum":["hybrid","semantic","lexical"],"default":"hybrid"},"status":{"type":"string","enum":["active","archived","trashed"],"default":"active"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":30},"cursor":{"type":"string"}},"additionalProperties":false}},{"name":"handover.thread","description":"Read comments, explicit mentions, assignments, and eligible collaborators without changing revision history.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover whose discussion and assignments should be read."}},"required":["handoverId"],"additionalProperties":false}},{"name":"handover.update_comment","description":"Edit an authored comment, or resolve/reopen an annotation. Set resolvedRevisionId when a new handover revision addressed the feedback.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"handoverId":{"type":"string","pattern":"^hov_","description":"Handover containing the comment."},"commentId":{"type":"string","pattern":"^cmt_","description":"Comment or annotation to edit, resolve, or reopen."},"body":{"type":"string","minLength":1,"maxLength":10000,"description":"Replacement comment body; omit to preserve the current body."},"target":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"revisionId":{"type":"string","pattern":"^rev_","description":"Immutable revision containing the annotated artifact."},"artifactId":{"type":"string","pattern":"^art_","description":"Artifact containing the selected text or code."},"targetKind":{"type":"string","enum":["text","code","html"],"description":"Rendering context used to relocate and display the annotation."},"selector":{"type":"object","additionalProperties":false,"properties":{"exact":{"type":"string","minLength":1,"maxLength":4000,"description":"The exact selected text."},"prefix":{"type":"string","maxLength":500,"description":"Text immediately before the selection."},"suffix":{"type":"string","maxLength":500,"description":"Text immediately after the selection."},"startOffset":{"type":"integer","minimum":0,"description":"Zero-based character offset where the selection starts."},"endOffset":{"type":"integer","minimum":0,"description":"Zero-based character offset immediately after the selection."},"startLine":{"type":"integer","minimum":0,"description":"Zero-based line where the selection starts."},"endLine":{"type":"integer","minimum":0,"description":"Zero-based line where the selection ends."}},"required":["exact"],"description":"Exact quote plus optional position and surrounding context."}},"required":["revisionId","artifactId","targetKind","selector"]},{"type":"null"}],"description":"Replacement annotation target, or null to remove the anchor."},"mentionPrincipalIds":{"type":"array","description":"Replacement collaborator mentions.","maxItems":20,"items":{"type":"string","pattern":"^prn_"}},"status":{"type":"string","enum":["open","resolved"],"description":"Open, resolve, or reopen the feedback thread."},"resolvedRevisionId":{"anyOf":[{"type":"string","pattern":"^rev_"},{"type":"null"}],"description":"Revision that addressed the feedback, or null when reopening."}},"required":["handoverId","commentId"],"additionalProperties":false,"minProperties":3}},{"name":"handover.whoami","description":"Return the authenticated person or service agent, organization, workspace, role, and granted scopes. Call this before reading or publishing to confirm attribution and tenancy.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}}],"scan":{"score":75,"grade":"B","scanned_at":"2026-09-24T05:06:52.508Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:06:52.523Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 777ms"]},"poisoning":{"score":15,"max":15,"notes":["17 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":12,"max":15,"notes":["last push 50 days ago"]},"identity":{"score":6,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://handover.sh/api/mcp?profile=core","reachable":true,"authRequired":false,"latencyMs":777,"serverInfo":{"name":"handover","version":"0.1.0"}}],"packages":[],"repo":{"found":true,"owner":"44-pixels","repo":"handover-mcp","archived":false,"pushedAt":"2026-08-05T05:34:37Z","stars":1,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/166115837?v=4","ownerCreatedAt":"2024-04-05T09:04:41Z","license":"MIT"},"icon":{"url":"https://handover.sh/icon.svg","source":"site"},"presence":{"stars":1,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-05T05:34:37.000Z","score":18}}}},"grade_history":[],"reviews":[]}