Server definition
- Hash
- sha256:6593bd57375c8f865852c7d3d2d10aa258fc99c34b4b8ba313b2abe81bb5ecf4
- What it is
- What a remote MCP server returned when asked what it offers: 17 tools
The blob, as servednamed by its sha256
{
"instructions": "Search before creating duplicate context. Read a handover and its artifacts before continuing it. Pass the current revision ID to handover.continue.",
"tools": [
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Actionable annotation body in plain text or Markdown.",
"maxLength": 10000,
"minLength": 1,
"type": "string"
},
"handoverId": {
"description": "Handover containing the artifact being annotated.",
"pattern": "^hov_",
"type": "string"
},
"mentionPrincipalIds": {
"description": "Collaborator principal IDs to mention and notify.",
"items": {
"pattern": "^prn_",
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"target": {
"additionalProperties": false,
"description": "Immutable artifact location to anchor this annotation.",
"properties": {
"artifactId": {
"description": "Artifact containing the selected text or code.",
"pattern": "^art_",
"type": "string"
},
"revisionId": {
"description": "Immutable revision containing the annotated artifact.",
"pattern": "^rev_",
"type": "string"
},
"selector": {
"additionalProperties": false,
"description": "Exact quote plus optional position and surrounding context.",
"properties": {
"endLine": {
"description": "Zero-based line where the selection ends.",
"minimum": 0,
"type": "integer"
},
"endOffset": {
"description": "Zero-based character offset immediately after the selection.",
"minimum": 0,
"type": "integer"
},
"exact": {
"description": "The exact selected text.",
"maxLength": 4000,
"minLength": 1,
"type": "string"
},
"prefix": {
"description": "Text immediately before the selection.",
"maxLength": 500,
"type": "string"
},
"startLine": {
"description": "Zero-based line where the selection starts.",
"minimum": 0,
"type": "integer"
},
"startOffset": {
"description": "Zero-based character offset where the selection starts.",
"minimum": 0,
"type": "integer"
},
"suffix": {
"description": "Text immediately after the selection.",
"maxLength": 500,
"type": "string"
}
},
"required": [
"exact"
],
"type": "object"
},
"targetKind": {
"description": "Rendering context used to relocate and display the annotation.",
"enum": [
"text",
"code",
"html"
],
"type": "string"
}
},
"required": [
"revisionId",
"artifactId",
"targetKind",
"selector"
],
"type": "object"
}
},
"required": [
"handoverId",
"body",
"target"
],
"type": "object"
},
"name": "handover.annotate",
"outputSchema": null
},
{
"description": "Read revision-anchored file comments, selected text, status, authorship, and resolution metadata. Use status=open to find feedback that still needs action.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"artifactId": {
"pattern": "^art_",
"type": "string"
},
"handoverId": {
"description": "Handover whose annotation threads should be read.",
"pattern": "^hov_",
"type": "string"
},
"revisionId": {
"pattern": "^rev_",
"type": "string"
},
"status": {
"enum": [
"open",
"resolved",
"stale"
],
"type": "string"
}
},
"required": [
"handoverId"
],
"type": "object"
},
"name": "handover.annotations",
"outputSchema": null
},
{
"description": "Replace the open assignments with the supplied collaborator identities. This changes collaboration state, not the immutable handover revision.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"handoverId": {
"description": "Handover whose open assignments will be replaced.",
"pattern": "^hov_",
"type": "string"
},
"principalIds": {
"description": "Complete replacement list of assigned collaborator principal IDs.",
"items": {
"pattern": "^prn_",
"type": "string"
},
"maxItems": 20,
"type": "array"
}
},
"required": [
"handoverId",
"principalIds"
],
"type": "object"
},
"name": "handover.assign",
"outputSchema": null
},
{
"description": "Append a discussion comment and optionally notify explicitly mentioned collaborators.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Comment body in plain text or Markdown.",
"maxLength": 10000,
"minLength": 1,
"type": "string"
},
"handoverId": {
"description": "Handover discussion to append the comment to.",
"pattern": "^hov_",
"type": "string"
},
"mentionPrincipalIds": {
"description": "Collaborator principal IDs to mention and notify.",
"items": {
"pattern": "^prn_",
"type": "string"
},
"maxItems": 20,
"type": "array"
}
},
"required": [
"handoverId",
"body"
],
"type": "object"
},
"name": "handover.comment",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"note"
]
},
{
"required": [
"brief"
]
},
{
"required": [
"artifacts"
]
}
],
"properties": {
"artifacts": {
"description": "New or replacement files; omitted files remain inherited.",
"items": {
"additionalProperties": false,
"properties": {
"content": {
"description": "UTF-8 text, or base64 when encoding is base64.",
"type": "string"
},
"encoding": {
"default": "utf-8",
"enum": [
"utf-8",
"base64"
],
"type": "string"
},
"mediaType": {
"description": "IANA media type, such as text/markdown or text/x-sql.",
"type": "string"
},
"name": {
"description": "Filename shown in Handover.",
"type": "string"
}
},
"required": [
"name",
"content"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"brief": {
"additionalProperties": false,
"description": "Updated structured continuation brief.",
"minProperties": 1,
"properties": {
"currentState": {
"description": "Verified state at the moment this revision is published.",
"type": "string"
},
"decisions": {
"description": "Decisions already made that successors should preserve.",
"items": {
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"nextSteps": {
"description": "Concrete continuation steps for the receiving actor.",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Optional stable identifier for this step.",
"type": "string"
},
"status": {
"description": "Whether the step still needs action.",
"enum": [
"open",
"done"
],
"type": "string"
},
"text": {
"description": "One actionable continuation step.",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"maxItems": 50,
"type": "array"
},
"objective": {
"description": "The outcome the next human or agent should continue toward.",
"type": "string"
},
"openQuestions": {
"description": "Unresolved questions that still require evidence or judgment.",
"items": {
"type": "string"
},
"maxItems": 50,
"type": "array"
}
},
"type": "object"
},
"expectedRevisionId": {
"description": "Current revision ID returned by handover.get; prevents lost updates.",
"pattern": "^rev_",
"type": "string"
},
"handoverId": {
"description": "Handover to continue after reading its current snapshot.",
"pattern": "^hov_",
"type": "string"
},
"note": {
"description": "What changed or what the next collaborator should know.",
"minLength": 1,
"type": "string"
}
},
"required": [
"handoverId",
"expectedRevisionId"
],
"type": "object"
},
"name": "handover.continue",
"outputSchema": null
},
{
"description": "Create durable shared context with an initial immutable revision. Authorship comes from the authenticated Handover identity.",
"inputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"note"
]
},
{
"required": [
"brief"
]
},
{
"required": [
"artifacts"
]
}
],
"properties": {
"artifacts": {
"description": "Files attached to the initial immutable revision.",
"items": {
"additionalProperties": false,
"properties": {
"content": {
"description": "UTF-8 text, or base64 when encoding is base64.",
"type": "string"
},
"encoding": {
"default": "utf-8",
"enum": [
"utf-8",
"base64"
],
"type": "string"
},
"mediaType": {
"description": "IANA media type, such as text/markdown or text/x-sql.",
"type": "string"
},
"name": {
"description": "Filename shown in Handover.",
"type": "string"
}
},
"required": [
"name",
"content"
],
"type": "object"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
},
"brief": {
"additionalProperties": false,
"description": "Structured continuation brief for humans and agents.",
"minProperties": 1,
"properties": {
"currentState": {
"description": "Verified state at the moment this revision is published.",
"type": "string"
},
"decisions": {
"description": "Decisions already made that successors should preserve.",
"items": {
"type": "string"
},
"maxItems": 50,
"type": "array"
},
"nextSteps": {
"description": "Concrete continuation steps for the receiving actor.",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Optional stable identifier for this step.",
"type": "string"
},
"status": {
"description": "Whether the step still needs action.",
"enum": [
"open",
"done"
],
"type": "string"
},
"text": {
"description": "One actionable continuation step.",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"maxItems": 50,
"type": "array"
},
"objective": {
"description": "The outcome the next human or agent should continue toward.",
"type": "string"
},
"openQuestions": {
"description": "Unresolved questions that still require evidence or judgment.",
"items": {
"type": "string"
},
"maxItems": 50,
"type": "array"
}
},
"type": "object"
},
"note": {
"description": "Free-form continuation note recorded in the initial revision.",
"minLength": 1,
"type": "string"
},
"summary": {
"description": "Concise explanation of what this handover contains.",
"maxLength": 2000,
"type": "string"
},
"title": {
"description": "Short, specific name for the durable context.",
"maxLength": 200,
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "handover.create",
"outputSchema": null
},
{
"description": "Read a handover snapshot, continuation brief, artifact metadata, and revision history. Omit revisionId for the current snapshot.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"handoverId": {
"description": "Handover identifier returned by handover.search or handover.create.",
"pattern": "^hov_",
"type": "string"
},
"revisionId": {
"description": "Optional immutable revision; omit to inspect the current revision.",
"pattern": "^rev_",
"type": "string"
}
},
"required": [
"handoverId"
],
"type": "object"
},
"name": "handover.get",
"outputSchema": null
},
{
"description": "Export a handover revision as an Open Knowledge Format bundle for another human or agent system.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"handoverId": {
"description": "Handover to export.",
"pattern": "^hov_",
"type": "string"
},
"revisionId": {
"description": "Immutable revision to export; defaults to the current revision.",
"pattern": "^rev_",
"type": "string"
}
},
"required": [
"handoverId"
],
"type": "object"
},
"name": "handover.okf.export",
"outputSchema": null
},
{
"description": "Import Open Knowledge Format files into a new immutable Handover revision. Replaying the same bundle is idempotent.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"expectedRevisionId": {
"description": "Current revision ID used to prevent conflicting imports.",
"pattern": "^rev_",
"type": "string"
},
"files": {
"description": "Files from an Open Knowledge Format bundle.",
"items": {
"additionalProperties": false,
"properties": {
"content": {
"description": "UTF-8 text, or base64 when encoding is base64.",
"type": "string"
},
"encoding": {
"description": "How content is encoded in this request.",
"enum": [
"utf-8",
"base64"
],
"type": "string"
},
"mediaType": {
"description": "IANA media type; inferred from path when omitted.",
"type": "string"
},
"path": {
"description": "Relative path of this file inside the OKF bundle.",
"type": "string"
}
},
"required": [
"path",
"content"
],
"type": "object"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
"handoverId": {
"description": "Existing handover that will receive the imported bundle.",
"pattern": "^hov_",
"type": "string"
},
"mode": {
"default": "merge",
"description": "Merge bundle files with inherited artifacts or replace them.",
"enum": [
"merge",
"replace"
],
"type": "string"
}
},
"required": [
"handoverId",
"files"
],
"type": "object"
},
"name": "handover.okf.import",
"outputSchema": null
},
{
"description": "Read the stable report URL, entry file, access mode, and selected revision for a handover.",
"inputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"handoverId"
]
},
{
"required": [
"slug"
]
}
],
"properties": {
"handoverId": {
"description": "Handover whose publication should be inspected.",
"pattern": "^hov_",
"type": "string"
},
"slug": {
"description": "Stable published report slug.",
"type": "string"
}
},
"type": "object"
},
"name": "handover.publication",
"outputSchema": null
},
{
"description": "Create or update a stable /r/{slug}/ report projection of a Handover revision.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"access": {
"description": "Who can open the report URL.",
"enum": [
"organization",
"public"
],
"type": "string"
},
"entryPath": {
"description": "Artifact path opened first when readers visit the report.",
"type": "string"
},
"handoverId": {
"description": "Handover to project as a stable report.",
"pattern": "^hov_",
"type": "string"
},
"revisionId": {
"description": "Revision to pin; used when revisionMode is pinned.",
"pattern": "^rev_",
"type": "string"
},
"revisionMode": {
"description": "Follow new revisions automatically or keep one revision pinned.",
"enum": [
"latest",
"pinned"
],
"type": "string"
},
"slug": {
"description": "Stable URL slug; generated from the title when omitted.",
"type": "string"
}
},
"required": [
"handoverId"
],
"type": "object"
},
"name": "handover.publish",
"outputSchema": null
},
{
"description": "Return the selected files of a published report with paths, hashes, media types, and UTF-8 or base64 content.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"files": {
"description": "Optional relative paths to return; omit for every file.",
"items": {
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"includeBinary": {
"default": false,
"description": "Return binary files as base64 when true.",
"type": "boolean"
},
"slug": {
"description": "Stable published report slug.",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "handover.pull",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"artifactId": {
"description": "Artifact identifier returned by handover.get.",
"pattern": "^art_",
"type": "string"
},
"maxBytes": {
"default": 524288,
"description": "Maximum decoded bytes to return before reporting truncation.",
"maximum": 2097152,
"minimum": 1,
"type": "integer"
}
},
"required": [
"artifactId"
],
"type": "object"
},
"name": "handover.read_artifact",
"outputSchema": null
},
{
"description": "Find current shared context with hybrid, semantic, or lexical retrieval across metadata and artifact content. Use an empty query to list recent handovers.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"type": "string"
},
"limit": {
"default": 30,
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"mode": {
"default": "hybrid",
"enum": [
"hybrid",
"semantic",
"lexical"
],
"type": "string"
},
"query": {
"type": "string"
},
"status": {
"default": "active",
"enum": [
"active",
"archived",
"trashed"
],
"type": "string"
}
},
"type": "object"
},
"name": "handover.search",
"outputSchema": null
},
{
"description": "Read comments, explicit mentions, assignments, and eligible collaborators without changing revision history.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"handoverId": {
"description": "Handover whose discussion and assignments should be read.",
"pattern": "^hov_",
"type": "string"
}
},
"required": [
"handoverId"
],
"type": "object"
},
"name": "handover.thread",
"outputSchema": null
},
{
"description": "Edit an authored comment, or resolve/reopen an annotation. Set resolvedRevisionId when a new handover revision addressed the feedback.",
"inputSchema": {
"additionalProperties": false,
"minProperties": 3,
"properties": {
"body": {
"description": "Replacement comment body; omit to preserve the current body.",
"maxLength": 10000,
"minLength": 1,
"type": "string"
},
"commentId": {
"description": "Comment or annotation to edit, resolve, or reopen.",
"pattern": "^cmt_",
"type": "string"
},
"handoverId": {
"description": "Handover containing the comment.",
"pattern": "^hov_",
"type": "string"
},
"mentionPrincipalIds": {
"description": "Replacement collaborator mentions.",
"items": {
"pattern": "^prn_",
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"resolvedRevisionId": {
"anyOf": [
{
"pattern": "^rev_",
"type": "string"
},
{
"type": "null"
}
],
"description": "Revision that addressed the feedback, or null when reopening."
},
"status": {
"description": "Open, resolve, or reopen the feedback thread.",
"enum": [
"open",
"resolved"
],
"type": "string"
},
"target": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"artifactId": {
"description": "Artifact containing the selected text or code.",
"pattern": "^art_",
"type": "string"
},
"revisionId": {
"description": "Immutable revision containing the annotated artifact.",
"pattern": "^rev_",
"type": "string"
},
"selector": {
"additionalProperties": false,
"description": "Exact quote plus optional position and surrounding context.",
"properties": {
"endLine": {
"description": "Zero-based line where the selection ends.",
"minimum": 0,
"type": "integer"
},
"endOffset": {
"description": "Zero-based character offset immediately after the selection.",
"minimum": 0,
"type": "integer"
},
"exact": {
"description": "The exact selected text.",
"maxLength": 4000,
"minLength": 1,
"type": "string"
},
"prefix": {
"description": "Text immediately before the selection.",
"maxLength": 500,
"type": "string"
},
"startLine": {
"description": "Zero-based line where the selection starts.",
"minimum": 0,
"type": "integer"
},
"startOffset": {
"description": "Zero-based character offset where the selection starts.",
"minimum": 0,
"type": "integer"
},
"suffix": {
"description": "Text immediately after the selection.",
"maxLength": 500,
"type": "string"
}
},
"required": [
"exact"
],
"type": "object"
},
"targetKind": {
"description": "Rendering context used to relocate and display the annotation.",
"enum": [
"text",
"code",
"html"
],
"type": "string"
}
},
"required": [
"revisionId",
"artifactId",
"targetKind",
"selector"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Replacement annotation target, or null to remove the anchor."
}
},
"required": [
"handoverId",
"commentId"
],
"type": "object"
},
"name": "handover.update_comment",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "handover.whoami",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:6593bd57375c8f865852c7d3d2d10aa258fc99c34b4b8ba313b2abe81bb5ecf4 | sha256sum