MCP Server
Updated 2026-07-08
Usable MCP server
Endpoint: https://usable.dev/api/mcp
Protocol: Model Context Protocol over HTTP (JSON-RPC 2.0)
Server name: usable-knowledge-base
MCP protocol version: 2025-03-26
The Usable MCP server lets AI clients search, read, create, update, and organize Usable workspace knowledge. It is the preferred interface when an AI assistant needs durable team memory, workspace-aware lookup, or controlled write access to fragments.
When to use MCP instead of REST
Use MCP when:
- An AI assistant should choose which fragments to search or fetch.
- You want a model to create or update knowledge in a workspace with tool-level permissions.
- You need a client such as Claude Desktop, Cursor, VS Code MCP, Copilot Studio, ChatGPT Apps, or a custom MCP client to access Usable knowledge.
Use REST when:
- You are building deterministic service-to-service imports, exports, sync jobs, or webhooks.
- You need multipart file upload from a script.
- You need a stable endpoint for a specific operation rather than model-driven tool selection.
Connecting
OAuth 2.1 (recommended)
The dashboard MCP connect dialog starts with the remote MCP URL:
https://usable.dev/api/mcpClient examples:
# Claude Code
claude mcp add --transport http usable https://usable.dev/api/mcp
claude mcp list
# In Claude Code, run /mcp and choose Authenticate# Codex (opencode.toml)
[mcp_servers.usable]
url = "https://usable.dev/api/mcp"
# Then run: codex mcp login usable// Generic Streamable HTTP
{
"mcp": {
"usable": {
"type": "remote",
"url": "https://usable.dev/api/mcp",
"enabled": true
}
}
}Bearer token
For non-OAuth clients, use a personal access token:
Authorization: Bearer <personal-access-token>Recommended token practice:
- Create a dedicated token per AI client or automation.
- Scope the token to only the workspaces the client needs.
- Give read-only permissions for search/fetch clients.
- Add create/update permissions only for clients that are allowed to write.
- Revoke tokens immediately when a client is retired or compromised.
- Never store token values in memory fragments or public docs.
Transport basics
Initialize
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": { "name": "example-client", "version": "1.0.0" }
}
}List tools
curl https://usable.dev/api/mcp \
-H "Authorization: Bearer <personal-access-token>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'Tool inventory
The standard Usable MCP tool set contains 23 tools.
Discovery and search
| Tool | Purpose |
|---|---|
agentic-search-fragments | Primary intelligent fragment discovery with iterative expansion |
search-memory-fragments | Semantic search fallback |
list-memory-fragments | Structured listing/filtering/pagination |
get-memory-fragment-content | Retrieve full fragment content by ID |
Fragment management
| Tool | Purpose |
|---|---|
create-memory-fragment | Create a fragment with optional AI summary/tag generation |
update-memory-fragment | Update title/content/tags/status/collection membership |
create-fragment-symlink | Create a cross-fragment relationship |
remove-fragment-symlink | Remove a symlink relationship |
Workspace management
| Tool | Purpose |
|---|---|
list-workspaces | List accessible workspaces with role/permission context |
get-fragment-types | List fragment types for a workspace |
create-workspace | Create a workspace (accepts optional hostedZoneId) |
update-workspace | Update workspace details/settings |
search-public-workspaces | Search public workspace registry |
subscribe-to-workspace | Subscribe to a public workspace |
Collections
| Tool | Purpose |
|---|---|
create-collection | Create a named collection in a workspace |
get-collection | Read collection details, optionally including fragments |
list-collections | List workspace collections with pagination |
update-collection | Update collection name/description |
Files
| Tool | Purpose |
|---|---|
request-upload-url | Request an upload URL for a file |
search-files | Search uploaded workspace files by metadata |
get-file | Get file metadata and download URL |
attach-file-to-fragment | Attach an uploaded file to a fragment |
Applications
| Tool | Purpose |
|---|---|
manage-application | Manage application/marketplace records |
OpenAI-compatible mode
Use https://usable.dev/api/mcp?openai=true for clients expecting OpenAI-style search and fetch aliases.
Recommended search workflow
- Start with
agentic-search-fragments. - Include workspace scope when known.
- Include tags such as
repo:<name>,docs,public, or release tags. - Rerun search when scope changes or results are insufficient.
- Use
get-memory-fragment-contentfor every fragment you rely on.
Example:
{
"jsonrpc": "2.0",
"id": 10,
"method": "tools/call",
"params": {
"name": "agentic-search-fragments",
"arguments": {
"query": "REST API authentication and token permissions",
"workspaceId": "YOUR_WORKSPACE_ID",
"tags": ["docs", "api"],
"limit": 10
}
}
}Fragment authoring through MCP
{
"jsonrpc": "2.0",
"id": 20,
"method": "tools/call",
"params": {
"name": "create-memory-fragment",
"arguments": {
"workspaceId": "YOUR_WORKSPACE_ID",
"title": "MCP setup for public docs",
"content": "# MCP setup\n\nConnect using /api/mcp...",
"summary": "How to connect an MCP client to Usable.",
"tags": ["docs", "public", "mcp"]
}
}
}Permissions by workflow
| Workflow | Minimum required access |
|---|---|
| Search/fetch fragments | Workspace read + fragment read |
| Create fragments | Workspace collaborator + fragment create |
| Update fragments | Workspace collaborator + fragment update |
| Manage collections | Workspace read for list/get; write for create/update |
| Files | File read/write; fragment write to attach |
| Create/update workspace | Account/workspace privileges |
| Public workspace subscribe | Authenticated account |
Troubleshooting
tools/list returns 401
Check that the Authorization: Bearer <token> header is present and the token is valid.
A tool returns 403
The token lacks permission for the workspace or action. Check workspace membership, token scope, and tool permission requirements.
create-memory-fragment returns isError: true
Since v1.192.1, fragment-type problems are reported as tool-level results. Typical causes:
- You passed a
fragmentTypeIdthat does not exist in the target workspace. - The workspace has no usable default fragment type.
Fix: call get-fragment-types for the same workspaceId, then pass a valid fragmentTypeId explicitly.
Search returns no useful fragments
Broaden the query, add or remove tags, specify the correct workspace, and rerun agentic-search-fragments. Use list-workspaces to verify the client can see the target workspace.
The assistant cites a fragment from search but did not read it
Require the assistant to call get-memory-fragment-content before relying on a result. Search snippets are not a substitute for full source content.