These pages describe PrivacyFence 7.0.2.
Download it ·
What changed
Every connector tool PrivacyFence offers an MCP client, and the gate each one goes through. This
page is generated by
scripts/generate_tools_reference.py from the connectors'
own tool definitions and the gate table in
src/privacyfence/auto_accept.py. Don't edit it by hand.
A connector's tools appear only after its organization config is installed and you have signed in
to that service (see Connecting a service). The privacyfence_*
tools that PrivacyFence adds itself (eight always, plus privacyfence_propose_scoped_token where token
proposals are on: always on a local install, by the administrator's choice in organization mode) are not connector tools and have no gate; they are described in
How PrivacyFence works.
Gates
| Gate |
What happens when the AI system calls the tool |
auto |
Runs straight away with no card. Still recorded in the audit log. |
review |
A read. You see a card showing what would be released before the result goes back to the AI system, unless an auto-accept rule covers the call. |
popup |
A write or other change. You approve it on a card before it happens, unless an auto-accept rule covers the call. |
A tool's gate is fixed in code; no setting moves a tool to a different gate. Auto-accept rules,
PII detection, the privacy filter and passkey step-up all act within these gates: see
Approvals and policy. What the Always allow button proposes for each
review and popup tool is listed in the
Always allow reference.
Direction is what the tool itself declares: read tools change nothing in the connected
service; write tools create, change or send something. A few write tools are auto because
they create something empty and disclose nothing (for example drive_create_blank_file).
What it does is the first sentence of the description the AI system is shown for the tool.
When you deny a call
A denied review or popup call fails with an error whose text always starts
Request denied by user.. A plain Deny adds a default instruction:
Request denied by user. Don't retry the same call; ask the user how to proceed.
When you deny with an intent, a note, or both, the AI system gets them instead. The intent is one
of stop, wrong_target, rewrite or different_approach, sent as fixed guidance text; the note
is your own text, cleaned of control and invisible characters, at most 500 characters, and quoted
as a JSON string after a fixed label so it can't be mistaken for PrivacyFence's own words:
Request denied by user. The user chose "Wrong target": the user says the target is wrong
(recipient, file, folder, record or account). Correct the target, then ask again. User's note
(written by the person who denied this request; JSON string): "Just send it to Anna."
(One line in reality.) An AI system that collects the decision with privacyfence_await_approval
instead still sees "denied" as that approval's status, and the feedback under one extra key:
{
"3f2a…": "denied",
"denial_feedback": {
"3f2a…": {"intent": "wrong_target", "note": "Just send it to Anna.", "guidance": "The user says the target is wrong (…). Correct the target, then ask again."}
}
}
denial_feedback appears only when a denied approval in that call has feedback; intent, note
and guidance are null when absent. The note is never written to the audit log, which records
only the intent and the note's length. See
ADR 0083 and
ADR 0084.
Re-issuing a denied call within the approval's ledger lifetime (5 minutes by default) fails
without a new card. A read's denial is reused for every identical call in that window, from any
session. The text is the same, with one sentence after the prefix saying the denial was reused:
Request denied by user. This is not an error and the user was not asked again: PrivacyFence
reused the user's denial of an identical request made 2 minutes ago, as it does for identical
requests for 5 minutes after a decision. Don't retry the same call; ask the user how to proceed.
(One line in reality.) See
ADR 0090.
Summary
Gmail
| Tool |
Direction |
Gate |
What it does |
gmail_list_filters |
read |
auto |
List all Gmail filters with their criteria and actions. |
gmail_list_labels |
read |
auto |
List all Gmail labels (system and user-created). |
gmail_list_message_attachments |
read |
auto |
List attachment names, MIME types, and sizes for a Gmail message. |
gmail_list_messages |
read |
auto |
Search Gmail and return matching message summaries (id, thread_id, subject, sender, date). |
gmail_list_threads |
read |
auto |
Search Gmail and return matching thread summaries (id, snippet). |
gmail_download_attachment |
read |
review |
Download a Gmail attachment's content. |
gmail_get_message |
read |
review |
Fetch a single Gmail message by id, including body, metadata, and attachment list. |
gmail_get_thread |
read |
review |
Fetch a full Gmail thread by id, including all messages. |
gmail_add_label |
write |
popup |
Add a label to a Gmail message. |
gmail_archive_message |
write |
popup |
Archive a Gmail message by removing it from the Inbox. |
gmail_create_draft |
write |
popup |
Create a Gmail draft. |
gmail_create_draft_with_attachments |
write |
popup |
Create a Gmail draft with one or more local-file attachments. |
gmail_create_filter |
write |
popup |
Create a Gmail filter. |
gmail_create_label |
write |
popup |
Create a Gmail label. |
gmail_remove_label |
write |
popup |
Remove a label from a Gmail message. |
gmail_reply_all_draft |
write |
popup |
Create a Gmail draft replying to all participants of a message (original sender plus To/Cc recipients, excluding yourself), staying in the same thread. |
gmail_reply_all_draft_with_attachments |
write |
popup |
Create a Gmail draft replying to all participants of a message (original sender plus To/Cc recipients, excluding yourself), staying in the same thread, with one or more local-file attachments. |
gmail_reply_draft |
write |
popup |
Create a Gmail draft replying to a single message, staying in the same thread (sets threadId plus In-Reply-To/References so it actually threads, unlike gmail_create_draft). |
gmail_reply_draft_with_attachments |
write |
popup |
Create a Gmail draft replying to a single message, staying in the same thread, with one or more local-file attachments. |
gmail_update_filter |
write |
popup |
Replace an existing Gmail filter's criteria and actions, identified by filter_id (from gmail_list_filters). |
Google Drive (including Sheets and Docs)
| Tool |
Direction |
Gate |
What it does |
drive_create_blank_file |
write |
auto |
Create a new blank Drive file. |
drive_get_file_metadata |
read |
auto |
Fetch metadata for a single Drive file by id (name, owners, times, sharing status). |
drive_list_files |
read |
auto |
Search Google Drive and return matching file metadata (id, name, mime_type, owners, sharing status). |
drive_list_folder |
read |
auto |
List the direct children of a Drive folder by id. |
drive_list_revisions |
read |
auto |
List the saved versions (revision history) of a Drive file by id: when each was saved and by whom. |
drive_list_shared_drives |
read |
auto |
List all Google Workspace Shared Drives the user can access (returns id and name for each). |
drive_sheets_create |
write |
auto |
Create a new Google Sheets spreadsheet, optionally with named tabs. |
drive_sheets_get_metadata |
read |
auto |
List the tabs in a spreadsheet (id, title, index, row/column count). |
drive_download_file |
read |
review |
Download a Drive file. |
drive_get_file_content |
read |
review |
Fetch the content of a Drive file by id. |
drive_get_revision_content |
read |
review |
Fetch the content of one earlier saved version of a Drive file, by file id and revision id. |
drive_sheets_get_values |
read |
review |
Read a range of cells from a spreadsheet: display values by default, or the underlying values, or formulas instead of computed results, and optionally cell formatting alongside them. |
drive_add_comment |
write |
popup |
Add a comment to a Drive file. |
drive_copy_file |
write |
popup |
Copy a Drive file into a folder. |
drive_docs_edit_content |
write |
popup |
Replace one occurrence of existing text in a Google Doc with new Markdown, without touching the rest of the document. |
drive_docs_format_content |
write |
popup |
Apply formatting (bold, italic, highlight, text color) to existing text in a Google Doc, located the same way as drive_docs_edit_content, without changing the text itself. |
drive_move_file |
write |
popup |
Move a Drive file to a different folder. |
drive_sheets_add_sheet |
write |
popup |
Add a new tab to an existing spreadsheet. |
drive_sheets_delete_dimensions |
write |
popup |
Delete rows or columns from a sheet tab, including any values, formulas, and formatting they contain. |
drive_sheets_format_range |
write |
popup |
Apply formatting to a range in a spreadsheet: bold/italic, colors, number format, horizontal/vertical alignment, text wrap, column width, frozen rows/columns, and merged cells. |
drive_sheets_insert_dimensions |
write |
popup |
Insert blank rows or columns into a sheet tab, shifting existing content after the insertion point. |
drive_sheets_rename_sheet |
write |
popup |
Rename an existing tab in a spreadsheet. |
drive_sheets_write_range |
write |
popup |
Write values and/or formulas into a range of an existing spreadsheet. |
drive_upload_file |
write |
popup |
Upload any file (e.g. a PDF or image) to Drive as a new file — use this instead of drive_write_file_content for any binary file, since that tool only writes UTF-8 text. |
drive_write_doc_content |
write |
popup |
Write Markdown content to a Google Doc with rich formatting. |
drive_write_file_content |
write |
popup |
Write content to an existing Drive file. |
Google Calendar
| Tool |
Direction |
Gate |
What it does |
calendar_get_event_visibility |
read |
auto |
Get a calendar event's visibility setting (default, public, private, or confidential) without fetching its full details (attendees, description, etc.) the way calendar_get_event_details does. |
calendar_get_free_busy |
read |
auto |
Query colleagues' schedules for a time range. |
calendar_list_calendars |
read |
auto |
List all Google Calendars for the authenticated user. |
calendar_list_colors |
read |
auto |
List Calendar's fixed event color palette: each color's id, name (e.g. "Tomato", "Sage"), and hex background/foreground. |
calendar_list_events |
read |
auto |
List events from a calendar (id, title, start_time, end_time, all_day, status). |
calendar_list_rooms |
read |
auto |
List meeting rooms and resource calendars from the organization's room directory. |
calendar_get_event_details |
read |
review |
Fetch full details of a calendar event including attendees, description and location. |
calendar_create_event |
write |
popup |
Create a new calendar event. |
calendar_create_out_of_office |
write |
popup |
Create an out-of-office event on the primary calendar. |
calendar_delete_event |
write |
popup |
Delete a calendar event. |
calendar_set_event_color |
write |
popup |
Set a calendar event's color. |
calendar_set_event_visibility |
write |
popup |
Set a calendar event's visibility. |
calendar_set_working_location |
write |
popup |
Set your working-location presence (office or home) for a single day on the primary calendar — the same picker Google Calendar's web UI exposes. |
calendar_update_event |
write |
popup |
Update an existing calendar event. |
| Tool |
Direction |
Gate |
What it does |
contacts_get |
read |
auto |
Fetch a single contact by resource name (e.g. 'people/c12345'). |
contacts_list |
read |
auto |
List contacts from the user's Google address book. |
contacts_search |
read |
auto |
Search contacts by name or email address. |
contacts_add_label |
write |
popup |
Add a label to a contact, creating the label if it doesn't already exist. |
contacts_create |
write |
popup |
Create a new contact in the user's Google address book. |
contacts_remove_label |
write |
popup |
Remove a label from a contact. |
contacts_update |
write |
popup |
Update a contact's fields. |
Google Tasks
| Tool |
Direction |
Gate |
What it does |
tasks_get_task |
read |
auto |
Fetch a single task by id. |
tasks_list_task_lists |
read |
auto |
List all Google Task lists. |
tasks_list_tasks |
read |
auto |
List tasks in a task list. |
tasks_complete_task |
write |
popup |
Mark a task as completed. |
tasks_create_task |
write |
popup |
Create a new task. |
tasks_move_task |
write |
popup |
Move a task from one list to another. |
tasks_uncomplete_task |
write |
popup |
Mark a task as not completed. |
tasks_update_task |
write |
popup |
Update a task's title, notes, or due date. |
Apps Script
| Tool |
Direction |
Gate |
What it does |
apps_script_list_projects |
read |
auto |
List standalone Google Apps Script projects visible to the user (id, name, last-modified time). |
apps_script_get_content |
read |
review |
Fetch the full source of a Google Apps Script project -- every file (.gs/.html) plus the appsscript.json manifest. |
apps_script_get_execution_log |
read |
review |
Read the result of the most recent run(s) of a script that the user triggered themselves outside PrivacyFence (status, duration, which function ran) -- not a live console.log transcript. |
apps_script_write_content |
write |
popup |
Write new source to a Google Apps Script project. |
Slack
| Tool |
Direction |
Gate |
What it does |
slack_get_read_state |
read |
auto |
Get your own Slack read state for a few specific messages you already have, without reading them again. |
slack_list_channels |
read |
auto |
List Slack channels visible to the user (id, name, privacy, topic, purpose, member count). |
slack_list_dms |
read |
auto |
List 1:1 direct-message conversations visible to the user (id, other participant). |
slack_list_group_chats |
read |
auto |
List group-DM conversations visible to the user (id, name, participants). |
slack_refresh_channel_cache |
read |
auto |
Force an immediate refresh of PrivacyFence's local cache of Slack channel/DM/group-DM names, used to resolve which conversation a message belongs to in search results and history/thread reads without a per-message conversations.info call. |
slack_refresh_user_cache |
read |
auto |
Force an immediate refresh of PrivacyFence's local cache of Slack workspace member names/emails, used to resolve message authors in channel history, thread replies, and search results without a per-message users.info call. |
slack_resolve_permalink |
read |
auto |
Parse a Slack message permalink (from a message's "Copy link") into the channel id, timestamp, and (if the link points at a threaded reply) thread root timestamp needed by slack_get_channel_history/slack_get_thread_replies. |
slack_get_channel_history |
read |
review |
Fetch recent messages in a Slack channel. |
slack_get_thread_replies |
read |
review |
Fetch all replies in a Slack thread. |
slack_search_messages |
read |
review |
Search Slack messages by query, participant, time window, or a combination. |
slack_create_group_chat |
write |
popup |
Create (or reopen the existing) group-DM conversation with the given participants and return its channel id, ready for slack_send_message. |
slack_send_message |
write |
popup |
Send a message to a Slack channel or DM. |
Telegram
| Tool |
Direction |
Gate |
What it does |
telegram_list_chats |
read |
auto |
List Telegram chats (id, name, type, unread count). |
telegram_refresh_chat_cache |
read |
auto |
Force an immediate refresh of PrivacyFence's local cache of Telegram chat/group/channel names, used to resolve which chat a message belongs to in search results and chat history without a per-message lookup. |
telegram_get_messages |
read |
review |
Fetch recent messages from a Telegram chat by chat id. |
telegram_search_messages |
read |
review |
Search messages across Telegram chats by keyword. |
telegram_send_message |
write |
popup |
Send a message to a Telegram chat or user by chat id. |
Salesforce
| Tool |
Direction |
Gate |
What it does |
salesforce_list_reports |
read |
auto |
List Salesforce reports accessible to the user. |
salesforce_export_report |
read |
review |
Write every row of a Salesforce report to a CSV or JSON file on the user's computer, in one approval. |
salesforce_get_record |
read |
review |
Fetch a Salesforce record by object type and id. |
salesforce_run_report |
read |
review |
Run a Salesforce report by id and return the results. |
salesforce_search |
read |
review |
Search Salesforce by name or id across one or more object types — the same mechanism as the search bar at the top of the Salesforce UI. |
salesforce_create_record |
write |
popup |
Create one new Salesforce record. |
salesforce_create_records |
write |
popup |
Create 1 to 200 new records of one Salesforce object type in one approval, all or none: if Salesforce refuses one record, none is created and the error names each refused record by its position. |
salesforce_update_record |
write |
popup |
Change fields of one existing Salesforce record, by its id. |
salesforce_update_records |
write |
popup |
Change 1 to 200 existing records of one Salesforce object type in one approval, all or none. |
Jira
| Tool |
Direction |
Gate |
What it does |
jira_find_users |
read |
auto |
Find Atlassian users by name or email and return their account ids. |
jira_get_transitions |
read |
auto |
List the status transitions available for a Jira issue right now (name and target status), given its current workflow state. |
jira_list_fields |
read |
auto |
List the Jira site's fields, built-in and custom, with the id and JQL names behind each display name. |
jira_list_projects |
read |
auto |
List Jira projects accessible to the user (key, name, type, lead). |
jira_refresh_user_cache |
read |
auto |
Re-fetch the names of every Atlassian account id PrivacyFence has cached. |
jira_search_issues |
read |
auto |
Search Jira issues using JQL. |
jira_export_issues |
read |
review |
Write every issue a JQL query matches, up to 10,000, to a CSV or JSON file on the user's computer, in one approval. |
jira_get_issue |
read |
review |
Fetch full details of a Jira issue by key (e.g. PROJ-123), including description and comments. |
jira_search_issues_with_fields |
read |
review |
Search Jira issues using JQL and add extra fields to each one: custom fields such as Story Points or Sprint, or built-in ones such as due date or fix versions. |
jira_add_comment |
write |
popup |
Add a comment to an existing Jira issue. |
jira_create_issue |
write |
popup |
Create a new Jira issue. |
jira_transition_issue |
write |
popup |
Move a Jira issue to a new status by transition name (e.g. "Done", "In Progress") — call jira_get_transitions first to see what's valid from the issue's current status. |
jira_update_issue |
write |
popup |
Update fields on an existing Jira issue (summary, description, priority, and/or custom fields). |
Confluence
| Tool |
Direction |
Gate |
What it does |
confluence_cql_search |
read |
auto |
Search Confluence using CQL (Confluence Query Language). |
confluence_find_users |
read |
auto |
Find Atlassian users by name or email and return their account ids. |
confluence_list_attachments |
read |
auto |
List attachment names, media types, and sizes for a Confluence page. |
confluence_list_pages |
read |
auto |
List pages in a Confluence space (title, id, version). |
confluence_list_spaces |
read |
auto |
List Confluence spaces the user has access to (key, name, type, description). |
confluence_refresh_user_cache |
read |
auto |
Re-fetch the names of every Atlassian account id PrivacyFence has cached. |
confluence_search |
read |
auto |
Full-text search across Confluence content. |
confluence_download_attachment |
read |
review |
Download a Confluence page attachment's content. |
confluence_get_page |
read |
review |
Fetch the full content of a Confluence page by page ID. |
confluence_get_page_by_title |
read |
review |
Fetch a Confluence page by space key and exact title. |
confluence_create_page |
write |
popup |
Create a new Confluence page in the given space. |
confluence_update_page |
write |
popup |
Update the title and/or body of an existing Confluence page. |
Jira Assets
| Tool |
Direction |
Gate |
What it does |
assets_list_attributes |
read |
auto |
List the attribute definitions of one Jira Assets object type, including which attributes reference other object types. |
assets_list_object_types |
read |
auto |
List the object types in one Jira Assets schema. |
assets_list_schemas |
read |
auto |
List the Jira Assets object schemas on the connected Atlassian site. |
assets_export_objects |
read |
review |
Write every Jira Assets object an AQL query matches, up to 10,000, to a CSV or JSON file on the user's computer, in one approval. |
assets_get_connected_tickets |
read |
review |
List the Jira tickets connected to one Jira Assets object. |
assets_get_object |
read |
review |
Read one Jira Assets object with every attribute value and its outbound references. |
assets_get_related_objects |
read |
review |
Read the Jira Assets objects linked to one object, following references outbound, inbound or both, up to three hops. |
assets_search_objects |
read |
review |
Search Jira Assets objects with an AQL query and return them with their attribute values. |
Grist
| Tool |
Direction |
Gate |
What it does |
grist_list_documents |
read |
auto |
List the Grist documents this account can open, with their workspace and team. |
grist_list_tables |
read |
auto |
List the tables of one Grist document and each table's columns (id, label and type). |
grist_export_records |
read |
review |
Write every record of one table of a Grist document, optionally filtered, to a CSV or JSON file on the user's computer, in one approval. |
grist_export_sql |
read |
review |
Run one read-only SQL query over a Grist document and write the result to a CSV or JSON file on the user's computer, in one approval. |
grist_get_records |
read |
review |
Read records from one table of a Grist document, optionally filtered and sorted. |
grist_add_columns |
write |
popup |
Add new columns to an existing table of a Grist document. |
grist_add_records |
write |
popup |
Add new records to one table of a Grist document. |
grist_create_table |
write |
popup |
Create a new table, with its columns, in a Grist document. |
grist_import_csv |
write |
popup |
Add every row of a CSV file as a new record in one table of a Grist document, in one approval. |
grist_update_csv |
write |
popup |
Update records of one table of a Grist document from a CSV file, in one approval: each row is matched to the record whose key_column has the same value, and only cells that differ change. |
grist_update_records |
write |
popup |
Change cells of existing records in one table of a Grist document. |
Peek
| Tool |
Direction |
Gate |
What it does |
peek_list_pages |
read |
auto |
List the Peek pages this account can manage, newest first, with each page's link and who can open it. |
peek_list_versions |
read |
auto |
List the versions of one Peek page you manage, newest first, with each version's size, time and link. |
peek_get_comments |
read |
review |
Read the reviewers' comments on one Peek page, with what each comment is anchored to. |
peek_get_stats |
read |
review |
Read how often one Peek page was opened, and the names visitors gave. |
peek_list_grants |
read |
review |
List who can open one restricted Peek page: the people and Google groups granted access. |
peek_add_comment |
write |
popup |
Post a comment on a Peek page under your own Peek account name, on the latest version or the one you give. |
peek_delete_page |
write |
popup |
Delete a Peek page, with its comments and visit history. |
peek_grant_access |
write |
popup |
Let a person or a Google group open a restricted Peek page. |
peek_rename_page |
write |
popup |
Rename a Peek page; its link may change to match the new name, and old links keep redirecting to it in browsers. |
peek_revoke_access |
write |
popup |
Remove a person's or a Google group's access to a restricted Peek page. |
peek_set_visibility |
write |
popup |
Change who can open a Peek page: anyone with the link, anyone signed in to Peek, or only the people granted access (restricted). |
peek_upload_page |
write |
popup |
Publish an HTML page on Peek, or a new version of one of your pages, and get its share link. |
Miro
| Tool |
Direction |
Gate |
What it does |
miro_get_board |
read |
auto |
Get one Miro board's name, team, dates and link. |
miro_list_boards |
read |
auto |
List the Miro boards this account can open in the connected Miro team, optionally only those matching a search text. |
miro_list_tags |
read |
auto |
List the tags defined on one Miro board. |
miro_get_items |
read |
review |
Read specific items of one Miro board by their ids. |
miro_list_connectors |
read |
review |
Read the connector lines on one Miro board and the ids of the items each one joins. |
miro_list_items |
read |
review |
Read the items on one Miro board, optionally only one type of item or only the items inside one frame. |
miro_create_connectors |
write |
popup |
Draw connector lines between existing items on one Miro board, up to 20 in one request. |
miro_create_items |
write |
popup |
Add sticky notes, cards, texts, shapes or frames to one Miro board, up to 20 in one request. |
miro_update_board |
write |
popup |
Rename a Miro board or change its description. |
miro_update_items |
write |
popup |
Change existing items on one Miro board (text, color, position, size, or which frame they are in), up to 20 in one request. |