The Model Context Protocol (MCP) lets external tools and agents interact with Coline. Connect your IDE, AI assistant, or custom automation to discover and call Coline tools.
MCP provides:
Tool discovery : Clients query available tools and their schemas
Tool execution : Call Coline actions with structured input/output
Resource access : Read workspace data through standard URIs
Authentication : OAuth 2.1 with scope-based permissions
Property Value Protocol version 2025-11-25Transport Streamable HTTP (primary), SSE (legacy) Authentication OAuth 2.1 with Bearer tokens Endpoint https://coline.app/api/mcpDiscovery https://coline.app/.well-known/mcp.json
Coline exposes 35+ tools across all workspace features:
Tool Description listWorkspacesList user workspaces listTeamsList teams in a workspace getUserGet current user profile
Tool Description listNotesList notes with filtering createNoteCreate a new note updateNoteUpdate note content
Tool Description listSpacesList spaces in workspace listDocumentsList documents in a space createDocumentCreate a new document
Tool Description listIssuesList issues with filters createIssueCreate a new issue updateIssueUpdate issue fields addCommentAdd comment to an issue
Tool Description listBoardsList Kanban boards createBoardCreate a new board listCardsList cards on a board createCardCreate a card
Tool Description listTasksList tasks with filters createTaskCreate a new task updateTaskUpdate task fields completeTaskMark task complete
Tool Description listCalendarsList user calendars listEventsList calendar events createEventCreate a calendar event updateEventUpdate event details
Tool Description Confirmation listThreadsList email threads No searchThreadsSearch emails No sendEmailSend an email Required
Tool Description listConversationsList chat conversations listMessagesList messages in conversation sendMessageSend a chat message
Tool Description listFilesList files and folders createFolderCreate a folder createShareLinkGenerate a share link
Whiteboard : listWhiteboards, createWhiteboard
Code : listWorkspaces, createWorkspace
Automations : listAutomations, runAutomation
Integrations : listConnections, syncIntegration
MCP clients can read Coline resources using standard URIs:
Resource type URI pattern User coline://users/{id}Workspace coline://workspaces/{id}Team coline://teams/{id}Space coline://spaces/{id}Note coline://notes/{id}Issue coline://issues/{id}Board coline://boards/{id}Task coline://tasks/{id}Event coline://events/{id}Thread coline://threads/{id}Message coline://messages/{id}File coline://files/{id}Whiteboard coline://whiteboards/{id}Code workspace coline://code/{id}
Request scopes to access specific tool categories:
Scope Tools mcp.core:readlistWorkspaces, listTeams, getUser mcp.spaces:readlistSpaces, listDocuments mcp.spaces:writecreateDocument, updateDocument mcp.notes:readlistNotes mcp.notes:writecreateNote, updateNote mcp.track:readlistIssues mcp.track:writecreateIssue, updateIssue, addComment mcp.boards:readlistBoards, listCards mcp.boards:writecreateBoard, createCard mcp.tasks:readlistTasks mcp.tasks:writecreateTask, updateTask, completeTask mcp.calendar:readlistCalendars, listEvents mcp.calendar:writecreateEvent, updateEvent mcp.mail:readlistThreads, searchThreads mcp.mail:writesendEmail mcp.chat:readlistConversations, listMessages mcp.chat:writesendMessage mcp.files:readlistFiles mcp.files:writecreateFolder, createShareLink
Add Coline to your MCP configuration:
{
"mcpServers" : {
"coline" : {
"url" : "https://coline.app/api/mcp" ,
"auth" : {
"type" : "oauth" ,
"clientId" : "your-client-id" ,
"scopes" : [ "mcp.tasks:read" , "mcp.tasks:write" ]
}
}
}
}
Use the standard MCP client library:
import { Client } from '@modelcontextprotocol/sdk/client' ;
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp' ;
const transport = new StreamableHTTPClientTransport ({
url: 'https://coline.app/api/mcp' ,
headers: {
Authorization: `Bearer ${ accessToken }` ,
},
});
const client = new Client ({ name: 'my-app' , version: '1.0.0' });
await client. connect (transport);
// Discover tools
const { tools } = await client. listTools ();
// Call a tool
const result = await client. callTool ({
name: 'listTasks' ,
arguments: { status: 'pending' },
});
Register an OAuth client in Settings > Developers
Use authorization code flow with PKCE or device flow
Request MCP scopes for the tools you need
Include the access token in the Authorization header
See API & SDK for OAuth implementation details.
MCP connections use sessions for state:
Sessions are tracked with mcp-session-id header
Session data includes user context and permissions
Sessions expire after 24 hours of inactivity
Reconnect with the same session ID to resume
All MCP tool calls are logged for security:
Tool name and input parameters
Execution result or error
User and client identification
Timestamp and duration
Enterprise plans can export audit logs for compliance.
MCP requests share rate limits with API requests:
Plan Requests per minute Pro 300 Team 600 Enterprise Custom
Tool calls count toward your API quota.
Start with read scopes : Test discovery and reading before writing
Use specific scopes : Request only what your integration needs
Handle confirmations : Some tools (like sendEmail) require user confirmation
Cache tool schemas : Tool definitions change infrequently
Monitor usage : Check the developer dashboard for call patterns