Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,542Letters: 14Defects: 1,324counted 1 min ago
teppi

Server definition

Hash
sha256:d89c69e32d9db52c0225f76ac63c1270601e6803d146514ec080753c99f0b27b
What it is
What a remote MCP server returned when asked what it offers: 13 tools

The blob, as servednamed by its sha256

{ "instructions": "Stashr is the user's private bookmark library. Retrieve progressively: search (or list_bookmarks for newest-first browsing) with a small limit, fetch only the result you need or fetch_many a shortlist of 2-20, and call view_media only when the pixels matter. Media refs on search hits already say whether a bookmark has images; do not fetch just to check. For visual requests (objects, colors, scenes, screenshots, layouts) search with rankMode \"image\". For \"how many\" or breakdown questions call library_stats once instead of paging and counting; list_tags includes per-tag usage counts. Filter values are validated: X is platform \"twitter\", never \"x\". On a validation error, correct the value from the message instead of retrying unchanged. If a result reports degraded retrieval, say results may be incomplete. Only save, edit, archive, restore, or delete when the user asks. Reuse the user's existing tag names. Collection deletion requires explicit confirmation. Never claim a bookmark was saved or changed unless the tool result confirms it. Errors state whether they are retryable: wait retryAfterMs before retrying, and do not retry non-retryable errors. A payment_required error means agent access needs Stashr Pro or an active trial; call get_account to explain it and point the user to https://stashr.me/settings/billing.", "tools": [ { "description": "Archive or restore up to 200 bookmarks in one call. Archiving is reversible; returns the ids whose state actually changed.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "archived": { "description": "true archives the bookmarks, false restores them", "type": "boolean" }, "ids": { "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "maxItems": 200, "minItems": 1, "type": "array" } }, "required": [ "archived", "ids" ], "type": "object" }, "name": "archive_bookmarks", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "ids": { "description": "Bookmark ids whose archive state actually changed", "items": { "type": "string" }, "type": "array" } }, "required": [ "ids" ], "type": "object" } }, { "description": "Fetch the complete content and metadata for one Stashr bookmark id returned by search or list_bookmarks. The text field is the full body rendered as Markdown (headings, lists, links, code, and inlined media preserved).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "fetch", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "id": { "type": "string" }, "metadata": { "additionalProperties": false, "properties": { "archived": { "type": "boolean" }, "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "capturedAt": { "type": "string" }, "contentCreatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentType": { "type": "string" }, "favorite": { "type": "boolean" }, "media": { "items": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "duration": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "height": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ref": { "type": "string" }, "storedUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "type": { "type": "string" }, "url": { "type": "string" }, "width": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "altText", "duration", "height", "ref", "storedUrl", "type", "url", "width" ], "type": "object" }, "type": "array" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "platform": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "archived", "author", "capturedAt", "contentCreatedAt", "contentType", "favorite", "media", "note", "platform", "tags" ], "type": "object" }, "text": { "description": "Full bookmark body rendered as Markdown", "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "metadata", "text", "title", "url" ], "type": "object" } }, { "description": "Fetch the complete content for up to 20 bookmark ids in one call — the same document shape as fetch. Use it when comparing or summarizing several saves from search or list results; missing lists ids that were not found. For a single id, prefer fetch.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "ids": { "items": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "maxItems": 20, "minItems": 1, "type": "array" } }, "required": [ "ids" ], "type": "object" }, "name": "fetch_many", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "documents": { "description": "Full documents in the order the ids were requested", "items": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "metadata": { "additionalProperties": false, "properties": { "archived": { "type": "boolean" }, "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "capturedAt": { "type": "string" }, "contentCreatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentType": { "type": "string" }, "favorite": { "type": "boolean" }, "media": { "items": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "duration": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "height": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ref": { "type": "string" }, "storedUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "type": { "type": "string" }, "url": { "type": "string" }, "width": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "altText", "duration", "height", "ref", "storedUrl", "type", "url", "width" ], "type": "object" }, "type": "array" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "platform": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "archived", "author", "capturedAt", "contentCreatedAt", "contentType", "favorite", "media", "note", "platform", "tags" ], "type": "object" }, "text": { "description": "Full bookmark body rendered as Markdown", "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "metadata", "text", "title", "url" ], "type": "object" }, "type": "array" }, "missing": { "description": "Requested ids that were not found or are not visible", "items": { "type": "string" }, "type": "array" } }, "required": [ "documents", "missing" ], "type": "object" } }, { "description": "Get the authenticated Stashr account: plan, trial status, and remaining AI-tag quota. Use this to explain payment_required errors or report account state.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "get_account", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "access": { "additionalProperties": false, "properties": { "hasAppAccess": { "type": "boolean" }, "hasPaidPlan": { "type": "boolean" }, "hasProAccess": { "type": "boolean" }, "trial": { "anyOf": [ { "additionalProperties": false, "properties": { "tagsRemaining": { "type": "number" }, "trialEndsAt": { "type": "string" } }, "required": [ "tagsRemaining", "trialEndsAt" ], "type": "object" }, { "type": "null" } ] } }, "required": [ "hasAppAccess", "hasPaidPlan", "hasProAccess", "trial" ], "type": "object" }, "email": { "type": "string" }, "id": { "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "name": { "type": "string" } }, "required": [ "access", "email", "id", "image", "name" ], "type": "object" } }, { "description": "Aggregate counts over the user's library in one call: total plus breakdowns by platform, content type, and capture month, and favorite/untagged/note counts. Accepts the same filters as list_bookmarks. Use this for \"how many\" and overview questions instead of paging bookmarks.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "filters": { "properties": { "authorMode": { "enum": [ "include", "exclude" ], "type": "string" }, "authors": { "items": { "description": "An author username (\"naval\"), optionally platform-scoped (\"twitter:naval\")", "minLength": 1, "type": "string" }, "type": "array" }, "capturedAfter": { "description": "Only bookmarks saved on/after this ISO date (inclusive)", "type": "string" }, "capturedBefore": { "description": "Only bookmarks saved before this ISO date (exclusive)", "type": "string" }, "contentTypeMode": { "enum": [ "include", "exclude" ], "type": "string" }, "contentTypes": { "items": { "description": "A content type (\"article\"), optionally platform-scoped (\"twitter:article\"). Valid types: repo, image, post, video, comment, article, page, snippet", "type": "string" }, "type": "array" }, "favorite": { "description": "[\"favorite\"] = only favorites; [\"not-favorite\"] = only non-favorites", "items": { "enum": [ "favorite", "not-favorite" ], "type": "string" }, "type": "array" }, "media": { "description": "Media presence: \"image\"/\"video\" = has that type, \"any-media\" = has any, \"text-only\" = has none (not combinable with the others)", "items": { "enum": [ "image", "video", "any-media", "text-only" ], "type": "string" }, "type": "array" }, "mediaMode": { "enum": [ "include", "exclude" ], "type": "string" }, "note": { "description": "[\"has-note\"] = only bookmarks with a user note", "items": { "enum": [ "has-note", "no-note" ], "type": "string" }, "type": "array" }, "platformMode": { "enum": [ "include", "exclude" ], "type": "string" }, "platforms": { "items": { "description": "Platform id — X/Twitter is \"twitter\"", "enum": [ "github", "instagram", "reddit", "tiktok", "twitter", "web", "youtube" ], "type": "string" }, "type": "array" }, "tagMode": { "description": "include_any = OR (default), include_all = AND, exclude_any = none of these tags, exclude_all = not all of them", "enum": [ "include_any", "include_all", "exclude_any", "exclude_all" ], "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "untagged": { "description": "true = only bookmarks with no tags at all", "type": "boolean" } }, "type": "object" }, "state": { "default": "active", "description": "Which bookmarks to count", "enum": [ "active", "archived", "all" ], "type": "string" } }, "type": "object" }, "name": "library_stats", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "archived": { "type": "number" }, "byContentType": { "additionalProperties": { "type": "number" }, "propertyNames": { "type": "string" }, "type": "object" }, "byMonth": { "additionalProperties": { "type": "number" }, "description": "Capture counts keyed by \"YYYY-MM\", newest first", "propertyNames": { "type": "string" }, "type": "object" }, "byPlatform": { "additionalProperties": { "type": "number" }, "propertyNames": { "type": "string" }, "type": "object" }, "favorites": { "type": "number" }, "total": { "type": "number" }, "untagged": { "type": "number" }, "withNote": { "type": "number" } }, "required": [ "archived", "byContentType", "byMonth", "byPlatform", "favorites", "total", "untagged", "withNote" ], "type": "object" } }, { "description": "Browse bookmarks in reverse capture order with structured filters, or the contents of a saved collection via collectionId. Prefer search for free-text or semantic discovery. Results include a nextCursor when more pages exist; a cursor only works with the exact same filters, collection, and state.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "collectionId": { "description": "List a saved collection's bookmarks: its stored filters are applied, with any explicit filters here overriding same-name ones", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "cursor": { "description": "Pass the nextCursor value from the previous page to continue paging", "type": "string" }, "filters": { "properties": { "authorMode": { "enum": [ "include", "exclude" ], "type": "string" }, "authors": { "items": { "description": "An author username (\"naval\"), optionally platform-scoped (\"twitter:naval\")", "minLength": 1, "type": "string" }, "type": "array" }, "capturedAfter": { "description": "Only bookmarks saved on/after this ISO date (inclusive)", "type": "string" }, "capturedBefore": { "description": "Only bookmarks saved before this ISO date (exclusive)", "type": "string" }, "contentTypeMode": { "enum": [ "include", "exclude" ], "type": "string" }, "contentTypes": { "items": { "description": "A content type (\"article\"), optionally platform-scoped (\"twitter:article\"). Valid types: repo, image, post, video, comment, article, page, snippet", "type": "string" }, "type": "array" }, "favorite": { "description": "[\"favorite\"] = only favorites; [\"not-favorite\"] = only non-favorites", "items": { "enum": [ "favorite", "not-favorite" ], "type": "string" }, "type": "array" }, "media": { "description": "Media presence: \"image\"/\"video\" = has that type, \"any-media\" = has any, \"text-only\" = has none (not combinable with the others)", "items": { "enum": [ "image", "video", "any-media", "text-only" ], "type": "string" }, "type": "array" }, "mediaMode": { "enum": [ "include", "exclude" ], "type": "string" }, "note": { "description": "[\"has-note\"] = only bookmarks with a user note", "items": { "enum": [ "has-note", "no-note" ], "type": "string" }, "type": "array" }, "platformMode": { "enum": [ "include", "exclude" ], "type": "string" }, "platforms": { "items": { "description": "Platform id — X/Twitter is \"twitter\"", "enum": [ "github", "instagram", "reddit", "tiktok", "twitter", "web", "youtube" ], "type": "string" }, "type": "array" }, "tagMode": { "description": "include_any = OR (default), include_all = AND, exclude_any = none of these tags, exclude_all = not all of them", "enum": [ "include_any", "include_all", "exclude_any", "exclude_all" ], "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "untagged": { "description": "true = only bookmarks with no tags at all", "type": "boolean" } }, "type": "object" }, "limit": { "default": 20, "maximum": 50, "minimum": 1, "type": "integer" }, "state": { "default": "active", "enum": [ "active", "archived", "all" ], "type": "string" } }, "type": "object" }, "name": "list_bookmarks", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "degraded": { "description": "Present when retrieval quality was reduced: semantic_unavailable = embedding failed (lexical-only results); image_rank_unavailable = no image captions, fell back to post ranking", "items": { "enum": [ "semantic_unavailable", "image_rank_unavailable" ], "type": "string" }, "type": "array" }, "items": { "items": { "additionalProperties": false, "properties": { "archived": { "type": "boolean" }, "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "capturedAt": { "type": "string" }, "contentCreatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentType": { "type": "string" }, "favorite": { "type": "boolean" }, "id": { "type": "string" }, "matchedMedia": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "caption": { "type": "string" }, "height": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ref": { "type": "string" }, "type": { "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "width": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "altText", "caption", "height", "ref", "type", "url", "width" ], "type": "object" }, "media": { "description": "Lightweight refs usable with view_media", "items": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "ref": { "type": "string" }, "type": { "type": "string" } }, "required": [ "altText", "ref", "type" ], "type": "object" }, "type": "array" }, "mediaCount": { "type": "number" }, "platform": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "text": { "description": "Bounded plain-text snippet", "type": "string" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Real title only; null when the source has none" }, "url": { "type": "string" } }, "required": [ "archived", "author", "capturedAt", "contentCreatedAt", "contentType", "favorite", "id", "media", "mediaCount", "platform", "tags", "text", "title", "url" ], "type": "object" }, "type": "array" }, "nextCursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "rankMode": { "enum": [ "post", "image" ], "type": "string" }, "requestedRankMode": { "description": "Present only when rankMode differs from what was requested", "enum": [ "post", "image" ], "type": "string" } }, "required": [ "items", "nextCursor", "rankMode" ], "type": "object" } }, { "description": "List saved filter collections. Pass a collection id to list_bookmarks to read its contents.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "list_collections", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "collections": { "items": { "additionalProperties": false, "properties": { "color": { "type": "string" }, "filters": { "additionalProperties": {}, "propertyNames": { "type": "string" }, "type": "object" }, "icon": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "pinned": { "type": "boolean" }, "position": { "type": "number" } }, "required": [ "color", "filters", "icon", "id", "name", "pinned", "position" ], "type": "object" }, "type": "array" } }, "required": [ "collections" ], "type": "object" } }, { "description": "List the user's Stashr tags with usage counts. Use the returned tag names in bookmark filters and tag updates.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "list_tags", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "tags": { "items": { "additionalProperties": false, "properties": { "color": { "type": "string" }, "count": { "description": "Active bookmarks currently carrying this tag", "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "color", "count", "id", "name" ], "type": "object" }, "type": "array" } }, "required": [ "tags" ], "type": "object" } }, { "description": "Create, update, or deliberately delete saved Stashr filter collections (use list_collections to read them). Create requires name; update and delete require id; delete also requires confirm=true.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "action": { "enum": [ "create", "update", "delete" ], "type": "string" }, "color": { "description": "A Stashr collection color id", "type": "string" }, "confirm": { "description": "Must be true to delete a collection", "type": "boolean" }, "filters": { "properties": { "authorMode": { "enum": [ "include", "exclude" ], "type": "string" }, "authors": { "items": { "description": "An author username (\"naval\"), optionally platform-scoped (\"twitter:naval\")", "minLength": 1, "type": "string" }, "type": "array" }, "capturedAfter": { "description": "Only bookmarks saved on/after this ISO date (inclusive)", "type": "string" }, "capturedBefore": { "description": "Only bookmarks saved before this ISO date (exclusive)", "type": "string" }, "contentTypeMode": { "enum": [ "include", "exclude" ], "type": "string" }, "contentTypes": { "items": { "description": "A content type (\"article\"), optionally platform-scoped (\"twitter:article\"). Valid types: repo, image, post, video, comment, article, page, snippet", "type": "string" }, "type": "array" }, "favorite": { "description": "[\"favorite\"] = only favorites; [\"not-favorite\"] = only non-favorites", "items": { "enum": [ "favorite", "not-favorite" ], "type": "string" }, "type": "array" }, "media": { "description": "Media presence: \"image\"/\"video\" = has that type, \"any-media\" = has any, \"text-only\" = has none (not combinable with the others)", "items": { "enum": [ "image", "video", "any-media", "text-only" ], "type": "string" }, "type": "array" }, "mediaMode": { "enum": [ "include", "exclude" ], "type": "string" }, "note": { "description": "[\"has-note\"] = only bookmarks with a user note", "items": { "enum": [ "has-note", "no-note" ], "type": "string" }, "type": "array" }, "platformMode": { "enum": [ "include", "exclude" ], "type": "string" }, "platforms": { "items": { "description": "Platform id — X/Twitter is \"twitter\"", "enum": [ "github", "instagram", "reddit", "tiktok", "twitter", "web", "youtube" ], "type": "string" }, "type": "array" }, "tagMode": { "description": "include_any = OR (default), include_all = AND, exclude_any = none of these tags, exclude_all = not all of them", "enum": [ "include_any", "include_all", "exclude_any", "exclude_all" ], "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "untagged": { "description": "true = only bookmarks with no tags at all", "type": "boolean" } }, "type": "object" }, "icon": { "description": "A Stashr collection icon id", "type": "string" }, "id": { "description": "Collection id, required for update and delete", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "name": { "description": "Collection name, required for create", "maxLength": 50, "minLength": 1, "type": "string" }, "pinned": { "description": "Pin or unpin the collection in the sidebar (update only)", "type": "boolean" } }, "required": [ "action" ], "type": "object" }, "name": "manage_collection", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "collection": { "additionalProperties": false, "properties": { "color": { "type": "string" }, "filters": { "additionalProperties": {}, "propertyNames": { "type": "string" }, "type": "object" }, "icon": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "pinned": { "type": "boolean" }, "position": { "type": "number" } }, "required": [ "color", "filters", "icon", "id", "name", "pinned", "position" ], "type": "object" }, "deleted": { "additionalProperties": false, "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "type": "object" } }, { "description": "Save a public URL to Stashr. Repeated calls for the same URL are idempotent and return the existing bookmark.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "url": { "format": "uri", "maxLength": 2048, "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "save_bookmark", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bookmark": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "metadata": { "additionalProperties": false, "properties": { "archived": { "type": "boolean" }, "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "capturedAt": { "type": "string" }, "contentCreatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentType": { "type": "string" }, "favorite": { "type": "boolean" }, "media": { "items": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "duration": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "height": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ref": { "type": "string" }, "storedUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "type": { "type": "string" }, "url": { "type": "string" }, "width": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "altText", "duration", "height", "ref", "storedUrl", "type", "url", "width" ], "type": "object" }, "type": "array" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "platform": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "archived", "author", "capturedAt", "contentCreatedAt", "contentType", "favorite", "media", "note", "platform", "tags" ], "type": "object" }, "text": { "description": "Full bookmark body rendered as Markdown", "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "metadata", "text", "title", "url" ], "type": "object" }, "created": { "type": "boolean" } }, "required": [ "bookmark", "created" ], "type": "object" } }, { "description": "Search the user's Stashr bookmarks semantically. Use this before fetch when finding saved knowledge by meaning, wording, tag, author, platform, or content type. For visual queries (objects, colors, screenshots, layouts) set rankMode \"image\" to rank individual images by their captions; matched refs can be passed to view_media. Results include a nextCursor when more pages exist; a cursor only works with the exact same query, filters, and state. Ranking covers the top 200 candidates — narrow with filters rather than paging deep.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cursor": { "description": "Pass the nextCursor value from the previous page to continue paging", "type": "string" }, "filters": { "properties": { "authorMode": { "enum": [ "include", "exclude" ], "type": "string" }, "authors": { "items": { "description": "An author username (\"naval\"), optionally platform-scoped (\"twitter:naval\")", "minLength": 1, "type": "string" }, "type": "array" }, "capturedAfter": { "description": "Only bookmarks saved on/after this ISO date (inclusive)", "type": "string" }, "capturedBefore": { "description": "Only bookmarks saved before this ISO date (exclusive)", "type": "string" }, "contentTypeMode": { "enum": [ "include", "exclude" ], "type": "string" }, "contentTypes": { "items": { "description": "A content type (\"article\"), optionally platform-scoped (\"twitter:article\"). Valid types: repo, image, post, video, comment, article, page, snippet", "type": "string" }, "type": "array" }, "favorite": { "description": "[\"favorite\"] = only favorites; [\"not-favorite\"] = only non-favorites", "items": { "enum": [ "favorite", "not-favorite" ], "type": "string" }, "type": "array" }, "media": { "description": "Media presence: \"image\"/\"video\" = has that type, \"any-media\" = has any, \"text-only\" = has none (not combinable with the others)", "items": { "enum": [ "image", "video", "any-media", "text-only" ], "type": "string" }, "type": "array" }, "mediaMode": { "enum": [ "include", "exclude" ], "type": "string" }, "note": { "description": "[\"has-note\"] = only bookmarks with a user note", "items": { "enum": [ "has-note", "no-note" ], "type": "string" }, "type": "array" }, "platformMode": { "enum": [ "include", "exclude" ], "type": "string" }, "platforms": { "items": { "description": "Platform id — X/Twitter is \"twitter\"", "enum": [ "github", "instagram", "reddit", "tiktok", "twitter", "web", "youtube" ], "type": "string" }, "type": "array" }, "tagMode": { "description": "include_any = OR (default), include_all = AND, exclude_any = none of these tags, exclude_all = not all of them", "enum": [ "include_any", "include_all", "exclude_any", "exclude_all" ], "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "untagged": { "description": "true = only bookmarks with no tags at all", "type": "boolean" } }, "type": "object" }, "limit": { "default": 10, "maximum": 25, "minimum": 1, "type": "integer" }, "query": { "maxLength": 200, "minLength": 1, "type": "string" }, "rankMode": { "default": "post", "description": "\"post\" ranks whole bookmarks; \"image\" ranks individual stored images by caption for visual queries", "enum": [ "post", "image" ], "type": "string" }, "state": { "description": "Which bookmarks to search; defaults to active only", "enum": [ "active", "archived", "all" ], "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "degraded": { "description": "Present when retrieval quality was reduced: semantic_unavailable = embedding failed (lexical-only results); image_rank_unavailable = no image captions, fell back to post ranking", "items": { "enum": [ "semantic_unavailable", "image_rank_unavailable" ], "type": "string" }, "type": "array" }, "nextCursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "rankMode": { "description": "The ranking that actually ran", "enum": [ "post", "image" ], "type": "string" }, "requestedRankMode": { "description": "Present only when rankMode differs from what was requested", "enum": [ "post", "image" ], "type": "string" }, "results": { "items": { "additionalProperties": false, "properties": { "archived": { "type": "boolean" }, "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "capturedAt": { "type": "string" }, "contentCreatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentType": { "type": "string" }, "favorite": { "type": "boolean" }, "id": { "type": "string" }, "matchedMedia": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "caption": { "type": "string" }, "height": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ref": { "type": "string" }, "type": { "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "width": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "altText", "caption", "height", "ref", "type", "url", "width" ], "type": "object" }, "media": { "description": "Lightweight refs usable with view_media", "items": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "ref": { "type": "string" }, "type": { "type": "string" } }, "required": [ "altText", "ref", "type" ], "type": "object" }, "type": "array" }, "mediaCount": { "type": "number" }, "platform": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "text": { "description": "Bounded plain-text snippet", "type": "string" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Real title only; null when the source has none" }, "url": { "type": "string" } }, "required": [ "archived", "author", "capturedAt", "contentCreatedAt", "contentType", "favorite", "id", "media", "mediaCount", "platform", "tags", "text", "title", "url" ], "type": "object" }, "type": "array" } }, "required": [ "nextCursor", "rankMode", "results" ], "type": "object" } }, { "description": "Update a bookmark's note, favorite state, tags, or reversible archive state. Tag values are tag names; reuse the user's existing names (list_tags) rather than inventing near-duplicates.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "archived": { "type": "boolean" }, "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "isFavorite": { "type": "boolean" }, "note": { "anyOf": [ { "maxLength": 2000, "type": "string" }, { "type": "null" } ] }, "tags": { "properties": { "add": { "items": { "type": "string" }, "type": "array" }, "remove": { "items": { "type": "string" }, "type": "array" }, "set": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": [ "id" ], "type": "object" }, "name": "update_bookmark", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "id": { "type": "string" }, "metadata": { "additionalProperties": false, "properties": { "archived": { "type": "boolean" }, "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "capturedAt": { "type": "string" }, "contentCreatedAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "contentType": { "type": "string" }, "favorite": { "type": "boolean" }, "media": { "items": { "additionalProperties": false, "properties": { "altText": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "duration": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "height": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ref": { "type": "string" }, "storedUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "type": { "type": "string" }, "url": { "type": "string" }, "width": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "altText", "duration", "height", "ref", "storedUrl", "type", "url", "width" ], "type": "object" }, "type": "array" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "platform": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "archived", "author", "capturedAt", "contentCreatedAt", "contentType", "favorite", "media", "note", "platform", "tags" ], "type": "object" }, "text": { "description": "Full bookmark body rendered as Markdown", "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "metadata", "text", "title", "url" ], "type": "object" } }, { "description": "View up to four selected stored images from a bookmark. Use refs returned by image-ranked search or fetch. Images are bounded previews; call only when visual inspection is useful.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "id": { "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "type": "string" }, "refs": { "items": { "maxLength": 500, "minLength": 1, "type": "string" }, "maxItems": 4, "minItems": 1, "type": "array" } }, "required": [ "id", "refs" ], "type": "object" }, "name": "view_media", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "bookmarkId": { "type": "string" }, "failures": { "items": { "additionalProperties": false, "properties": { "message": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "message", "ref" ], "type": "object" }, "type": "array" }, "images": { "items": { "additionalProperties": false, "properties": { "byteLength": { "type": "number" }, "height": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "mimeType": { "type": "string" }, "ref": { "type": "string" }, "width": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "byteLength", "height", "mimeType", "ref", "width" ], "type": "object" }, "type": "array" } }, "required": [ "bookmarkId", "failures", "images" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:d89c69e32d9db52c0225f76ac63c1270601e6803d146514ec080753c99f0b27b | sha256sum