_ registry / mcp streamable-http · checked 16h ago

handover

https://handover.sh

Registry code: 2e990a5b70452a52

api record

Search before creating duplicate context. Read a handover and its artifacts before continuing it. Pass the current revision ID to handover.continue.

endpoint
https://handover.sh/api/mcp?profile=core
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing
karma
0 · newcomer
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
497ms

last good check

priced tools
0

of 17 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ used through this hub 30 days

The one measurement on this page that an operator cannot produce by editing a file on its own server: somebody else chose it, and paid to. Read the accounts before the calls — volume from one account is one relationship, and calling yourself is the cheap half. Both are what the ranking is built from, printed so the order can be checked rather than taken on trust.

accounts
0

distinct, expensive to fake

calls served
0

successful, last 30 days

_ what it can do 17 tools
17 auth-required 17 of 17 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • handover.okf.export auth-required never probed

    Export a handover revision as an Open Knowledge Format bundle for another human or agent system.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId"
      ],
      "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."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • handover.get auth-required never probed

    Read a handover snapshot, continuation brief, artifact metadata, and revision history. Omit revisionId for the current snapshot.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId"
      ],
      "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."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • handover.search auth-required 16h ago

    Find current shared context with hybrid, semantic, or lexical retrieval across metadata and artifact content. Use an empty query to list recent handovers.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "mode": {
          "enum": [
            "hybrid",
            "semantic",
            "lexical"
          ],
          "type": "string",
          "default": "hybrid"
        },
        "limit": {
          "type": "integer",
          "default": 30,
          "maximum": 100,
          "minimum": 1
        },
        "query": {
          "type": "string"
        },
        "cursor": {
          "type": "string"
        },
        "status": {
          "enum": [
            "active",
            "archived",
            "trashed"
          ],
          "type": "string",
          "default": "active"
        }
      },
      "additionalProperties": false
    }
    arguments 36 lines
  • handover.whoami auth-required 16h ago

    Return the authenticated person or service agent, organization, workspace, role, and granted scopes. Call this before reading or publishing to confirm attribution and tenancy.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • handover.annotations auth-required never probed

    Read revision-anchored file comments, selected text, status, authorship, and resolution metadata. Use status=open to find feedback that still needs action.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId"
      ],
      "properties": {
        "status": {
          "enum": [
            "open",
            "resolved",
            "stale"
          ],
          "type": "string"
        },
        "artifactId": {
          "type": "string",
          "pattern": "^art_"
        },
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover whose annotation threads should be read."
        },
        "revisionId": {
          "type": "string",
          "pattern": "^rev_"
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • handover.comment auth-required never probed

    Append a discussion comment and optionally notify explicitly mentioned collaborators.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId",
        "body"
      ],
      "properties": {
        "body": {
          "type": "string",
          "maxLength": 10000,
          "minLength": 1,
          "description": "Comment body in plain text or Markdown."
        },
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover discussion to append the comment to."
        },
        "mentionPrincipalIds": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^prn_"
          },
          "maxItems": 20,
          "description": "Collaborator principal IDs to mention and notify."
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • handover.update_comment auth-required never probed

    Edit an authored comment, or resolve/reopen an annotation. Set resolvedRevisionId when a new handover revision addressed the feedback.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId",
        "commentId"
      ],
      "properties": {
        "body": {
          "type": "string",
          "maxLength": 10000,
          "minLength": 1,
          "description": "Replacement comment body; omit to preserve the current body."
        },
        "status": {
          "enum": [
            "open",
            "resolved"
          ],
          "type": "string",
          "description": "Open, resolve, or reopen the feedback thread."
        },
        "target": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "revisionId",
                "artifactId",
                "targetKind",
                "selector"
              ],
              "properties": {
                "selector": {
                  "type": "object",
                  "required": [
                    "exact"
                  ],
                  "properties": {
                    "exact": {
                      "type": "string",
                      "maxLength": 4000,
                      "minLength": 1,
                      "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."
                    },
                    "endLine": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Zero-based line where the selection ends."
                    },
                    "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."
                    },
                    "startOffset": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Zero-based character offset where the selection starts."
                    }
                  },
                  "description": "Exact quote plus optional position and surrounding context.",
                  "additionalProperties": false
                },
                "artifactId": {
                  "type": "string",
                  "pattern": "^art_",
                  "description": "Artifact containing the selected text or code."
                },
                "revisionId": {
                  "type": "string",
                  "pattern": "^rev_",
                  "description": "Immutable revision containing the annotated artifact."
                },
                "targetKind": {
                  "enum": [
                    "text",
                    "code",
                    "html"
                  ],
                  "type": "string",
                  "description": "Rendering context used to relocate and display the annotation."
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Replacement annotation target, or null to remove the anchor."
        },
        "commentId": {
          "type": "string",
          "pattern": "^cmt_",
          "description": "Comment or annotation to edit, resolve, or reopen."
        },
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover containing the comment."
        },
        "resolvedRevisionId": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^rev_"
            },
            {
              "type": "null"
            }
          ],
          "description": "Revision that addressed the feedback, or null when reopening."
        },
        "mentionPrincipalIds": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^prn_"
          },
          "maxItems": 20,
          "description": "Replacement collaborator mentions."
        }
      },
      "minProperties": 3,
      "additionalProperties": false
    }
    arguments 141 lines
  • handover.thread auth-required never probed

    Read comments, explicit mentions, assignments, and eligible collaborators without changing revision history.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId"
      ],
      "properties": {
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover whose discussion and assignments should be read."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • handover.pull auth-required never probed

    Return the selected files of a published report with paths, hashes, media types, and UTF-8 or base64 content.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "description": "Stable published report slug."
        },
        "files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 100,
          "description": "Optional relative paths to return; omit for every file."
        },
        "includeBinary": {
          "type": "boolean",
          "default": false,
          "description": "Return binary files as base64 when true."
        }
      },
      "additionalProperties": false
    }
    arguments 26 lines
  • handover.read_artifact auth-required never probed

    Read bounded artifact content after inspecting a handover. Text is returned as UTF-8 and binary content as base64; truncated results report that explicitly.

    mcp-tool

    {
      "type": "object",
      "required": [
        "artifactId"
      ],
      "properties": {
        "maxBytes": {
          "type": "integer",
          "default": 524288,
          "maximum": 2097152,
          "minimum": 1,
          "description": "Maximum decoded bytes to return before reporting truncation."
        },
        "artifactId": {
          "type": "string",
          "pattern": "^art_",
          "description": "Artifact identifier returned by handover.get."
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • handover.create auth-required never probed

    Create durable shared context with an initial immutable revision. Authorship comes from the authenticated Handover identity.

    mcp-tool

    {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "note"
          ]
        },
        {
          "required": [
            "brief"
          ]
        },
        {
          "required": [
            "artifacts"
          ]
        }
      ],
      "required": [
        "title"
      ],
      "properties": {
        "note": {
          "type": "string",
          "minLength": 1,
          "description": "Free-form continuation note recorded in the initial revision."
        },
        "brief": {
          "type": "object",
          "properties": {
            "decisions": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "description": "Decisions already made that successors should preserve."
            },
            "nextSteps": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Optional stable identifier for this step."
                  },
                  "text": {
                    "type": "string",
                    "description": "One actionable continuation step."
                  },
                  "status": {
                    "enum": [
                      "open",
                      "done"
                    ],
                    "type": "string",
                    "description": "Whether the step still needs action."
                  }
                },
                "additionalProperties": false
              },
              "maxItems": 50,
              "description": "Concrete continuation steps for the receiving actor."
            },
            "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."
            },
            "openQuestions": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "description": "Unresolved questions that still require evidence or judgment."
            }
          },
          "description": "Structured continuation brief for humans and agents.",
          "minProperties": 1,
          "additionalProperties": false
        },
        "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."
        },
        "artifacts": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "content"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Filename shown in Handover."
              },
              "content": {
                "type": "string",
                "description": "UTF-8 text, or base64 when encoding is base64."
              },
              "encoding": {
                "enum": [
                  "utf-8",
                  "base64"
                ],
                "type": "string",
                "default": "utf-8"
              },
              "mediaType": {
                "type": "string",
                "description": "IANA media type, such as text/markdown or text/x-sql."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 50,
          "minItems": 1,
          "description": "Files attached to the initial immutable revision."
        }
      },
      "additionalProperties": false
    }
    arguments 139 lines
  • handover.continue auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "note"
          ]
        },
        {
          "required": [
            "brief"
          ]
        },
        {
          "required": [
            "artifacts"
          ]
        }
      ],
      "required": [
        "handoverId",
        "expectedRevisionId"
      ],
      "properties": {
        "note": {
          "type": "string",
          "minLength": 1,
          "description": "What changed or what the next collaborator should know."
        },
        "brief": {
          "type": "object",
          "properties": {
            "decisions": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "description": "Decisions already made that successors should preserve."
            },
            "nextSteps": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Optional stable identifier for this step."
                  },
                  "text": {
                    "type": "string",
                    "description": "One actionable continuation step."
                  },
                  "status": {
                    "enum": [
                      "open",
                      "done"
                    ],
                    "type": "string",
                    "description": "Whether the step still needs action."
                  }
                },
                "additionalProperties": false
              },
              "maxItems": 50,
              "description": "Concrete continuation steps for the receiving actor."
            },
            "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."
            },
            "openQuestions": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "description": "Unresolved questions that still require evidence or judgment."
            }
          },
          "description": "Updated structured continuation brief.",
          "minProperties": 1,
          "additionalProperties": false
        },
        "artifacts": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "content"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Filename shown in Handover."
              },
              "content": {
                "type": "string",
                "description": "UTF-8 text, or base64 when encoding is base64."
              },
              "encoding": {
                "enum": [
                  "utf-8",
                  "base64"
                ],
                "type": "string",
                "default": "utf-8"
              },
              "mediaType": {
                "type": "string",
                "description": "IANA media type, such as text/markdown or text/x-sql."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 50,
          "minItems": 1,
          "description": "New or replacement files; omitted files remain inherited."
        },
        "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."
        }
      },
      "additionalProperties": false
    }
    arguments 140 lines
  • handover.annotate auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId",
        "body",
        "target"
      ],
      "properties": {
        "body": {
          "type": "string",
          "maxLength": 10000,
          "minLength": 1,
          "description": "Actionable annotation body in plain text or Markdown."
        },
        "target": {
          "type": "object",
          "required": [
            "revisionId",
            "artifactId",
            "targetKind",
            "selector"
          ],
          "properties": {
            "selector": {
              "type": "object",
              "required": [
                "exact"
              ],
              "properties": {
                "exact": {
                  "type": "string",
                  "maxLength": 4000,
                  "minLength": 1,
                  "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."
                },
                "endLine": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Zero-based line where the selection ends."
                },
                "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."
                },
                "startOffset": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Zero-based character offset where the selection starts."
                }
              },
              "description": "Exact quote plus optional position and surrounding context.",
              "additionalProperties": false
            },
            "artifactId": {
              "type": "string",
              "pattern": "^art_",
              "description": "Artifact containing the selected text or code."
            },
            "revisionId": {
              "type": "string",
              "pattern": "^rev_",
              "description": "Immutable revision containing the annotated artifact."
            },
            "targetKind": {
              "enum": [
                "text",
                "code",
                "html"
              ],
              "type": "string",
              "description": "Rendering context used to relocate and display the annotation."
            }
          },
          "description": "Immutable artifact location to anchor this annotation.",
          "additionalProperties": false
        },
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover containing the artifact being annotated."
        },
        "mentionPrincipalIds": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^prn_"
          },
          "maxItems": 20,
          "description": "Collaborator principal IDs to mention and notify."
        }
      },
      "additionalProperties": false
    }
    arguments 109 lines
  • handover.assign auth-required never probed

    Replace the open assignments with the supplied collaborator identities. This changes collaboration state, not the immutable handover revision.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId",
        "principalIds"
      ],
      "properties": {
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover whose open assignments will be replaced."
        },
        "principalIds": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^prn_"
          },
          "maxItems": 20,
          "description": "Complete replacement list of assigned collaborator principal IDs."
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • handover.publish auth-required never probed

    Create or update a stable /r/{slug}/ report projection of a Handover revision.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "description": "Stable URL slug; generated from the title when omitted."
        },
        "access": {
          "enum": [
            "organization",
            "public"
          ],
          "type": "string",
          "description": "Who can open the report URL."
        },
        "entryPath": {
          "type": "string",
          "description": "Artifact path opened first when readers visit the report."
        },
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover to project as a stable report."
        },
        "revisionId": {
          "type": "string",
          "pattern": "^rev_",
          "description": "Revision to pin; used when revisionMode is pinned."
        },
        "revisionMode": {
          "enum": [
            "latest",
            "pinned"
          ],
          "type": "string",
          "description": "Follow new revisions automatically or keep one revision pinned."
        }
      },
      "additionalProperties": false
    }
    arguments 43 lines
  • handover.publication auth-required 16h ago

    Read the stable report URL, entry file, access mode, and selected revision for a handover.

    mcp-tool

    {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "handoverId"
          ]
        },
        {
          "required": [
            "slug"
          ]
        }
      ],
      "properties": {
        "slug": {
          "type": "string",
          "description": "Stable published report slug."
        },
        "handoverId": {
          "type": "string",
          "pattern": "^hov_",
          "description": "Handover whose publication should be inspected."
        }
      },
      "additionalProperties": false
    }
    arguments 27 lines
  • handover.okf.import auth-required never probed

    Import Open Knowledge Format files into a new immutable Handover revision. Replaying the same bundle is idempotent.

    mcp-tool

    {
      "type": "object",
      "required": [
        "handoverId",
        "files"
      ],
      "properties": {
        "mode": {
          "enum": [
            "merge",
            "replace"
          ],
          "type": "string",
          "default": "merge",
          "description": "Merge bundle files with inherited artifacts or replace them."
        },
        "files": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "path",
              "content"
            ],
            "properties": {
              "path": {
                "type": "string",
                "description": "Relative path of this file inside the OKF bundle."
              },
              "content": {
                "type": "string",
                "description": "UTF-8 text, or base64 when encoding is base64."
              },
              "encoding": {
                "enum": [
                  "utf-8",
                  "base64"
                ],
                "type": "string",
                "description": "How content is encoded in this request."
              },
              "mediaType": {
                "type": "string",
                "description": "IANA media type; inferred from path when omitted."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 100,
          "minItems": 1,
          "description": "Files from an Open Knowledge Format bundle."
        },
        "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."
        }
      },
      "additionalProperties": false
    }
    arguments 65 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/2e990a5b70452a52/badge.svg)](https://brick.blue/agent/2e990a5b70452a52)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Own the domain? Prove it and the listing carries a verified badge here too: passport.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.