{"article":{"id":57137620216219,"url":"https://notta.zendesk.com/api/v2/help_center/en-us/articles/57137620216219.json","html_url":"https://support.notta.ai/hc/en-us/articles/57137620216219-Notta-Remote-MCP-Integration-Guide","author_id":8818684879515,"comments_disabled":true,"draft":false,"promoted":false,"position":9,"vote_sum":0,"vote_count":0,"upvote_count":0,"downvote_count":0,"section_id":33707959266971,"created_at":"2026-10-13T11:32:05Z","updated_at":"2026-11-11T03:59:24Z","name":"Notta Remote MCP — Integration Guide","title":"Notta Remote MCP — Integration Guide","source_locale":"en-us","locale":"en-us","outdated":false,"outdated_locales":[],"edited_at":"2026-11-11T03:59:24Z","user_segment_id":null,"permission_group_id":1260801533350,"content_tag_ids":[],"label_names":[],"body":"<p>Connect your MCP-compatible AI client or application directly to Notta’s hosted Remote MCP server. Once you authorize access to your Notta workspace, the client can search meeting records, retrieve completed transcripts and existing summaries, browse folders, export content, and perform permitted record-management actions.</p><p>Notta Remote MCP is a cloud-hosted integration accessed over HTTPS using Streamable HTTP and OAuth 2.0. You do not need to download, install, or run a local MCP server or configure a <code>stdio</code> process. This guide explains how developers and technical teams connect an MCP client, authenticate users, and call the available tools.</p><div style=\"height: 8px;\"></div><h2 id=\"h_01M4TFTRNST5GH9TD55MNA5NSX\"><strong>Connect to Notta Remote MCP</strong></h2><p>Remote MCP endpoint: <code>https://mcp.notta.io/mcp</code>. Transport: stateless Streamable HTTP over HTTPS (not local <code>stdio</code>). Every <code>/mcp</code> request, including initialization, tool discovery, ping, notifications, and tool calls, requires <code>Authorization: Bearer &lt;access_token&gt;</code>; <code>OPTIONS</code> preflights are exempt. Requests without a Bearer token receive HTTP 401 with a <code>WWW-Authenticate</code> challenge pointing to protected resource metadata.</p><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n      <colgroup>\n        <col style=\"width: 35%;\">\n        <col style=\"width: 65%;\">\n      </colgroup>\n      <thead>\n        <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Endpoint</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">URL</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">MCP / resource / issuer</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>https://mcp.notta.io/mcp</code>\n          </td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Protected resource metadata</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>https://mcp.notta.io/.well-known/oauth-protected-resource/mcp</code>\n          </td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Authorization server metadata</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>https://mcp.notta.io/.well-known/oauth-authorization-server/mcp</code>\n          </td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Authorization</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>https://mcp.notta.io/mcp/oauth/authorize</code>\n          </td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Token</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>https://mcp.notta.io/mcp/oauth/token</code>\n          </td>\n        </tr>\n        <tr>\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Revocation</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>https://mcp.notta.io/mcp/oauth/revoke</code>\n          </td>\n        </tr>\n      </tbody>\n    </table></figure><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n      <colgroup>\n        <col style=\"width: 35%;\">\n        <col style=\"width: 65%;\">\n      </colgroup>\n      <thead>\n        <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">OAuth setting</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Value</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">public client ID</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>c_j7uksddnma8z61b7</code>\n          </td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Flow</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Authorization Code with PKCE S256</td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Token / revocation client authentication</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>none</code> or <code>client_secret_post</code>; the\n            public client above does not require <code>client_secret</code>.\n          </td>\n        </tr>\n        <tr>\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Scopes</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            Controlled by Notta authorization; MCP metadata does not\n            publish scope names.\n          </td>\n        </tr>\n      </tbody>\n    </table></figure><p>For the public OAuth client listed above, select token endpoint authentication method <code>none</code> and omit <code>client_secret</code>. This public client ID is an OAuth client identifier, not a secret or a Notta user access token.</p><p>To authorize a remote MCP client, open the authorization endpoint in the user’s browser (<code>GET</code>). It redirects (HTTP 302) to the Notta sign-in and consent flow, preserving the authorization request parameters.</p><p>Use the same actual <code>redirect_uri</code> in the authorization request and authorization-code exchange. The URI must be absolute and must not contain whitespace, embedded credentials, or a fragment; HTTP callbacks are restricted to loopback addresses.</p><ol>\n<li data-list-item-id=\"e9c06c17c158540250cfa668bb6244428\">Open the authorization endpoint with <code>response_type=code</code>, <code>client_id</code>, <code>redirect_uri</code>, <code>state</code>, <code>code_challenge</code>, and <code>code_challenge_method=S256</code>. Validate <code>state</code> on callback.</li>\n<li data-list-item-id=\"e0b4d160127778dfd3c1633488d3f4c11\">Exchange the code using the form below. Retain the returned tokens and refresh them when needed; revoke on disconnect.</li>\n<li data-list-item-id=\"e2b14865efcfcb071fd1ff0e10035cf2a\">Initialize the MCP connection, send <code>notifications/initialized</code>, then use <code>tools/list</code> and <code>tools/call</code>. Send <code>Content-Type: application/json</code>, <code>Accept: application/json, text/event-stream</code>, and the negotiated <code>MCP-Protocol-Version</code> on subsequent requests.</li>\n</ol><p>Token and revocation endpoints accept <code>POST</code> forms with <code>Content-Type: application/x-www-form-urlencoded</code>:</p><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n      <colgroup>\n        <col style=\"width: 25%;\">\n        <col style=\"width: 45%;\">\n        <col style=\"width: 30%;\">\n      </colgroup>\n      <thead>\n        <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Operation</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Required fields</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Optional fields</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Code exchange</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>grant_type=authorization_code</code>, <code>client_id</code>,\n            <code>code</code>, <code>code_verifier</code>,\n            <code>redirect_uri</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>resource</code>, <code>client_secret</code>\n          </td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Refresh</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>grant_type=refresh_token</code>, <code>client_id</code>,\n            <code>refresh_token</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>resource</code>, <code>scope</code>,\n            <code>client_secret</code>\n          </td>\n        </tr>\n        <tr>\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Revoke</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>client_id</code>, <code>token</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>client_secret</code>; <code>token_type_hint</code>:\n            <code>access_token</code> or <code>refresh_token</code>\n          </td>\n        </tr>\n      </tbody>\n    </table></figure><p><code>client_secret</code> is an optional form field of up to 128 characters. When supplied, it is forwarded unchanged to Notta. The client's registration determines whether it is required and how it is validated.</p><p>If supplied, <code>resource</code> must equal <code>https://mcp.notta.io/mcp</code>. Token responses contain <code>access_token</code>, <code>refresh_token</code>, <code>token_type</code>, <code>expires_in</code> (seconds), <code>workspace_id</code>, and optional <code>scope</code>. Revocation succeeds with HTTP 200 and <code>{}</code>.</p><div style=\"height: 30px;\"></div><h2 id=\"h_01M4TFTRPY3H454FVXBS9CDAA3\"><strong>Available Remote MCP tools</strong></h2><p>The following tools are exposed by Notta Remote MCP to an authenticated client. All operations are constrained by the connected Notta account’s workspace permissions. Required arguments appear first; optional arguments follow “optional”. Outputs summarize key fields within <code>data</code>. The integration does not grant a client permissions beyond those the account has in Notta.</p><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n  <colgroup>\n    <col style=\"width: 20%;\">\n    <col style=\"width: 15%;\">\n    <col style=\"width: 30%;\">\n    <col style=\"width: 35%;\">\n  </colgroup>\n  <thead>\n    <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n      <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Tool</th>\n      <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Class</th>\n      <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Arguments</th>\n      <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Output, permission or effect</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>auth_user_info</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>{}</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Account <code>uid</code> and <code>nickname</code>.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_list</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Optional <code>folder_id</code>, <code>cursor</code>,\n        <code>page_size</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Visible <code>record_list</code>, <code>page_size</code>,\n        <code>next_cursor</code>. Omit folder for all visible folders;\n        <code>\"0\"</code> selects root.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_search</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>keyword</code>; optional <code>cursor</code>,\n        <code>page_size</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Indexed name/transcript matches with <code>record_id</code>,\n        <code>record_name</code>, <code>next_cursor</code>. An unavailable\n        index can yield no matches.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_status</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_id</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Transcription status.</td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_view</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_id</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Transcript content: <code>text</code>,\n        <code>attr.speaker_name</code>, <code>attr.start_time</code>,\n        <code>attr.stop_time</code> (seconds). <code>speaker_name</code>\n        is the speaker display name, or an empty string when unavailable.\n        Requires completed transcription.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_access</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_ids</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>access_result</code>: sharing settings for records\n        the user can manage. Omitted records may still be readable.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>folder_list</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Optional <code>folder_id</code>, <code>cursor</code>,\n        <code>page_size</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>folder_list</code> with IDs, names and parent IDs;\n        <code>page_size</code>, <code>next_cursor</code>. Omit parent\n        for visible folders; <code>\"0\"</code> selects root; other\n        IDs select children.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>summary_batch</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_ids</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>summary_result</code>: <code>record_id</code> and Markdown\n        result. Reads existing summaries; empty means none available.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>export_status</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>task_id</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Task status; <code>Success</code> can include\n        <code>download_url</code>, <code>download_url_expire_time</code>,\n        <code>file_name</code>.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>export_status_list</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Read</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Optional <code>page_size</code>, <code>cursor</code>,\n        <code>status</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        User's workspace exports: <code>task_list</code> with\n        <code>task_id</code>, <code>record_id</code>, <code>status</code>;\n        <code>next_cursor</code>.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_trash</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Write</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_id</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Moves the record to trash; requires trash permission. Reversible\n        with <code>record_restore</code>.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_restore</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Write</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_id</code>; optional <code>folder_id</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Restores the record; requires restore/destination permissions.\n        Omitted folder or <code>\"0\"</code> restores to root.\n      </td>\n    </tr>\n    <tr style=\"border-bottom: 1px solid #eeeeee;\">\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>export_create</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Write</td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_id</code>, <code>file_type</code>; optional\n        <code>export_options</code>, <code>extra_info</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Creates an export task and returns <code>task_id</code>;\n        requires export permission.\n      </td>\n    </tr>\n    <tr>\n      <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n        <code>record_delete</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <strong>Sensitive write</strong>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        <code>record_id</code>, <code>confirm: true</code>\n      </td>\n      <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n        Permanently deletes an already-trashed record; requires deletion\n        permission. Irreversible.\n      </td>\n    </tr>\n  </tbody>\n</table></figure><p><strong>Arguments:</strong> IDs are strings; <code>folder_id</code> is decimal. <code>keyword</code> is a nonempty string. <code>record_access.record_ids</code> must contain 1–10 unique nonempty IDs after empty strings and exact duplicates are removed. <code>summary_batch.record_ids</code> accepts 1–10 nonempty input entries, which may contain comma-separated IDs; duplicates count toward this limit. <code>page_size</code> is an integer from 1–100, default 20. Pass <code>next_cursor</code> unchanged as <code>cursor</code> with the same filters. Omit unused optional fields; unknown fields and <code>null</code> are rejected. Full input schemas are available through <code>tools/list</code>.</p><p><strong>Results:</strong> Successful tools return <code>{error_code: 0, message: string, data: JSON value}</code> in both <code>structuredContent</code> and JSON-encoded <code>content[].text</code>. Trash, restore and delete return operation results without a guaranteed <code>success</code> field. Check JSON-RPC <code>error</code> and tool <code>isError</code>, not HTTP status alone.</p><h3 id=\"h_01M4TFTRR0WNBR2W3R9MQYAEB7\"><strong>Export arguments</strong></h3><p><code>file_type</code>: <code>txt</code>, <code>docx</code>, <code>pdf</code>, <code>srt</code>, <code>excel</code>, or <code>media</code> (original audio/video). For <code>media</code>, omit <code>export_options</code> and <code>extra_info</code>.</p><p>All <code>export_options</code> fields are optional numeric <code>0</code>/<code>1</code> flags:</p><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n      <colgroup>\n        <col style=\"width: 35%;\">\n        <col style=\"width: 65%;\">\n      </colgroup>\n      <thead>\n        <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Field</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Content included when 1</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>show_time</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Timestamps</td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>include_transcription</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Transcript</td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>include_notes</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Existing AI summary</td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>show_original</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Original-language text</td>\n        </tr>\n        <tr>\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>show_translation</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Existing translation</td>\n        </tr>\n      </tbody>\n    </table></figure><p>Original and translation cannot both be disabled; validation defaults are <code>1</code>/<code>0</code>. SRT applies these defaults; other omitted settings use Notta defaults. Optional <code>extra_info</code> fields: <code>language</code> (string, e.g. <code>en-US</code>) and <code>timezone</code> (IANA time zone, e.g. <code>Asia/Tokyo</code>).</p><div style=\"height: 30px;\"></div><h2 id=\"h_01M4TFTRR7N4XRQJ6RRMEVZAMX\"><strong>Status and write handling</strong></h2><p><strong>Permanent deletion requires explicit user approval for each record before setting </strong><code><strong>confirm: true</strong></code><strong>.</strong> Other writes must follow the user's authorized request.</p><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n      <colgroup>\n        <col style=\"width: 35%;\">\n        <col style=\"width: 65%;\">\n      </colgroup>\n      <thead>\n        <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Operation</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Status handling</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Transcription</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>NotStart</code> / <code>Transcribing</code>: pending.\n            <code>Transcribed</code>: ready to read. <code>Failed</code>:\n            report failure.\n          </td>\n        </tr>\n        <tr>\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Export</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            <code>NotStart</code> / <code>Processing</code>: retain\n            <code>task_id</code>; recommended polling interval ≥2 seconds.\n            <code>Success</code>: use the returned link and expiry.\n            <code>Failed</code> / <code>Expired</code> / <code>NotExist</code>:\n            stop polling.\n          </td>\n        </tr>\n      </tbody>\n    </table></figure><p>Export-list <code>status</code> accepts the export states above except <code>NotExist</code>. Lists may be stale; use <code>export_status</code> for current status or a refreshed signed link. After a write timeout, check the record or task before retrying. Repeating <code>export_create</code> can create duplicate tasks; failed calls are not automatically retried.</p><div style=\"height: 30px;\"></div><h2 id=\"h_01M4TFTRRGKKWD3DQ1HYQAXJSK\"><strong>Errors</strong></h2><p>Tool failures set <code>isError: true</code>; <code>content[].text</code> may contain <code>error_code</code>, <code>message</code>, and <code>data</code> with <code>request_id</code>, <code>required_scope</code>, or <code>retry_after</code> (seconds). Validation errors may be plain text. OAuth errors use <code>error</code> and <code>error_description</code>.</p><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n      <colgroup>\n        <col style=\"width: 35%;\">\n        <col style=\"width: 65%;\">\n      </colgroup>\n      <thead>\n        <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">HTTP status</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Action</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>400</code> / <code>404</code> / <code>405</code> /\n            <code>413</code> / <code>415</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            Correct the parameters, route, method, body size or content\n            type.\n          </td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>401</code> / <code>403</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">Refresh or reconnect, or resolve missing scope/access.</td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>429</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            Honor <code>Retry-After</code> and back off.\n          </td>\n        </tr>\n        <tr>\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">\n            <code>500</code> / <code>502</code> / <code>503</code> /\n            <code>504</code>\n          </td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">\n            Service failure or timeout; check write outcomes before retrying.\n          </td>\n        </tr>\n      </tbody>\n    </table></figure><p>Common business codes: <code>100001</code> authorization, <code>100002</code> scope, <code>100003</code> / <code>120001</code> rate limit, <code>100013</code> parameters, <code>110002</code> incomplete transcription, <code>130001</code>–<code>130003</code> record/folder access or existence. Preserve the message and request ID for other errors.</p><div style=\"height: 30px;\"></div><h2 id=\"h_01M4TFTRRP5VX2FYC3571VACJ3\"><strong>Limits</strong></h2><p>Rate limits are enforced by the upstream OpenAPI. The size and timeout defaults below may be overridden by deployment settings.</p><figure class=\"wysiwyg-table\" style=\"padding: 0; width: 100%;\"><table style=\"width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.6; color: #4b5563; table-layout: fixed; border-top: 1px solid #eeeeee; border-bottom: 1px solid #eeeeee;\">\n      <colgroup>\n        <col style=\"width: 35%;\">\n        <col style=\"width: 65%;\">\n      </colgroup>\n      <thead>\n        <tr style=\"background-color: #fafafa; border-bottom: 2px solid #eeeeee;\">\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Limit</th>\n          <th style=\"padding: 14px 18px; text-align: left; vertical-align: middle; font-weight: bold; font-size: 13px; color: #666666;\">Default</th>\n        </tr>\n      </thead>\n      <tbody>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Request body</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">MCP: 64 KiB; OAuth form: 16 KiB, at most 16 parameters</td>\n        </tr>\n        <tr style=\"border-bottom: 1px solid #eeeeee;\">\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Single upstream response</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">8 MiB; oversized responses fail</td>\n        </tr>\n        <tr>\n          <td style=\"padding: 16px 18px; vertical-align: top; font-weight: bold; color: #333333; background-color: #ffffff;\">Upstream timeout</td>\n          <td style=\"padding: 16px 18px; vertical-align: top; background-color: #ffffff;\">15 seconds per call; a tool request can make multiple calls</td>\n        </tr>\n      </tbody>\n    </table></figure><p>Respect <code>Retry-After</code> or tool <code>retry_after</code> when provided. Transcript retrieval has no chunking option.</p><div style=\"height: 30px;\"></div><h2 id=\"h_01M4TFTRRTTBNRZX15HT20KM3N\"><strong>Remote MCP request examples</strong></h2><p>These are JSON-RPC request bodies sent to <code>https://mcp.notta.io/mcp</code> after the remote client has completed OAuth authentication and MCP initialization. Replace <code>RECORD_ID</code> and <code>TASK_ID</code> with IDs returned from the authorized workspace. Include the HTTP headers described in “Connect to Notta Remote MCP”. These examples are illustrative; they contain no actual customer meeting data.</p><h3 id=\"h_01M4TFTRRTCFQ2SAX24SBKGND9\"><strong>Search records</strong></h3><pre class=\"wysiwyg-code-block\"><code class=\"language-json\">{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"record_search\",\n    \"arguments\": {\n      \"keyword\": \"project review\",\n      \"page_size\": 20\n    }\n  }\n}</code></pre><p>Use a returned <code>record_id</code> with <code>record_status</code>. Call <code>record_view</code> once transcription is <code>Transcribed</code>; use <code>summary_batch</code> to read an existing summary. This workflow does not create a new summary.</p><h3 id=\"h_01M4TFTRRWA8QWQPJBSA6MA07Q\"><strong>Export a record</strong></h3><p>Run this write only for an export the user has authorized.</p><pre class=\"wysiwyg-code-block\"><code class=\"language-json\">{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 2,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"export_create\",\n    \"arguments\": {\n      \"record_id\": \"RECORD_ID\",\n      \"file_type\": \"pdf\"\n    }\n  }\n}</code></pre><p>Save the returned <code>task_id</code>, then check its status:</p><pre class=\"wysiwyg-code-block\"><code class=\"language-json\">{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 3,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"export_status\",\n    \"arguments\": {\n      \"task_id\": \"TASK_ID\"\n    }\n  }\n}</code></pre><p>While the task is pending, wait at least 2 seconds between status checks. On <code>Success</code>, use the returned download link and expiry. Stop polling on <code>Failed</code>, <code>Expired</code>, or <code>NotExist</code>.</p><div style=\"height: 30px;\"></div><h2 id=\"h_01M4TFTRS77VRGVXM9WVXRJ1BR\"><strong>Privacy and support for remote clients</strong></h2><p>Notta Remote MCP returns requested meeting data and time-limited export links to the authenticated third-party MCP client. Review that client’s data-handling practices before authorizing it. See the <a href=\"https://www.notta.ai/en/privacy\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"wysiwyg-underline\">Notta Privacy Policy</span></a>, <a href=\"https://www.notta.ai/en/terms\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"wysiwyg-underline\">Terms of Service</span></a>, and <a href=\"https://support.notta.ai/hc/en-us\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"wysiwyg-underline\">Help Center</span></a>. When contacting support, include the request ID but never include Bearer tokens, refresh tokens, or private meeting content.</p>"}}