# Install Mica Intelligence Signal

Use this guide to configure a remote MCP client for the authenticated Mica Intelligence Signal service.

## Connection

- Name: `Mica Intelligence Signal`
- Remote MCP URL: `https://social.graniteai.co/mcp`
- Transport: Streamable HTTP
- Authentication: Clerk OAuth with Dynamic Client Registration (DCR)

## Safety rules for the installing agent

1. Configure only the remote MCP URL above.
2. Let the MCP client open and complete Clerk OAuth/DCR in the user's browser.
3. Never request, copy, store, or invent Clerk secret keys, Stripe keys, database URLs, bearer tokens, or cookies.
4. Never add a tenant ID, NAICS code, or geography as a tool argument. The server resolves those from the authenticated tenant.
5. Do not claim installation succeeded until the client lists all five tools,
   `mica_get_signal_catalog` succeeds, and one compatible `mica_get_signal_brief` call
   returns a bounded, source-cited `market-brief.v2` response.
6. If authorization, discovery, or the verification call fails, stop and send the user to `https://social.graniteai.co/intelligence/help` with the exact error text. Do not weaken authentication or substitute another URL.

## ChatGPT

OpenAI supports developer-mode apps on all ChatGPT plans. A Pro user can enable
developer mode for their own account. In a Business, Enterprise, or Edu
workspace, the workspace must allow developer mode, and an admin may also
control connected-app permissions.

1. In ChatGPT, open **Settings → Security and login** and turn on
   **Developer mode**. If the switch is unavailable in a managed workspace, ask
   the workspace admin to allow developer mode.
2. Open **Settings → Plugins**, or go directly to
   [chatgpt.com/plugins](https://chatgpt.com/plugins).
3. Select the plus button to create a developer-mode app.
4. Use:
   - Name: `Mica Intelligence Signal`
   - Description: `Read-only, cited market intelligence for my authenticated business.`
   - MCP server URL: `https://social.graniteai.co/mcp`
5. Create the app. ChatGPT should discover `mica_get_signal_catalog`,
   `mica_get_signal_history`, `mica_get_signal_lineage`, `mica_get_signal_brief`, and
   `mica_get_derived_stat`.
6. If the app existed before a deployment changed its tools, refresh its
   metadata before testing.
7. Complete the Clerk authorization window using the intended Mica account.
8. Start a new chat, choose **+ → More → Mica Intelligence Signal**, and ask:

   > Use Mica Intelligence Signal. Call `mica_get_signal_catalog` with no arguments.
   > State the authenticated business name, the number of eligible series, and
   > the source and attribution for the first three series. Then choose one
   > eligible series compatible with `primary_trend`, call
   > `mica_get_signal_brief` for that series with `view: "primary_trend"`, and
   > report its schema version, period, source, attribution, and interpretation
   > limits. Do not invent tenant, industry, or geography arguments.

Installation is complete only when both calls succeed, the answer identifies
the intended business, and the brief reports `market-brief.v2`. OpenAI's
current developer-mode workflow is documented in
[Connect from ChatGPT](https://developers.openai.com/apps-sdk/deploy/connect-chatgpt).

For Business and Enterprise workspaces, admins control the workspace permission
default under **Workspace settings → Permissions & roles → Connected data** and
can configure Mica under **Admin Apps → App permissions**. Edu workspaces can
likewise restrict whether developer mode is available; if the switch or plus
button is absent, the workspace administrator must enable the capability before
a member can add Mica.

## Claude and Claude Desktop

For an individual Claude account, open **Customize → Connectors → Add custom connector**. For Team or Enterprise, an Owner first adds it under **Organization settings → Connectors**. Name it `Mica Intelligence Signal`, paste `https://social.graniteai.co/mcp`, choose **Connect**, and complete Clerk authorization.

Remote connectors are configured in Connectors—not in `claude_desktop_config.json`.

## Claude Code

```sh
claude mcp add --transport http mica-intelligence-signal https://social.graniteai.co/mcp
```

Complete the browser authorization if prompted. Then list MCP servers/tools,
call `mica_get_signal_catalog` with no arguments, and use one compatible catalog
series for a bounded `mica_get_signal_brief` verification call.

## Codex

```sh
codex mcp add mica-intelligence-signal --url https://social.graniteai.co/mcp
codex mcp login mica-intelligence-signal
```

Complete Clerk authorization in the browser. To undo a local CLI installation, run `claude mcp remove mica-intelligence-signal` or `codex mcp remove mica-intelligence-signal` as appropriate. Removing the client entry does not cancel the subscription; billing remains under the Mica Intelligence account page.

## What authorization errors mean

- `401 unauthorized` means the MCP request has no usable Clerk OAuth bearer
  token. Complete the authorization window, or disconnect and reconnect the app
  to obtain a fresh authorization. Do not paste a token into ChatGPT.
- `403 subscription_required` means Clerk recognized the account, but the
  account cannot currently pass the full access gate. Check the exact `reason`:
  `tenant_binding_missing` means setup or prepared-business claim is
  incomplete; `clerk_feature_missing`, `inactive_subscription`, and
  `neon_feature_missing` indicate a paid-plan or entitlement problem;
  `entitlement_unavailable` means no matching tenant entitlement mirror is
  available.
  Signing in again does not create access. Open the Mica account or
  subscription page; if setup and payment are current, send the exact `reason`
  field to Intelligence Help.
- `403 origin_not_allowed` is a server/client-origin configuration error, not a
  billing failure. Send the exact error to Intelligence Help.
- `503 unavailable` means the Clerk authority or Neon entitlement-mirror read
  is temporarily unavailable. Access fails closed; retry later or contact
  Intelligence Help.

## Disconnecting is not canceling

Removing Mica from ChatGPT, Claude, or Codex revokes or removes that client's
connection. It does **not** cancel the `$299/month` Mica Intelligence Signal
subscription. Cancel billing from the Mica Intelligence account page. A
canceled subscription may remain usable through its already-paid period; access
ends when that paid-through period ends.

## Completion test

The connection is complete only when:

- OAuth finishes under the intended Clerk account;
- the MCP client shows Mica Intelligence Signal as connected;
- the client lists `mica_get_signal_catalog`, `mica_get_signal_history`,
  `mica_get_signal_lineage`, `mica_get_signal_brief`, and `mica_get_derived_stat`;
- `mica_get_signal_catalog` succeeds with no arguments;
- the returned scope names the intended authenticated business; and
- one compatible `mica_get_signal_brief` call returns bounded
  `market-brief.v2` output with source, attribution, and interpretation limits
  rather than an authentication or subscription error. The complete serialized
  result is capped at 65,536 bytes (64 KiB); an oversized request returns
  narrowing guidance instead of an oversized payload.

No subscription means no tools, resources, or business data.
