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.
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 stdio process. This guide explains how developers and technical teams connect an MCP client, authenticate users, and call the available tools.
Connect to Notta Remote MCP
Remote MCP endpoint: https://mcp.notta.io/mcp. Transport: stateless Streamable HTTP over HTTPS (not local stdio). Every /mcp request, including initialization, tool discovery, ping, notifications, and tool calls, requires Authorization: Bearer <access_token>; OPTIONS preflights are exempt. Requests without a Bearer token receive HTTP 401 with a WWW-Authenticate challenge pointing to protected resource metadata.
| Endpoint | URL |
|---|---|
| MCP / resource / issuer |
https://mcp.notta.io/mcp
|
| Protected resource metadata |
https://mcp.notta.io/.well-known/oauth-protected-resource/mcp
|
| Authorization server metadata |
https://mcp.notta.io/.well-known/oauth-authorization-server/mcp
|
| Authorization |
https://mcp.notta.io/mcp/oauth/authorize
|
| Token |
https://mcp.notta.io/mcp/oauth/token
|
| Revocation |
https://mcp.notta.io/mcp/oauth/revoke
|
| OAuth setting | Value |
|---|---|
| public client ID |
c_j7uksddnma8z61b7
|
| Flow | Authorization Code with PKCE S256 |
| Token / revocation client authentication |
none or client_secret_post; the
public client above does not require client_secret.
|
| Scopes | Controlled by Notta authorization; MCP metadata does not publish scope names. |
For the public OAuth client listed above, select token endpoint authentication method none and omit client_secret. This public client ID is an OAuth client identifier, not a secret or a Notta user access token.
To authorize a remote MCP client, open the authorization endpoint in the user’s browser (GET). It redirects (HTTP 302) to the Notta sign-in and consent flow, preserving the authorization request parameters.
Use the same actual redirect_uri 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.
- Open the authorization endpoint with
response_type=code,client_id,redirect_uri,state,code_challenge, andcode_challenge_method=S256. Validatestateon callback. - Exchange the code using the form below. Retain the returned tokens and refresh them when needed; revoke on disconnect.
- Initialize the MCP connection, send
notifications/initialized, then usetools/listandtools/call. SendContent-Type: application/json,Accept: application/json, text/event-stream, and the negotiatedMCP-Protocol-Versionon subsequent requests.
Token and revocation endpoints accept POST forms with Content-Type: application/x-www-form-urlencoded:
| Operation | Required fields | Optional fields |
|---|---|---|
| Code exchange |
grant_type=authorization_code, client_id,
code, code_verifier,
redirect_uri
|
resource, client_secret
|
| Refresh |
grant_type=refresh_token, client_id,
refresh_token
|
resource, scope,
client_secret
|
| Revoke |
client_id, token
|
client_secret; token_type_hint:
access_token or refresh_token
|
client_secret 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.
If supplied, resource must equal https://mcp.notta.io/mcp. Token responses contain access_token, refresh_token, token_type, expires_in (seconds), workspace_id, and optional scope. Revocation succeeds with HTTP 200 and {}.
Available Remote MCP tools
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 data. The integration does not grant a client permissions beyond those the account has in Notta.
| Tool | Class | Arguments | Output, permission or effect |
|---|---|---|---|
auth_user_info
|
Read |
{}
|
Account uid and nickname.
|
record_list
|
Read |
Optional folder_id, cursor,
page_size
|
Visible record_list, page_size,
next_cursor. Omit folder for all visible folders;
"0" selects root.
|
record_search
|
Read |
keyword; optional cursor,
page_size
|
Indexed name/transcript matches with record_id,
record_name, next_cursor. An unavailable
index can yield no matches.
|
record_status
|
Read |
record_id
|
Transcription status. |
record_view
|
Read |
record_id
|
Transcript content: text,
attr.speaker_name, attr.start_time,
attr.stop_time (seconds). speaker_name
is the speaker display name, or an empty string when unavailable.
Requires completed transcription.
|
record_access
|
Read |
record_ids
|
access_result: sharing settings for records
the user can manage. Omitted records may still be readable.
|
folder_list
|
Read |
Optional folder_id, cursor,
page_size
|
folder_list with IDs, names and parent IDs;
page_size, next_cursor. Omit parent
for visible folders; "0" selects root; other
IDs select children.
|
summary_batch
|
Read |
record_ids
|
summary_result: record_id and Markdown
result. Reads existing summaries; empty means none available.
|
export_status
|
Read |
task_id
|
Task status; Success can include
download_url, download_url_expire_time,
file_name.
|
export_status_list
|
Read |
Optional page_size, cursor,
status
|
User's workspace exports: task_list with
task_id, record_id, status;
next_cursor.
|
record_trash
|
Write |
record_id
|
Moves the record to trash; requires trash permission. Reversible
with restore.
|
record_restore
|
Write |
record_id; optional folder_id
|
Restores the record; requires restore/destination permissions.
Omitted folder or "0" restores to root.
|
export_create
|
Write |
record_id, file_type; optional
export_options, extra_info
|
Creates an export task and returns task_id;
requires export permission.
|
record_delete
|
Sensitive write |
record_id, confirm: true
|
Permanently deletes an already-trashed record; requires deletion permission. Irreversible. |
Arguments: IDs are strings; folder_id is decimal. keyword is a nonempty string. record_access.record_ids must contain 1–10 unique nonempty IDs after empty strings and exact duplicates are removed. summary_batch.record_ids accepts 1–10 nonempty input entries, which may contain comma-separated IDs; duplicates count toward this limit. page_size is an integer from 1–100, default 20. Pass next_cursor unchanged as cursor with the same filters. Omit unused optional fields; unknown fields and null are rejected. Full input schemas are available through tools/list.
Results: Successful tools return {error_code: 0, message: string, data: JSON value} in both structuredContent and JSON-encoded content[].text. Trash, restore and delete return operation results without a guaranteed success field. Check JSON-RPC error and tool isError, not HTTP status alone.
Export arguments
file_type: txt, docx, pdf, srt, excel, or media (original audio/video). For media, omit export_options and extra_info.
All export_options fields are optional numeric 0/1 flags:
| Field | Content included when 1 |
|---|---|
show_time
|
Timestamps |
include_transcription
|
Transcript |
include_notes
|
Existing AI summary |
show_original
|
Original-language text |
show_translation
|
Existing translation |
Original and translation cannot both be disabled; validation defaults are 1/0. SRT applies these defaults; other omitted settings use Notta defaults. Optional extra_info fields: language (string, e.g. en-US) and timezone (IANA time zone, e.g. Asia/Tokyo).
Status and write handling
Permanent deletion requires explicit user approval for each record before setting confirm: true. Other writes must follow the user's authorized request.
| Operation | Status handling |
|---|---|
| Transcription |
NotStart / Transcribing: pending.
Transcribed: ready to read. Failed:
report failure.
|
| Export |
NotStart / Processing: retain
task_id; recommended polling interval ≥2 seconds.
Success: use the returned link and expiry.
Failed / Expired / NotExist:
stop polling.
|
Export-list status accepts the export states above except NotExist. Lists may be stale; use export_status for current status or a refreshed signed link. After a write timeout, check the record or task before retrying. Repeating export_create can create duplicate tasks; failed calls are not automatically retried.
Errors
Tool failures set isError: true; content[].text may contain error_code, message, and data with request_id, required_scope, or retry_after (seconds). Validation errors may be plain text. OAuth errors use error and error_description.
| HTTP status | Action |
|---|---|
400 / 404 / 405 /
413 / 415
|
Correct the parameters, route, method, body size or content type. |
401 / 403
|
Refresh or reconnect, or resolve missing scope/access. |
429
|
Honor Retry-After and back off.
|
500 / 502 / 503 /
504
|
Service failure or timeout; check write outcomes before retrying. |
Common business codes: 100001 authorization, 100002 scope, 100003 / 120001 rate limit, 100013 parameters, 110002 incomplete transcription, 130001–130003 record/folder access or existence. Preserve the message and request ID for other errors.
Limits
Rate limits are enforced by the upstream OpenAPI. The size and timeout defaults below may be overridden by deployment settings.
| Limit | Default |
|---|---|
| Request body | MCP: 64 KiB; OAuth form: 16 KiB, at most 16 parameters |
| Single upstream response | 8 MiB; oversized responses fail |
| Upstream timeout | 15 seconds per call; a tool request can make multiple calls |
Respect Retry-After or tool retry_after when provided. Transcript retrieval has no chunking option.
Remote MCP request examples
These are JSON-RPC request bodies sent to https://mcp.notta.io/mcp after the remote client has completed OAuth authentication and MCP initialization. Replace RECORD_ID and TASK_ID 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.
Search records
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "record_search",
"arguments": {
"keyword": "project review",
"page_size": 20
}
}
}Use a returned record_id with record_status. Call record_view once transcription is Transcribed; use summary_batch to read an existing summary. This workflow does not create a new summary.
Export a record
Run this write only for an export the user has authorized.
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "export_create",
"arguments": {
"record_id": "RECORD_ID",
"file_type": "pdf"
}
}
}Save the returned task_id, then check its status:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "export_status",
"arguments": {
"task_id": "TASK_ID"
}
}
}While the task is pending, wait at least 2 seconds between status checks. On Success, use the returned download link and expiry. Stop polling on Failed, Expired, or NotExist.
Privacy and support for remote clients
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 Notta Privacy Policy, Terms of Service, and Help Center. When contacting support, include the request ID but never include Bearer tokens, refresh tokens, or private meeting content.