Skip to content
On this page

MCP

Remote MCP server for Teak card operations

Teak provides a remote MCP server at https://teakvault.com/mcp.

For agents running inside the signed-in Teak web app, WebMCP offers read-only card tools with no extra authentication.

Base URLs

  • Production: https://teakvault.com/mcp
  • Local development: http://localhost:3001/mcp
  • Discovery manifest: https://teakvault.com/.well-known/mcp.json

Authentication

Teak’s MCP server supports two authentication methods.

Spec-compliant MCP clients discover Teak’s authorization server, open your browser to sign in, and store the resulting access token automatically. External clients show an approval screen with the requested access before Teak connects them. Access tokens are short-lived and refresh automatically.

For example, with Claude:

claude mcp add --transport http teak https://teakvault.com/mcp

Start the MCP connection, then complete the browser sign-in when prompted.

You can revoke a connection at any time from Teak Settings → SecurityConnections. Disconnecting an app revokes its access across all installations, including its refresh credentials. Every subsequent MCP request checks access again, even in an already-open client. API-key connections are managed under SecurityAPI keys.

Connect Claude Code to Teak MCP with browser sign-in.

Open in Cursor

Send a Teak API key in the Authorization header:

Authorization: Bearer teakapi_...

Generate and manage API keys in Teak Settings. Each account can keep up to 10 active keys.

Transport

MCP Streamable HTTP at /mcp (a trailing slash also works), answered in stateless JSON mode. JSON-RPC batches are limited to 100 messages.

Available Tools

Core card tools

  • teak_v1_list_cards
    • Input: { limit?: number, cursor?: string, type?: string, favorited?: boolean, tag?: string, sort?: "newest" | "oldest", createdAfter?: number, createdBefore?: number }
    • Output: { items: Card[], pageInfo: { hasMore: boolean, nextCursor: string | null } }
  • teak_v1_get_card
    • Input: { cardId: string }
    • Output: full card object
  • teak_v1_create_card
    • Input: text/URL fields or uploaded-file fields { fileKey, fileEtag?, fileName, mimeType, fileSize?, cardType? }. Pass the ETag response header from the upload PUT as fileEtag so Teak can verify the exact stored object. Explicit cardType: "text" stores raw Markdown exactly; automatic URL, quote, and palette detection remains when the type is omitted.
    • Output: { status: "created", cardId: string, appUrl: string }
  • teak_v1_list_tags
    • Input: {}
    • Output: { items: { name: string, count: number }[] }
  • teak_v1_get_card_changes
    • Input: { since: number, cursor?: string, limit?: number }
    • Output: { items: Card[], deletedIds: string[], pageInfo: { hasMore: boolean, nextCursor: string | null } }
  • teak_v1_bulk_cards
    • Input: { operation: "create" | "update" | "favorite" | "delete", items: object[], confirm?: true }
    • Output: bulk operation results; delete batches require confirm: true
  • teak_v1_create_upload
    • Input: { fileName: string, mimeType: string, fileSize: number }
    • Output: { uploadUrl: string, fileKey: string, method: "PUT", maxFileSize: number, expiresIn: number }
    • Supports the same upload matrix as the web app, API, and CLI. .md and .markdown files become editable text cards and must be valid UTF-8 no larger than 512 KiB; other supported files allow up to 100 MB.
  • teak_v1_search_cards
    • Input: { q?: string, limit?: number }
    • Output: { items: Card[], total: number }
  • teak_v1_list_favorite_cards
    • Input: { q?: string, limit?: number }
    • Output: { items: Card[], total: number }
  • teak_v1_update_card
    • Input: { cardId: string, content?: string, url?: string, notes?: string | null, tags?: string[] }
    • Text-card content remains raw Markdown, preserved exactly, with a 512 KiB UTF-8 limit.
    • Output: updated card object
  • teak_v1_set_card_favorite
    • Input: { cardId: string, isFavorited: boolean }
    • Output: updated card object
  • teak_v1_delete_card
    • Input: { cardId: string, confirm: true }
    • Output: { status: "deleted", cardId: string }

ChatGPT connector tools

Teak also exposes the plain search and fetch tools expected by ChatGPT connectors and Deep Research:

  • search accepts { query: string } and returns { results: [{ id, title, url }] }.
  • fetch accepts { id: string } and returns { id, title, text, url, metadata }.

Error Format

Tool failures are returned as MCP tool errors with this structured shape:

{
  "status": 429,
  "code": "RATE_LIMITED",
  "error": "Too many requests"
}

Last updated on September 18, 2026

Was this page helpful?