ChatGPT

ChatGPT cannot hit localhost. It only talks to a public HTTPS MCP URL. The hosted Affest dashboard is https://affest.cefo.dev. Affest also requires Authorization: Bearer aff_… on every /mcp call, and ChatGPT usually cannot set that header. Inject the token at the MCP edge, then add the HTTPS URL as a custom connector.

What you need

  • ChatGPT Plus, Pro, Business, or Edu on chatgpt.com. Free does not get custom MCP. Mobile does not.
  • Affest running locally, wallet connected.
  • The MCP server on port 8787.
  • ngrok, because it can attach the bearer header. Cloudflare Tunnel will not.

Keep MCP, the tunnel, and the dashboard up the whole time you chat. Issue the token from MCP agents first if you have not.

1. Start Affest MCP

From the repo root:

node "node_modules\pnpm\bin\pnpm.cjs" --filter @affest/mcp start

You should see Affest MCP listening on http://127.0.0.1:8787/mcp. Leave that window open. Optional check: http://127.0.0.1:8787/health should return ok: true.

2. Issue a credential

  1. Open Affest at /agents.
  2. Connect the same MetaMask wallet you deposited with.
  3. Click Generate MCP credential.
  4. Copy the token from the input. It starts with aff_. Affest shows it once.

That token is bound to that wallet. ChatGPT will read that account's vault, TCTC, Sepolia ETH, and strategies. It still cannot sign.

3. Expose 8787 over HTTPS and attach the token

ChatGPT calls OpenAI's servers, not your laptop. http://127.0.0.1:8787/mcp will fail.

In a second PowerShell window:

ngrok http 8787 --request-header-add "Authorization: Bearer PASTE_YOUR_aff_TOKEN"

Copy the HTTPS origin ngrok prints, then add /mcp. Example: https://abc123.ngrok-free.app/mcp.

Cloudflare Tunnel without a header inject gets 401 valid Affest bearer credential required. Stick with ngrok for this.

4. Turn on Developer Mode

  1. On chatgpt.com, open profile then Settings.
  2. Open Apps & Connectors. The menu is sometimes Connectors or Plugins.
  3. Open Advanced and enable Developer Mode.

If it is not there, try Settings → Security and login → Developer Mode. On Business or Enterprise, an admin has to allow it first.

5. Create the Affest connector

  1. Stay on Connectors or Plugins and click Create, or the plus.
  2. Name it Affest. Description: Read my Creditcoin CC3 testnet vault and draft TCTC/ETH mixes. Never signs.
  3. MCP server URL is the ngrok URL ending in /mcp.
  4. Authentication is No authentication. The tunnel already injects the bearer.
  5. Check I trust this application, then Create or Connect.

You should see tools such as get_affest_account, get_active_strategies, draft_strategy, and explain_rebalance.

6. Use it in a chat

Developer Mode connectors are off until you pick them in that conversation.

  1. Open a new chat.
  2. Click + next to the composer, then More, then Developer Mode.
  3. Enable Affest.
  4. Ask something the tools can answer.

Prompts that work:

  • Read my Affest account. Show CC3 TCTC, vault, and Sepolia ETH.
  • List my live CC3 strategies.
  • Draft a conservative TCTC/ETH mix. Do not try to sign anything.
  • When is Affest allowed to rebalance?

ChatGPT should call get_affest_account, get_active_strategies, draft_strategy, or explain_rebalance.

What it will not do

  • It will not sign createStrategy, wrap, deposit, or pause. Pause in MCP only tells you to use the dashboard.
  • draft_strategy comes back with executable: false. You still create the strategy in Affest and sign in MetaMask.
  • Rebalance still waits for a verified Sepolia PortfolioSignal on Creditcoin. See Proofs.

If it breaks

What you seeFix
Connection failed, or not HTTPSUse the https://…/mcp ngrok URL, not localhost.
401 bearer requiredRestart ngrok with --request-header-add "Authorization: Bearer aff_…".
Initialize -32000The client must send Accept: application/json, text/event-stream. ChatGPT normally does.
Connected, model never calls itEnable Affest from + in that chat, or say use Affest.
Empty balancesCredential was issued for a different wallet. Generate again on /agents while that wallet is connected, then restart ngrok with the new token.
Tools vanish after ngrok restartFree ngrok URL changed. Edit the connector URL.

Claude Code and Cursor can use http://127.0.0.1:8787/mcp plus the bearer header directly. ChatGPT cannot. That is the only extra hop. More errors are on Errors.