Skip to content

MCP Server Reference

PortEden MCP is a connector that lets AI assistants — Claude, ChatGPT, Cursor, or any MCP-compatible client — read and act on the services you've connected inside PortEden. The AI never sees your provider passwords. Every action goes through the PortEden API, which enforces your permissions, quotas, and provider limits.

Base URL

https://mcp.porteden.com

Authentication

OAuth or Bearer pe_mcp_...

Token Management

Manage permissions and revoke tokens at my.porteden.com

Note

PortEden MCP is a pass-through — it does not store data, cache responses, or keep tokens on disk. Every call is forwarded to the PortEden API, which enforces your token permissions and logs the action.

The Six Connections

PortEden MCP is split into six focused endpoints. Each one is a separate MCP connection in your client config. Adding only the connections you need keeps the AI's tool list small and its answers sharper.

ConnectionEndpointWhat It CoversExample Ask
Email/emailSearch, read, reply, forward, send, label, delete across Gmail and M365"Draft a reply to Sarah's latest email about Q2 budget."
Calendar/calendarList, search, create, update, delete events; check availability; RSVP"Find a free 30-minute slot with Alex this week."
Drive/driveSearch, upload, rename, move, share, delete files and folders"Find the Q2 budget spreadsheet and share it with Maria."
Google Docs/google-docsSearch, read, and edit Google Docs"Append a summary of our meeting to the planning doc."
Google Sheets/google-sheetsRead cells, write ranges, append rows to Google Sheets"Add these three rows to the sales tracker."
Tasks/tasksList boards, create and update items, add comments, search across Monday, Linear, Asana, Jira, and Notion"Show me overdue items in the Product board."

Why the split?

Each connection exposes only its own tools to the AI. A user who only wants email help can add just /email; a power user can add all six.

Connecting from Each Client

Claude (OAuth, recommended)

Go to Settings > Connectors > Add custom connector on claude.ai and paste the endpoint URL. Claude handles the OAuth sign-in automatically. Works across claude.ai, Claude Desktop, and mobile.

https://mcp.porteden.com/email

For a detailed walkthrough, see the Connect PortEden to Claude guide.

ChatGPT (Connectors, OAuth)

Go to Settings > Connectors > Add connector in ChatGPT and paste the endpoint URL. Each connection is added as a separate connector. Token refresh is automatic.

For a detailed walkthrough, see the Connect PortEden to ChatGPT guide.

Cursor and Other MCP Clients (Manual Token)

For MCP clients that don't support the PortEden OAuth flow, paste a bearer token directly:

  1. Sign in at my.porteden.com and generate an MCP access token (starts with pe_mcp_).
  2. Paste it into the client's MCP config as an Authorization header.
  3. Rotate or revoke the token at my.porteden.com whenever needed — the AI loses access immediately.
{
"mcpServers": {
"porteden-email": {
"url": "https://mcp.porteden.com/email",
"headers": {
"Authorization": "Bearer pe_mcp_YOUR_TOKEN_HERE"
}
}
}
}

Tool Catalogue (50 Tools)

Every tool is labelled with its access level. The user must grant the matching permission for the PortEden access token at my.porteden.com.

Email — 8 tools/email

ToolAccessDescription
email_searchReadSearch emails across all connected providers. Filter by sender, recipient, subject, label, date range, attachment status; free-text search with q. Paginate with pageToken.
email_getReadGet a single email by its provider-prefixed ID (e.g., google:abc123 or m365:xyz789) including body, attachments list, labels, and importance.
email_get_threadReadGet all messages in an email thread by its provider-prefixed thread ID, in chronological order with body content.
email_sendSendSend a new email. Requires at least one recipient, a subject, and a body. Use sendFrom to pick an account when multiple are connected.
email_replySendReply to an existing email. Set replyAll=true to reply to all recipients.
email_forwardSendForward an email to new recipients, optionally with a message prepended above the forwarded content.
email_modifyUpdateMark read/unread or add and remove labels on an email.
email_deleteDeleteMove an email to Trash / Deleted Items. Recoverable for up to 30 days.

Calendar — 9 tools/calendar

ToolAccessDescription
calendar_listReadList all calendars for the connected account with name, ID, provider, timezone, and primary flag.
calendar_search_eventsReadSearch and list calendar events in a date range. Free-text keyword search, attendee filter, pagination. Defaults to the next 7 days.
calendar_get_eventReadGet full details of a single event by its UUID, including attendee response status and recurrence info.
calendar_freebusyReadCheck calendar availability for a date range. Returns busy/free blocks per calendar.
calendar_events_by_contactReadFind all events shared with a specific contact by email (exact) or name (partial match).
calendar_create_eventCreateCreate a new calendar event. All datetimes are UTC. Optional attendees, location, description, recurrence (RFC 5545 RRULE).
calendar_update_eventUpdateUpdate an existing event. Only supplied fields change. Use addAttendees / removeAttendees to edit the list incrementally.
calendar_delete_eventDeleteDelete an event. Optionally send cancellations to attendees.
calendar_respond_to_eventSendRespond to an invitation with accepted, declined, or tentative, optionally with a comment to the organizer.

Drive — 10 tools/drive

ToolAccessDescription
drive_searchReadSearch and list files across connected cloud storage. Filter by free text, folder, MIME type, name, date range, or shared-with-me.
drive_get_fileReadGet metadata for a single file: name, MIME type, size, times, owners, parent folder.
drive_get_file_linksReadGet view, download, and export links. Google Workspace files return export formats (PDF, DOCX, TXT).
drive_get_permissionsReadGet who has access and at what role (owner, writer, reader, commenter).
drive_uploadCreateUpload a file with base64-encoded content. Max ~24 MB of file content.
drive_create_folderCreateCreate a new folder, optionally inside a specific parent folder.
drive_renameUpdateRename a file or folder. Changes the display name only.
drive_moveUpdateMove a file or folder to a different parent folder.
drive_deleteDeleteSend a file or folder to trash. Recoverable by the owner.
drive_shareSendShare a file with a user, group, domain, or make it public. Optionally sends a notification email.

Google Docs — 5 tools/google-docs

ToolAccessDescription
google_docs_searchReadSearch Google Docs across connected drives (pre-filtered to Docs only).
google_docs_readReadRead a Doc's content as plain text (fast) or as structured paragraphs with formatting (detailed).
google_docs_editUpdateEdit a Doc with insert, append, and replace operations. Up to 100 ops per call; max 5 MB request.
google_docs_renameUpdateRename a Doc.
google_docs_deleteDeleteSend a Doc to trash. Recoverable by the owner.

Google Sheets — 7 tools/google-sheets

ToolAccessDescription
google_sheets_searchReadSearch Google Sheets across connected drives (pre-filtered to Sheets only).
google_sheets_get_metadataReadGet a spreadsheet's title, sheet names, and row/column counts. Call this first to discover sheet names.
google_sheets_readReadRead cell values for a range in A1 notation (e.g., Sheet1!A1:C10). Range max 200 characters.
google_sheets_writeUpdateWrite a 2-D array of values to a range. Max 10,000 cells per call. USER_ENTERED evaluates formulas; RAW stores literally.
google_sheets_appendCreateAppend rows to the bottom of a sheet. Up to 5,000 rows per call.
google_sheets_renameUpdateRename a Sheet file.
google_sheets_deleteDeleteSend a Sheet to trash. Recoverable by the owner.

Tasks — 11 tools/tasks

Covers Monday.com, Linear, Asana, Jira Cloud, and Notion. When only one provider is connected, the provider parameter is auto-detected.

ToolAccessDescription
tasks_list_providersReadList which task providers are connected. Call this first when more than one provider is involved.
tasks_list_boardsReadList boards/projects from a task provider. Paginate with cursor.
tasks_get_boardReadGet a single board with its groups (sections) and column definitions. Needed before creating or updating items.
tasks_list_itemsReadList items (tasks/issues) on a board. Filter by group, status, or query.
tasks_get_itemReadGet a single item with all fields, column values, and sub-items.
tasks_search_itemsReadSearch items across all accessible boards. Up to 200 results; optional boardIds filter.
tasks_create_itemCreateCreate a new item on a board. Use tasks_get_board first to see valid groups and columns.
tasks_update_itemUpdateUpdate an item's fields. Only supplied fields change.
tasks_delete_itemDeleteDelete an item permanently. Cannot be undone.
tasks_add_commentCreateAdd a comment or update to an item. Body is plain text or HTML depending on provider.
tasks_list_commentsReadList comments on an item. Requires view_comments permission.

Ready-Made Prompts

Four prompts are registered on any connection that has all of its required tools. Users see them as slash-commands or suggested actions inside their MCP client.

PromptWhat It DoesRequired Connections
daily-briefingSummarize today's calendar events and unread emails from the last 24 hours.Email + Calendar
prepare-for-meetingPull event details, recent emails with attendees (14-day window), and shared files for an upcoming meeting.Email + Calendar + Drive
project-statusSummarize a task board's items grouped by status, flagging overdue and unassigned items.Tasks
weekly-reviewReview the past 7 days: meetings attended, key email threads, tasks completed, open action items.Email + Calendar + Tasks

Note

A prompt only appears on a connection that has every required tool. For example, prepare-for-meeting shows up on /email, /calendar, and /drive but is absent from /tasks.

Permissions

Every action is made with the user's PortEden access token. The token's granted permissions are the ceiling — the AI cannot exceed them, even if asked.

  • Permissions are managed at my.porteden.com. Users can narrow a token to read-only, limit it to a single provider, or revoke it at any time.
  • Each tool in the catalogue above is labelled Read, Create, Update, Delete, or Send. A token without the matching scope gets a "Permission denied" response with a link back to my.porteden.com.
  • No data is stored by PortEden MCP itself. Every call is forwarded to the PortEden API, which enforces the token and logs the action.

For full details on configuring permissions, see the Permissions and Access Rules documentation.

Quotas & Limits

Monthly API Quota

PortEden enforces a monthly request quota per access token. The current count is appended to every tool response so the AI can self-budget:

[API quota: 450/500 used, 50 remaining]

Per-Tool Limits

ToolLimit
email_searchUp to 50 results per page (default 20)
calendar_search_eventsUp to 1,000 results (default 50)
drive_search, google_docs_search, google_sheets_searchUp to 100 results per page (default 25)
drive_upload~24 MB of file content (request payload larger after base64 encoding)
google_docs_editUp to 100 operations per call; max 5 MB request body
google_sheets_readRange string max 200 characters
google_sheets_writeUp to 10,000 cells per call
google_sheets_appendUp to 5,000 rows per call
tasks_search_itemsUp to 200 results per call; query max 500 characters

Burst Protection

The MCP server returns 503 Service Unavailable with Retry-After: 1 if it is at capacity. Clients automatically retry — users normally don't see this.

Troubleshooting

When something goes wrong, the AI receives a tool error with the details below. Each error also carries the current quota line so the AI can tell the user whether remaining quota is an issue.

ConditionWhat to Do
Authentication failed (token missing, expired, or revoked)Re-connect PortEden from the client. Claude and ChatGPT will start the sign-in automatically; manual-token clients need a fresh token from my.porteden.com.
Permission deniedOpen my.porteden.com and grant the missing permission to this access token, then retry.
Not foundThe referenced item (email, event, file, task) doesn't exist or isn't accessible with the connected accounts.
Invalid request / validation errorThe tool's response explains what's wrong (e.g., bad email address, missing required field). Retry with corrected input.
Monthly quota exceededWait for the next billing period, increase the plan at my.porteden.com, or retry after the Retry-After window for rate-burst errors.
Upstream provider errorThe underlying provider (Google, Microsoft, Monday, etc.) had a temporary failure. Retry in a minute.
Network / unreachablePortEden's API was not reachable. Usually transient.

Note

For ChatGPT specifically: when the token expires mid-session, PortEden MCP asks ChatGPT to rerun sign-in in the background, so users are not shown the "Authentication failed" message — the next tool call just works again.

Privacy & Security

  • No data storage. PortEden MCP is a pass-through. It does not keep a database, a cache, or tokens on disk.
  • Tokens are never logged. Access tokens (pe_mcp_...) move from the client to the PortEden API in the Authorization header and nowhere else.
  • HTTPS-only to the PortEden API in production. The MCP server refuses to talk to a non-HTTPS backend unless explicitly opted in for local development.
  • Revoke any time. Revoking a token at my.porteden.com takes effect immediately on the next request — the AI stops having access.
  • Minimal attack surface. A compromised MCP server has no user data and no way to mint new tokens.

FAQ

Do I need all six connections?

No. Add only the ones you want. The AI only sees the tools for the connections you enable.

Can I mix providers in one session — for example Gmail and Outlook calendar?

Yes. Each domain spans all providers connected to your PortEden account. email_search will search Gmail and M365; calendar_search_events will search both calendar providers.

Does the AI see my Gmail/Outlook/Monday passwords?

No. It only ever sees the opaque pe_mcp_... access token, which has no provider credentials inside it.

Can the AI send email on my behalf?

Only if the token has the email_send permission. You control this at my.porteden.com. The tool is labelled Send so the AI understands it is a real action.

How do I revoke access?

Go to my.porteden.com, find the token under MCP access, and revoke. Takes effect on the next tool call.

How do I know how much quota I've used?

Every tool response includes [API quota: X/Y used, Z remaining]. You can also check the dashboard at my.porteden.com.

Why are Google Docs and Google Sheets separate from Drive?

To keep the AI's tool list focused. A user who only wants spreadsheet help can add /google-sheets and avoid loading 10 generic file-management tools. The Drive, Docs, and Sheets connections all use the same PortEden drive access under the hood.

Which providers are supported?

Today: Gmail, Microsoft 365 (email + calendar), Google Drive, Google Docs, Google Sheets, Monday.com, Linear, Asana, Jira Cloud, and Notion. New providers are added over time.