Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the FellowAI MCP server

Vendor MCP
Open markdown

The FellowAI MCP connector routes your AI agent's tool calls to FellowAI's own MCP server through Scalekit. Each user signs in to FellowAI once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 7 tools.

Tools
7
What they doRead · write · destructive
7 · 0 · 07 read0 write0 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the FellowAI MCP connection

    In AgentKit > Connections, create a FellowAI MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for FellowAI MCP server, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    FellowAI MCP uses Dynamic Client Registration (DCR) — no client ID or secret is required. The only step is creating a connection in Scalekit and authorizing your Fellow.ai account.

    1. Create a connection in Scalekit

      • In the Scalekit dashboard, go to AgentKit → Connections → Create Connection.
      • Search for FellowAI MCP and click Create.
      • Note the Connection name — use this as connection_name in your code (e.g., fellowaimcp).
    2. Authorize your Fellow.ai account

      Generate an authorization link and open it in a browser to complete the Fellow.ai OAuth flow.

      The user is redirected to Fellow.ai to sign in and grant access. Scalekit stores the token and injects it automatically into every tool call — no further configuration is needed.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'fellowaimcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize FellowAI MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'fellowaimcp_get_action_items',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • fellowaimcp_get_action_itemsFetch action items assigned to the user, filtered by date range or status (overdue, completed, or ongoing).Read-only

    Get Action Items

    Fetch action items assigned to the user, filtered by date range or status (overdue, completed, or ongoing).

    Inputs

    check_for_team_action_itemsstring
    Set this value to true if user wants to check for action items assigned to the user's team. Only works if user is a manager. Optional
    from_datestring
    The start date of the range to get the action items from. Must be a valid ISO 8601 date string. Optional Field, if not provided, it will be ignored.
    is_overduestring
    Set this value to true if user wants only overdue action items. Optional
    meeting_idsstring
    List of meeting IDs to filter action items by. Must be provided as an array/list, for example: ['meeting_id_1', 'meeting_id_2']. Optional.
    note_idstring
    The ID of the note to filter action items by. Optional
    notestream_idstring
    The ID of the notestream to filter action items by. Optional
    only_completed_action_itemsstring
    Set this value to true if user wants only completed/done action items. Optional
    only_ongoing_action_itemsstring
    Set this value to true, if user only wants to get ongoing action items. Optional
    to_datestring
    The end date of the range to get the action items from. Must be a valid ISO 8601 date string. Optional Field, if not provided, it will be ignored.
    topicstring
    The topic of the action items to get. Optional
  • fellowaimcp_get_channel_detailsRetrieve detailed information about a specific channel by its ID.Read-only

    Get Channel Details

    Retrieve detailed information about a specific channel by its ID.

    Inputs

    channel_idintegerrequired
    The ID of the channel to get details for. Use list_channels to find channel IDs.
  • fellowaimcp_get_meeting_participantsRetrieve all participants of a meeting, including calendar attendees and note users.Read-only

    Get Meeting Participants

    Retrieve all participants of a meeting, including calendar attendees and note users.

    Inputs

    meeting_idstring
    The ID of the meeting to get the participants for. Optional
    note_idstring
    The ID of the note to get the participants for. Optional
  • fellowaimcp_get_meeting_summaryFetch summaries for one or more meetings, including key points, decisions, and action items.Read-only

    Get Meeting Summary

    Fetch summaries for one or more meetings, including key points, decisions, and action items.

    Inputs

    meeting_idsstring
    List of meeting IDs to get summaries for. Must be provided as an array/list, for example: ['meeting_id_1', 'meeting_id_2']. Optional.
    note_idstring
    The ID of the note to get the summary for. Optional
  • fellowaimcp_get_meeting_transcriptRetrieve the transcript of a meeting.Read-only

    Get Meeting Transcript

    Retrieve the transcript of a meeting. For meetings 15+ minutes, use start_time and end_time to fetch a specific segment.

    Inputs

    end_timestring
    End time from beginning of recording (seconds, MM:SS, or HH:MM:SS format). If specified, minimum time range of 300s (5 minutes) is required.
    meeting_idstring
    The ID of the meeting to get the transcript for. Optional
    note_idstring
    The ID of the note to get the transcript for. Optional
    recording_idstring
    The ID of a specific recording/part to get. Optional. Use this for multi-part meetings when you need a specific part's transcript.
    start_timestring
    Start time from beginning of recording (seconds, MM:SS, or HH:MM:SS format). If specified, minimum time range of 300s (5 minutes) is required.
  • fellowaimcp_list_channelsList all available channels in the workspace, optionally filtered by name or type.Read-only

    List Channels

    List all available channels in the workspace, optionally filtered by name or type.

    Inputs

    namestring
    Optional filter: channel name (case-insensitive partial match)
    typestring
    Optional filter: channel type (public or private)
  • fellowaimcp_search_meetingsSearch for meetings across calendar events and notes, with filters for participants, date range, content, and summary.Read-only

    Search Meetings

    Search for meetings across calendar events and notes, with filters for participants, date range, content, and summary.

    Inputs

    channel_idstring
    The ID of the channel to filter the meetings by. This is used to limit the search to a subset of all possible meetings the user has access to. Optional.
    from_datestring
    The start date of the range to get meetings from (inclusive). ISO 8601 date string format. Used to filter meetings by start date. Optional but its use it's highly recommended.
    has_external_participantsstring
    Whether to filter meetings that have external participants. Optional.
    has_summarystring
    Whether to filter meetings that have a summary or not. If you are trying to answer a question that depends on meeting content, most of the time you will want to use this since most meetings without summary are not useful. If you don't get the results you expect, you can try again without this parameter but using 'note'. Optional.
    notestring
    A search query to match against meeting notes content. Used to search in meeting notes content. Optional but recommended.
    note_idstring
    The ID of the note to filter the meetings by. Optional.
    note_summarystring
    A semantic search query to search within meeting note summaries. This should be used specifically for searching past meetings with generated summaries. For best results, include the core of the user's question or prompt here rather than just keywords, as the semantic search works better with full context. If the question include things covered by other parameter like attendees, meeting title, etc, rephrase the question to NOT include those. Ideally this should be used in conjunction with the keyword based search of 'note' since some notes may have the relevant information but have no summaries. If no results are found with 'note_summary' or 'has_external_participants', use 'note'. Optional but recommended.
    notestream_idstring
    The ID of the note stream to filter the meetings by. Optional.
    participant_email_domainsstring
    List of email domains to filter meetings by participant domains (AND match). Must be provided as an array/list, for example: ['company.com', 'partner.com']. Optional.
    participant_emailsstring
    List of email addresses to filter meetings by participants (AND match). Must be provided as an array/list, for example: ['user1@company.com', 'user2@company.com']. Optional.
    participant_full_namesstring
    List of full names to filter meetings by participants (AND match). Must be provided as an array/list, for example: ['John Smith', 'Jane Doe']. Optional.
    titlestring
    A simple keyword based search query to match against meeting titles. Used to search in meeting titles across all sources. Optional.
    to_datestring
    The end date of the range to get meetings from (inclusive). ISO 8601 date string format. Used to filter meetings by end date. If it's obvious that the thing we are looking for is in the past, do set this field to the current date. Optional but its use it's highly recommended.
    transcriptstring
    A search query to match against meeting transcripts. Used to perform semantic search in meeting transcripts quotes. This does not include the speaker. Optional.
    transcript_speakerstring
    The speaker to filter the transcripts by. It could be someone who is mentioning somebody or something. Use this parameter to filter transcripts by a specific speaker's name. This is particularly useful when searching for statements or mentions made by a particular person. Optional.
    user_has_calendar_eventstring
    IMPORTANT: Set this to True when the user asks about their OWN meetings. This includes phrases like: 'my meetings', 'meetings I had', 'meetings I attended', 'meetings on my calendar', 'my calls', 'meetings I was in', or any query that implies the user wants meetings they personally participated in (not just meetings they have access to). When True, results are filtered to only include meetings where the user was an invited attendee.

Workflows

Search for recent meetings

Use fellowaimcp_search_meetings to find meetings by title, date range, participants, or content. Set user_has_calendar_event: true to search only the current user’s own meetings.

const meetings = await actions.executeTool({
connector: 'fellowaimcp',
identifier: 'user_123',
toolName: 'fellowaimcp_search_meetings',
toolInput: {
from_date: '2024-01-01',
to_date: '2024-01-31',
user_has_calendar_event: true,
has_summary: true,
},
});
console.log(meetings);

Get a meeting summary

Use fellowaimcp_get_meeting_summary to retrieve AI-generated summaries for one or more meetings, including key points, decisions, and action items.

const summary = await actions.executeTool({
connector: 'fellowaimcp',
identifier: 'user_123',
toolName: 'fellowaimcp_get_meeting_summary',
toolInput: {
meeting_ids: ['meeting_abc123'],
},
});
console.log(summary);

Fetch overdue action items

Use fellowaimcp_get_action_items to retrieve action items assigned to the user, filtered by status or date range.

const actionItems = await actions.executeTool({
connector: 'fellowaimcp',
identifier: 'user_123',
toolName: 'fellowaimcp_get_action_items',
toolInput: {
is_overdue: true,
},
});
console.log(actionItems);