Skip to content

ChatGPT × Odoo (Custom GPT) ​

A ChatGPT Custom GPT can read and analyze your PLANA Business Cloud (Odoo) ERP in plain language — "how much did we invoice last month?", "which invoices are overdue?" — and the GPT queries Odoo for you and writes the answer.

Unlike Claude, Cursor or Gemini, Custom GPTs can't speak MCP — they call a plain REST API described by an OpenAPI schema ("Actions"). PLANA provides a small gateway on the same MCP server that exposes exactly those tools as REST, so your GPT connects over a single hosted endpoint:

https://mcp.planapulse.com/chatgpt

Prefer a native MCP client?

If you use Claude, Cursor, VS Code, OpenCode or Gemini, connect directly over MCP instead — it's simpler and needs no token. See Claude × Odoo, OpenCode × Odoo, or Gemini × Odoo. Use this ChatGPT guide only for Custom GPTs.

Permission-scoped — it connects as you

Your GPT can do exactly what your PLANA Pulse role allows: reading is always available; creating, updating or reconciling records only if an administrator has granted you those permissions (most accounts are read-only by default). It uses your own Odoo access, so you only ever see the data your Odoo account is already allowed to see. A blocked action returns a clear message.

Before you start ​

You need four things:

  1. A PLANA Business Cloud (Odoo) account. You connect your Odoo API key yourself on the token page in Step 2 — no separate setup and no administrator needed.
  2. Access granted by your PLANA administrator. Access is by invitation: an admin adds your Google email to the allowlist and binds it to your Odoo instance. If you haven't been added yet, ask us to enable your account ↗.
  3. A paid ChatGPT plan (Plus, Team, or Enterprise). Creating a Custom GPT with an Action is a paid feature — free ChatGPT accounts can't build GPTs. You can subscribe month-to-month and cancel after testing.
  4. Your token page: https://mcp.planapulse.com/chatgpt.

How it works ​

  ┌──────────────┐  1. Google sign-in   ┌─────────────────────────┐
  │  Token page  │ ───── OAuth ───────▶ │         Google          │
  │  /chatgpt    │ ◀──── you are X ──── └─────────────────────────┘
  └──────┬───────┘  2. copy API token
         │
         │ paste token into the GPT Action (Bearer)
         ▼
  ┌──────────────┐   3. REST call    ┌─────────────────────┐   as you   ┌──────────────┐
  │ Your Custom  │ ────────────────▶ │  mcp.planapulse.com │ ─────────▶ │  Your Odoo   │
  │     GPT      │ ◀──────────────── │   /chatgpt gateway  │ ◀───────── │ (your rights)│
  └──────────────┘     answer        └─────────────────────┘            └──────────────┘
  1. Get a token from the Google-gated page — it proves who you are and issues a personal key.
  2. Connect your Odoo on the same page by pasting your Odoo API key.
  3. Add the Action to your Custom GPT: import the OpenAPI schema and paste the token.
  4. Ask — the GPT calls the gateway, which runs each tool against your Odoo with your permissions.

Step 1 · Get your API token ​

  1. Open https://mcp.planapulse.com/chatgpt and click Sign in with Google.
  2. Sign in with the same Google account your administrator added to the allowlist.
  3. Click Generate API token and copy it now — it's shown only once. Generating a new token revokes the old one.

Not a registered user?

If the page says your Google account isn't on the allowlist, no token is issued — ask your administrator to add you, or contact us ↗.

Step 2 · Connect your Odoo ​

Still on https://mcp.planapulse.com/chatgpt, find Your Odoo connection. If it says "no API key stored", your GPT can't read anything from Odoo yet.

Create the key in Odoo:

  1. Open your Odoo (the page shows which instance) and log in.
  2. Click your avatar (top-right) → My Profile / Preferences.
  3. Open the Account Security tab.
  4. Click New API Key — Odoo may ask for your password or 2FA.
  5. Name it (e.g. ChatGPT) and copy it now — Odoo shows it only once.

Then paste it into the API-key field on the token page and click Connect Odoo. The key is checked against your Odoo immediately, so a wrong or expired key is refused right there. On success the panel shows your Odoo login, user id and version.

You can Replace API key any time (for rotation) or Disconnect Odoo to remove it.

Never paste your API key into a chat

Type it only on the token page. Anything you type into ChatGPT is stored by OpenAI in your conversation history — which is exactly why the GPT itself has no "set my API key" action. Your key travels from your browser to PLANA and nowhere else, and is encrypted at rest.

"An administrator has to bind your account to an Odoo instance"

If you see this instead of a key field, your account isn't linked to an Odoo database yet. That part is admin-only — ask us to enable it ↗.

Step 3 · Add the Action to your Custom GPT ​

In ChatGPT (with a paid plan):

  1. Go to chatgpt.com/gpts/editor (or the sidebar → GPTs → + Create).
  2. Open the Configure tab (Actions live here — not the default chat "Create" builder).
  3. Scroll to Actions → Create new action.
  4. Under Schema, click Import from URL and paste:
    https://mcp.planapulse.com/chatgpt/openapi.json
    (If there's no "Import from URL" button, open that URL in your browser, copy the JSON, and paste it into the schema box.) The Odoo operations appear in the list.
  5. Under Authentication, choose API Key, set Auth Type to Bearer, and paste your token. Save.
  6. Save the GPT (top-right Create). Only me is fine — a private GPT needs no privacy policy.

Step 4 · Ask your ERP ​

In the GPT's preview pane (or after saving), ask in plain language:

  • "How many customer invoices do we have this year, and what's the total?"
  • "List my unpaid customer invoices over 30 days."
  • "Break down this year's sales by month."
  • "Who are our top 10 customers by revenue?"

Reads run without a prompt; if your role allows writes, ChatGPT will ask you to confirm each change before it's made.

Test without ChatGPT first

You can verify your token with a plain curl before building the GPT — this is exactly what ChatGPT does under the hood:

bash
curl -X POST https://mcp.planapulse.com/chatgpt/t/odoo_search_count \
  -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
  -d '{"model":"account.move","filters":{"move_type":"out_invoice"}}'

A JSON count means everything works.

What you can do ​

The gateway exposes generic Odoo tools — you rarely name them; just ask, and the GPT picks the right one:

ActionWhat it doesNeeds permission
odoo_search_read · odoo_readRead records matching a filter, or by idRead
odoo_search_countCount records (cheap)Read
odoo_read_groupAggregate — sums, averages, counts — for reportsRead
odoo_list_models · odoo_get_fields · odoo_name_searchDiscover models/fields, look up by nameRead
odoo_list_open_itemsList unreconciled journal itemsRead
odoo_create · odoo_write · odoo_unlinkCreate / update / delete recordsWrite / delete
odoo_reconcile_move_lines · odoo_unreconcile_move_linesReconcile journal itemsAccounting

Read actions are marked so ChatGPT can "always allow" them; write and reconcile actions ask for confirmation each time.

Troubleshooting ​

SymptomCauseFix
Google: "redirect_uri_mismatch"The gateway's redirect URI isn't registered yetPlatform-side setup — contact us ↗
Token page: "not a registered user"Your Google email isn't on the allowlistAsk your administrator
Action returns 401 "Invalid or missing API token"Token wrong, or revoked by generating a newer oneGet a fresh token at /chatgpt and update the Action
Action returns 403 "…requires the '…' MCP permission"Your role doesn't allow that write/reconcileAsk an administrator to grant the role
Action returns "No Odoo API key configured for your account"You haven't connected your Odoo yetDo Step 2 — paste your Odoo API key on the token page
Action returns "No Odoo instance is configured for you"Your account isn't bound to an Odoo database (admin-only)Contact your administrator
Token page: "Odoo rejected the login/API key"Wrong key, expired key, or the wrong Odoo loginCreate a fresh API key in Odoo; if your Odoo login differs from your Google email, enter it in the second field
Can't find Create / ActionsYou're on a free ChatGPT planBuilding Custom GPTs needs Plus/Team/Enterprise
Schema import failsURL blocked or pasted incompletelyPaste the full JSON from the OpenAPI URL manually

FAQ ​

Do I have to pay for ChatGPT?

To build a Custom GPT with an Action, yes — that's a paid ChatGPT feature (Plus and up). Getting the token from PLANA and calling the gateway (e.g. via curl) is free.

Can it change or delete data in my Odoo?

Only if your PLANA Pulse role grants it. By default accounts are read-only. Any write or reconcile action is also confirmed by ChatGPT before it runs.

Where is my token stored, and how do I revoke it?

Only a hash of the token is stored — the plaintext is shown once and never recoverable. Revoke it any time from https://mcp.planapulse.com/chatgpt (or just generate a new one, which revokes the old).

Is my activity logged?

Yes. Every tool call is recorded in an audit log (who, which tool, which model, status, timing) — metadata and short summaries only, never the contents of your ERP records.

Why not MCP, like the other assistants?

ChatGPT Custom GPTs don't support MCP — they only call REST "Actions". This gateway is a thin bridge that translates those REST calls into the same MCP tools, so nothing about your setup or permissions changes. Every other client should use the native MCP endpoint.

Which Odoo instance do I connect to?

The one your administrator assigned to your account — the same one used by the MCP integration. You don't choose it at connect time.

Last updated:

© PLANA Digital Ltd.