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.comAuthentication
OAuth or Bearer pe_mcp_...Token Management
Manage permissions and revoke tokens at my.porteden.com
Note
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.
| Connection | Endpoint | What It Covers | Example Ask |
|---|---|---|---|
| Search, read, reply, forward, send, label, delete across Gmail and M365 | "Draft a reply to Sarah's latest email about Q2 budget." | ||
| Calendar | /calendar | List, search, create, update, delete events; check availability; RSVP | "Find a free 30-minute slot with Alex this week." |
| Drive | /drive | Search, upload, rename, move, share, delete files and folders | "Find the Q2 budget spreadsheet and share it with Maria." |
| Google Docs | /google-docs | Search, read, and edit Google Docs | "Append a summary of our meeting to the planning doc." |
| Google Sheets | /google-sheets | Read cells, write ranges, append rows to Google Sheets | "Add these three rows to the sales tracker." |
| Tasks | /tasks | List 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?
/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:
- Sign in at my.porteden.com and generate an MCP access token (starts with
pe_mcp_). - Paste it into the client's MCP config as an Authorization header.
- 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
| Tool | Access | Description |
|---|---|---|
| email_search | Read | Search emails across all connected providers. Filter by sender, recipient, subject, label, date range, attachment status; free-text search with q. Paginate with pageToken. |
| email_get | Read | Get a single email by its provider-prefixed ID (e.g., google:abc123 or m365:xyz789) including body, attachments list, labels, and importance. |
| email_get_thread | Read | Get all messages in an email thread by its provider-prefixed thread ID, in chronological order with body content. |
| email_send | Send | Send a new email. Requires at least one recipient, a subject, and a body. Use sendFrom to pick an account when multiple are connected. |
| email_reply | Send | Reply to an existing email. Set replyAll=true to reply to all recipients. |
| email_forward | Send | Forward an email to new recipients, optionally with a message prepended above the forwarded content. |
| email_modify | Update | Mark read/unread or add and remove labels on an email. |
| email_delete | Delete | Move an email to Trash / Deleted Items. Recoverable for up to 30 days. |
Calendar — 9 tools/calendar
| Tool | Access | Description |
|---|---|---|
| calendar_list | Read | List all calendars for the connected account with name, ID, provider, timezone, and primary flag. |
| calendar_search_events | Read | Search and list calendar events in a date range. Free-text keyword search, attendee filter, pagination. Defaults to the next 7 days. |
| calendar_get_event | Read | Get full details of a single event by its UUID, including attendee response status and recurrence info. |
| calendar_freebusy | Read | Check calendar availability for a date range. Returns busy/free blocks per calendar. |
| calendar_events_by_contact | Read | Find all events shared with a specific contact by email (exact) or name (partial match). |
| calendar_create_event | Create | Create a new calendar event. All datetimes are UTC. Optional attendees, location, description, recurrence (RFC 5545 RRULE). |
| calendar_update_event | Update | Update an existing event. Only supplied fields change. Use addAttendees / removeAttendees to edit the list incrementally. |
| calendar_delete_event | Delete | Delete an event. Optionally send cancellations to attendees. |
| calendar_respond_to_event | Send | Respond to an invitation with accepted, declined, or tentative, optionally with a comment to the organizer. |
Drive — 10 tools/drive
| Tool | Access | Description |
|---|---|---|
| drive_search | Read | Search and list files across connected cloud storage. Filter by free text, folder, MIME type, name, date range, or shared-with-me. |
| drive_get_file | Read | Get metadata for a single file: name, MIME type, size, times, owners, parent folder. |
| drive_get_file_links | Read | Get view, download, and export links. Google Workspace files return export formats (PDF, DOCX, TXT). |
| drive_get_permissions | Read | Get who has access and at what role (owner, writer, reader, commenter). |
| drive_upload | Create | Upload a file with base64-encoded content. Max ~24 MB of file content. |
| drive_create_folder | Create | Create a new folder, optionally inside a specific parent folder. |
| drive_rename | Update | Rename a file or folder. Changes the display name only. |
| drive_move | Update | Move a file or folder to a different parent folder. |
| drive_delete | Delete | Send a file or folder to trash. Recoverable by the owner. |
| drive_share | Send | Share a file with a user, group, domain, or make it public. Optionally sends a notification email. |
Google Docs — 5 tools/google-docs
| Tool | Access | Description |
|---|---|---|
| google_docs_search | Read | Search Google Docs across connected drives (pre-filtered to Docs only). |
| google_docs_read | Read | Read a Doc's content as plain text (fast) or as structured paragraphs with formatting (detailed). |
| google_docs_edit | Update | Edit a Doc with insert, append, and replace operations. Up to 100 ops per call; max 5 MB request. |
| google_docs_rename | Update | Rename a Doc. |
| google_docs_delete | Delete | Send a Doc to trash. Recoverable by the owner. |
Google Sheets — 7 tools/google-sheets
| Tool | Access | Description |
|---|---|---|
| google_sheets_search | Read | Search Google Sheets across connected drives (pre-filtered to Sheets only). |
| google_sheets_get_metadata | Read | Get a spreadsheet's title, sheet names, and row/column counts. Call this first to discover sheet names. |
| google_sheets_read | Read | Read cell values for a range in A1 notation (e.g., Sheet1!A1:C10). Range max 200 characters. |
| google_sheets_write | Update | Write a 2-D array of values to a range. Max 10,000 cells per call. USER_ENTERED evaluates formulas; RAW stores literally. |
| google_sheets_append | Create | Append rows to the bottom of a sheet. Up to 5,000 rows per call. |
| google_sheets_rename | Update | Rename a Sheet file. |
| google_sheets_delete | Delete | Send 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.
| Tool | Access | Description |
|---|---|---|
| tasks_list_providers | Read | List which task providers are connected. Call this first when more than one provider is involved. |
| tasks_list_boards | Read | List boards/projects from a task provider. Paginate with cursor. |
| tasks_get_board | Read | Get a single board with its groups (sections) and column definitions. Needed before creating or updating items. |
| tasks_list_items | Read | List items (tasks/issues) on a board. Filter by group, status, or query. |
| tasks_get_item | Read | Get a single item with all fields, column values, and sub-items. |
| tasks_search_items | Read | Search items across all accessible boards. Up to 200 results; optional boardIds filter. |
| tasks_create_item | Create | Create a new item on a board. Use tasks_get_board first to see valid groups and columns. |
| tasks_update_item | Update | Update an item's fields. Only supplied fields change. |
| tasks_delete_item | Delete | Delete an item permanently. Cannot be undone. |
| tasks_add_comment | Create | Add a comment or update to an item. Body is plain text or HTML depending on provider. |
| tasks_list_comments | Read | List 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.
| Prompt | What It Does | Required Connections |
|---|---|---|
| daily-briefing | Summarize today's calendar events and unread emails from the last 24 hours. | Email + Calendar |
| prepare-for-meeting | Pull event details, recent emails with attendees (14-day window), and shared files for an upcoming meeting. | Email + Calendar + Drive |
| project-status | Summarize a task board's items grouped by status, flagging overdue and unassigned items. | Tasks |
| weekly-review | Review the past 7 days: meetings attended, key email threads, tasks completed, open action items. | Email + Calendar + Tasks |
Note
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
| Tool | Limit |
|---|---|
| email_search | Up to 50 results per page (default 20) |
| calendar_search_events | Up to 1,000 results (default 50) |
| drive_search, google_docs_search, google_sheets_search | Up to 100 results per page (default 25) |
| drive_upload | ~24 MB of file content (request payload larger after base64 encoding) |
| google_docs_edit | Up to 100 operations per call; max 5 MB request body |
| google_sheets_read | Range string max 200 characters |
| google_sheets_write | Up to 10,000 cells per call |
| google_sheets_append | Up to 5,000 rows per call |
| tasks_search_items | Up 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.
| Condition | What 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 denied | Open my.porteden.com and grant the missing permission to this access token, then retry. |
| Not found | The referenced item (email, event, file, task) doesn't exist or isn't accessible with the connected accounts. |
| Invalid request / validation error | The tool's response explains what's wrong (e.g., bad email address, missing required field). Retry with corrected input. |
| Monthly quota exceeded | Wait 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 error | The underlying provider (Google, Microsoft, Monday, etc.) had a temporary failure. Retry in a minute. |
| Network / unreachable | PortEden's API was not reachable. Usually transient. |
Note
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.