Core concepts

MCP server

Let a model read and act on meetings directly, over the Model Context Protocol.

Everything the REST API does is also available as an MCP server, so a model can call it without you writing a tool layer first.

TEXT
https://api-notetaker.nabrah.ai/mcp

Transport is Streamable HTTP, stateless — one POST per JSON-RPC message, with no session to keep alive.

Connecting

Authentication is the same key, in the same header:

JSON
{
  "mcpServers": {
    "nabrah": {
      "type": "http",
      "url": "https://api-notetaker.nabrah.ai/mcp",
      "headers": { "Authorization": "Bearer nt_..." }
    }
  }
}

Which clients work

Any client that lets you set a header — Claude Code, Claude Desktop custom connectors, and most SDK clients — connects with the key above.

A client that insists on full OAuth 2.1 discovery will not, because this server authenticates with a key rather than an authorization server. That is a real limitation rather than an oversight, and worth knowing before you spend an afternoon on it.

The tools

A read-only key is shown only the read tools, and a write tool called with one is refused as though it did not exist. That is deliberate: a model that can see a capability will try it, and a refusal it could not have predicted is worse than a capability that was never offered.

ToolNeeds
list_meetings · get_meetingread
get_schedule — what is coming, and what will be recordedread
list_recordings · get_recording · get_transcriptread
list_action_items · get_botread
list_calendar_connectionsread
get_organization_usage · get_organization_analyticsread, organization key
send_bot_to_meeting · stop_botfull
set_meeting_recordingfull
complete_action_itemfull
create_calendar_connect_linkfull

What the model is told up front

initialize returns instructions carrying the facts a model would otherwise guess wrong: one live bot per account, a monthly cap, that connecting a calendar needs a person, and how far the calendar reaches. Those cost five lines and prevent a whole class of confidently wrong answers.

One implementation, two ways of asking

Every tool calls the same service function the matching REST route calls. An answer through MCP and an answer over HTTP are the same object — there is no second code path to drift.