{
  "version": 3,
  "summary": "Modem is an AI product teammate for developer-facing teams. It clusters customer feedback from Slack, Discord, GitHub, Zendesk, Intercom, and email into prioritized topics linked to the people and companies behind them. Agents reach it through a hosted MCP server, a REST API, an ingest API, and the modem CLI.",
  "credentials": {
    "modem_oauth": {
      "type": "oauth2",
      "label": "Modem OAuth (MCP)",
      "setup": "The hosted MCP server at `https://mcp.modem.dev/mcp` is protected by OAuth 2.1 with PKCE and dynamic client registration. Add the URL to an OAuth-capable MCP client and approve access in the browser; there is no key to paste. Resource metadata: `https://mcp.modem.dev/.well-known/oauth-protected-resource`. Authorization server: `https://app.modem.dev/api/auth`. Scopes: `data:read` (search only) and `agent:invoke` (agent runs plus the write tools). The server is in beta and the organization must be enabled by Modem."
    },
    "modem_api_key": {
      "type": "api_key",
      "label": "Modem organization API key",
      "generateUrl": "https://app.modem.dev/org/settings/api-keys",
      "setup": "Organization owners create keys in the Modem dashboard under Settings → API Keys. Keys start with `modem_`, are shown once, are scoped to one organization, and are rate limited to 120 requests per minute. Send as `Authorization: Bearer modem_…`. The same key authenticates the CLI: `modem auth login` opens the create-key dialog and stores the pasted key in `~/.modem/credentials.json`."
    },
    "modem_ingest_public_key": {
      "type": "api_key",
      "label": "Modem ingest project key",
      "setup": "Managed per project, not per organization. In the Modem dashboard open Organization → Projects, pick the project to ingest into, and create or copy a key under Public Keys (org admins and owners only). Send it in the `x-modem-public-key` header on `POST https://ingest.modem.dev/ingest`. Despite the name, treat it as a server-side secret and keep it out of browser and mobile code."
    }
  },
  "surfaces": [
    {
      "slug": "mcp",
      "name": "Modem MCP server",
      "type": "mcp",
      "url": "https://mcp.modem.dev/mcp",
      "transports": [
        "streamable-http"
      ],
      "docs": "https://modem.dev/docs/api/modem-mcp-server",
      "basis": {
        "via": "declared",
        "source": "https://modem.dev/.well-known/integrations.json"
      },
      "auth": {
        "status": "required",
        "entries": [
          {
            "use": [
              {
                "id": "modem_oauth",
                "mechanics": {
                  "source": "well-known"
                }
              }
            ],
            "basis": {
              "via": "declared",
              "source": "https://modem.dev/.well-known/integrations.json"
            }
          }
        ]
      }
    },
    {
      "slug": "api",
      "name": "Modem API",
      "type": "http",
      "url": "https://api.modem.dev/v1",
      "docs": "https://modem.dev/docs/api-reference/introduction",
      "basis": {
        "via": "declared",
        "source": "https://modem.dev/.well-known/integrations.json"
      },
      "auth": {
        "status": "required",
        "entries": [
          {
            "use": [
              {
                "id": "modem_api_key",
                "mechanics": {
                  "source": "http",
                  "in": "header",
                  "headerName": "Authorization",
                  "scheme": "Bearer"
                }
              }
            ],
            "basis": {
              "via": "declared",
              "source": "https://modem.dev/.well-known/integrations.json"
            }
          }
        ]
      }
    },
    {
      "slug": "ingest-api",
      "name": "Modem Ingest API",
      "type": "http",
      "url": "https://ingest.modem.dev",
      "docs": "https://modem.dev/docs/api/ingest/overview",
      "basis": {
        "via": "declared",
        "source": "https://modem.dev/.well-known/integrations.json"
      },
      "auth": {
        "status": "required",
        "entries": [
          {
            "use": [
              {
                "id": "modem_ingest_public_key",
                "mechanics": {
                  "source": "http",
                  "in": "header",
                  "headerName": "x-modem-public-key"
                }
              }
            ],
            "basis": {
              "via": "declared",
              "source": "https://modem.dev/.well-known/integrations.json"
            }
          }
        ]
      }
    },
    {
      "slug": "cli",
      "name": "Modem CLI",
      "type": "cli",
      "command": "modem",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "@modem-dev/cli",
          "runtimeHint": "npx"
        }
      ],
      "docs": "https://github.com/modem-dev/cli#readme",
      "basis": {
        "via": "declared",
        "source": "https://modem.dev/.well-known/integrations.json"
      },
      "auth": {
        "status": "required",
        "entries": [
          {
            "use": [
              {
                "id": "modem_api_key",
                "mechanics": {
                  "source": "cli",
                  "command": "modem auth login"
                }
              }
            ],
            "basis": {
              "via": "declared",
              "source": "https://modem.dev/.well-known/integrations.json"
            }
          }
        ]
      }
    }
  ]
}