OSS-first docs

These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.

meeting-recorder.granola

Granola meeting notes and transcripts via Enterprise API or MCP transport.

  • Type: integration (integration)
  • Version: 1.0.0
  • Owners: platform.integrations
  • Tags: meeting-recorder, granola, transcripts
  • field.key.label
    meeting-recorder.granola
    field.version.label
    1.0.0
    field.type.label
    integration (integration)
    field.title.label
    meeting-recorder.granola
    field.description.label

    Granola meeting notes and transcripts via Enterprise API or MCP transport.

  • Type: integration (integration)
  • Version: 1.0.0
  • Owners: platform.integrations
  • Tags: meeting-recorder, granola, transcripts
  • field.tags.label
    meeting-recorder,granola,transcripts
    field.owners.label
    platform.integrations
    field.stability.label

    Granola meeting notes and transcripts via Enterprise API or MCP transport.

    Source Definition

    export const granolaIntegrationSpec = defineIntegration({
      meta: {
        key: 'meeting-recorder.granola',
        version: '1.0.0',
        category: 'meeting-recorder',
        title: 'Granola Meeting Notes',
        description:
          'Granola meeting notes and transcripts via Enterprise API or MCP transport.',
        domain: 'productivity',
        owners: ['platform.integrations'],
        tags: ['meeting-recorder', 'granola', 'transcripts'],
        stability: StabilityEnum.Experimental,
      },
      supportedModes: ['byok'],
      capabilities: {
        provides: [
          { key: 'meeting-recorder.meetings.read', version: '1.0.0' },
          { key: 'meeting-recorder.transcripts.read', version: '1.0.0' },
        ],
      },
      configSchema: {
        schema: {
          type: 'object',
          properties: {
            baseUrl: {
              type: 'string',
              description:
                'Optional override for the Granola API base URL. Defaults to https://public-api.granola.ai for API transport.',
            },
            transport: {
              type: 'string',
              enum: ['api', 'mcp'],
              description:
                'Transport mode for Granola integration. Use api for Enterprise API or mcp for broader MCP access.',
            },
            mcpUrl: {
              type: 'string',
              description:
                'Optional override for Granola MCP URL. Defaults to https://mcp.granola.ai/mcp.',
            },
            mcpHeaders: {
              type: 'object',
              additionalProperties: { type: 'string' },
              description: 'Optional static headers for MCP gateway/proxy setups.',
            },
            pageSize: {
              type: 'number',
              description:
                'Page size for listing notes (maximum 30 per Granola API).',
            },
          },
        },
        example: {
          transport: 'mcp',
          mcpUrl: 'https://mcp.granola.ai/mcp',
          pageSize: 10,
        },
      },
      secretSchema: {
        schema: {
          type: 'object',
          properties: {
            apiKey: {
              type: 'string',
              description:
                'Granola API key used as a Bearer token for Enterprise API requests (transport=api).',
            },
            mcpAccessToken: {
              type: 'string',
              description:
                'Optional bearer token for MCP proxy/gateway auth (transport=mcp).',
            },
          },
        },
        example: {
          mcpAccessToken: 'granola-mcp-***',
        },
      },
      healthCheck: {
        method: 'list',
        timeoutMs: 8000,
      },
      docsUrl: 'https://docs.granola.ai/help-center/sharing/integrations/mcp',
      byokSetup: {
        setupInstructions:
          'Use Granola MCP for browser OAuth access, or configure an Enterprise API key for REST transport.',
      },
    });