Build the server
In the console, choose a template or tick individual tools. Anyone in your workspace can connect to it afterwards, each acting as themselves.
Model Context Protocol
An MCP server is a short list of things you are willing to let an AI client do in your workspace. You choose the list. It acts as you, and never more than you.
A tool call is an ordinary API call wearing a different coat. It reaches the same /v1 the REST API does, through the same permission, rate and audit gates. That is why there is only one place a permission bug could live.
Three steps, and the credential never leaves your browser.
In the console, choose a template or tick individual tools. Anyone in your workspace can connect to it afterwards, each acting as themselves.
Give the client the server's address. No credential: the client will ask for one itself.
claude mcp add --transport http mail \
https://mcp.veruapis.com/s/your-server-id
The client opens a browser, you sign in, and a consent screen shows exactly what is being granted and whose account it acts as. Approve it and the client holds a token of its own, which you can withdraw at any time.
Some clients only take a static header. The console shows a credential once, at creation, and the configuration to paste it into. It is yours alone: withdrawing it leaves everyone else on the server working.
{
"mcpServers": {
"mail": {
"type": "http",
"url": "https://mcp.veruapis.com/s/your-server-id",
"headers": { "Authorization": "Bearer vak_live_..." }
}
}
}
The four things worth knowing, none of which are obvious.
Anything you did not tick is unknown to the client, and the permission behind it was never granted to the credential. A read-only server cannot be talked into sending mail.
Each person connects with their own credential and reads their own mailbox. An administrator sharing a server does not share their access, and a permission your role does not allow is withheld from your connection.
Mail and calendar entries are written by strangers, and a model reads them beside its own instructions. Everything that arrives from outside is marked as data to report on, never as instructions to follow.
Every call records who acted, which server, which tool and what happened, kept for a year. Agent traffic is distinguishable from a script's, because "what did the assistant do" is a different question.
78 tools: 32 read, 46 change or send.
| Tool | What it does | Permission it needs |
|---|---|---|
calendar_find_slots
|
Find a time that works |
calendar.freebusy.read
|
calendar_freebusy
|
Query free/busy |
calendar.freebusy.read
|
calendar_get_calendar
|
Get a calendar |
calendar.events.read
|
calendar_get_event
|
Get an event |
calendar.events.read
|
calendar_list_calendar_events
|
List events in a calendar |
calendar.events.read
|
calendar_list_calendars
|
List calendars |
calendar.events.read
|
calendar_list_events
|
List events |
calendar.events.read
|
calendar_create_calendar
writes
|
Create a calendar |
calendar.events.write
|
calendar_create_event
writes
|
Create an event |
calendar.events.write
|
calendar_delete_calendar
writes
|
Delete a calendar |
calendar.events.write
|
calendar_delete_event
writes
|
Delete an event |
calendar.events.write
|
calendar_rsvp
writes
|
Respond to an invitation |
calendar.events.write
|
calendar_update_calendar
writes
|
Update a calendar |
calendar.events.write
|
calendar_update_event
writes
|
Update an event |
calendar.events.write
|
| Tool | What it does | Permission it needs |
|---|---|---|
contacts_get_contact
|
Get a contact |
contacts.read
|
contacts_list_address_books
|
List address books |
contacts.read
|
contacts_list_contacts
|
List contacts |
contacts.read
|
contacts_create_contact
writes
|
Create a contact |
contacts.write
|
contacts_delete_contact
writes
|
Delete a contact |
contacts.write
|
contacts_update_contact
writes
|
Update a contact |
contacts.write
|
| Tool | What it does | Permission it needs |
|---|---|---|
documents_get_document
|
Get a document |
docs.documents.read
|
documents_list_comments
|
List comments |
docs.comments.read
|
documents_list_documents
|
List documents |
docs.documents.read
|
documents_copy_document
writes
|
Copy a document |
docs.documents.write
|
documents_create_comment
writes
|
Post a comment |
docs.comments.write
|
documents_create_document
writes
|
Create a document |
docs.documents.write
|
documents_delete_comment
writes
|
Delete a comment |
docs.comments.write
|
documents_delete_document
writes
|
Delete a document |
docs.documents.write
|
documents_restore_document
writes
|
Restore a document |
docs.documents.write
|
documents_update_comment
writes
|
Edit or resolve a comment |
docs.comments.write
|
documents_update_document
writes
|
Update a document |
docs.documents.write
|
| Tool | What it does | Permission it needs |
|---|---|---|
files_get_file
|
Get file metadata |
docs.documents.readfiles.read
|
files_get_upload
|
Get upload status |
files.read
|
files_list_files
|
List files |
docs.documents.readfiles.read
|
files_list_folders
|
List folders |
files.read
|
files_list_permissions
|
List file permissions |
files.read
|
files_abort_upload
writes
|
Abort an upload |
files.write
|
files_complete_upload
writes
|
Complete an upload |
files.write
|
files_create_folder
writes
|
Create a folder |
files.write
|
files_create_upload
writes
|
Start an upload |
files.write
|
files_delete_file
writes
|
Delete a file |
docs.documents.writefiles.write
|
files_delete_folder
writes
|
Delete a folder |
files.write
|
files_share_file
writes
|
Share a file |
files.share
|
files_unshare_file
writes
|
Revoke file access |
files.share
|
files_update_file
writes
|
Rename or move a file |
docs.documents.writefiles.write
|
files_update_folder
writes
|
Rename or move a folder |
files.write
|
| Tool | What it does | Permission it needs |
|---|---|---|
identity_get_current_user
|
Get the current user |
identity.read
|
identity_list_groups
|
List groups |
directory.read
|
| Tool | What it does | Permission it needs |
|---|---|---|
mail_get_attachment
|
Download an attachment |
mail.messages.read
|
mail_get_message
|
Get a message |
mail.messages.read
|
mail_get_settings
|
Get display preferences |
mail.settings.read
|
mail_list_attachments
|
List attachments |
mail.messages.read
|
mail_list_drafts
|
List drafts |
mail.messages.read
|
mail_list_filters
|
List mail filters |
mail.settings.read
|
mail_list_folders
|
List mail folders |
mail.folders.read
|
mail_list_messages
|
List messages |
mail.messages.read
|
mail_create_draft
writes
|
Create a draft |
mail.messages.write
|
mail_create_filter
writes
|
Create a mail filter |
mail.settings.write
|
mail_create_folder
writes
|
Create a mail folder |
mail.folders.write
|
mail_delete_draft
writes
|
Delete a draft |
mail.messages.write
|
mail_delete_filter
writes
|
Delete a mail filter |
mail.settings.write
|
mail_delete_folder
writes
|
Delete a mail folder |
mail.folders.write
|
mail_delete_message
writes
|
Delete a message |
mail.messages.write
|
mail_move_messages
writes
|
Move messages |
mail.messages.write
|
mail_replace_draft
writes
|
Replace a draft |
mail.messages.write
|
mail_send_message
writes
|
Send an email |
mail.send
|
mail_update_flags
writes
|
Change flags and labels |
mail.messages.write
|
mail_update_folder
writes
|
Rename a mail folder |
mail.folders.write
|
mail_update_settings
writes
|
Update display preferences |
mail.settings.write
|
| Tool | What it does | Permission it needs |
|---|---|---|
spreadsheets_batch_get_values
|
Read several ranges |
sheets.values.read
|
spreadsheets_get_spreadsheet
|
List the sheets in a spreadsheet |
sheets.values.read
|
spreadsheets_get_state
|
Get the current state |
sheets.values.read
|
spreadsheets_get_values
|
Read a range |
sheets.values.read
|
spreadsheets_append_values
writes
|
Append rows |
sheets.values.write
|
spreadsheets_batch_update
writes
|
Change a spreadsheet's structure |
sheets.structure.write
|
spreadsheets_batch_update_values
writes
|
Write several ranges |
sheets.values.write
|
spreadsheets_clear_values
writes
|
Clear a range |
sheets.values.write
|
spreadsheets_put_values
writes
|
Write a range |
sheets.values.write
|
Each tool is one endpoint, documented in full in the API reference.
The safest thing to try first: an assistant that can read your mail and calendar and change nothing. Add write tools when you know what you want.