Checked against developers.openai.com on 30 August 2026
Lovie

Lovie MCP›OpenAI API

API

OpenAI API

The Responses API takes a remote MCP server as a tool. It is not an interactive OAuth client, so unlike every other client on this page you supply the access token yourself.

The only value you need

https://mcp.lovie.co/mcp

The tool block

A remote MCP server is one entry in tools. The model discovers the tool list itself; you only name the server.

{
  "type": "mcp",
  "server_label": "lovie",
  "server_url": "https://mcp.lovie.co/mcp",
  "server_description": "Banking, cap table, accounting and US company formation.",
  "require_approval": "always",
  "authorization": "<lovie access token>"
}
FieldMeaning
server_urlThe endpoint. A custom server always uses this; connector_id is only for OpenAI’s own hosted connectors.
server_labelHow the model refers to the server in its output.
require_approval"always" pauses for your confirmation before each call. Use "never" only once you trust the flow.
allowed_toolsOptional allowlist. Narrowing the surface improves tool choice and blast radius.
authorizationThe OAuth access token. The API does not store it — send it on every request.

Getting a token

This is the one client that cannot sign itself in

Every other client on this site runs the OAuth flow for you. The Responses API is not an interactive client — there is no browser to open — so you obtain an access token once and pass it in authorization.

  1. Install the CLI: brew install lovieco/tap/lovie — or see https://cli.lovie.co.
  2. Run lovie auth login and complete the sign-in in your browser.
  3. Read the access token out of the CLI’s credential store:
# macOS
jq -r '.credentials[] | select(.endpoint=="https://mcp.lovie.co/mcp") | .accessToken' \
  ~/Library/Application\ Support/lovie/credentials.json

# Linux
jq -r '.credentials[] | select(.endpoint=="https://mcp.lovie.co/mcp") | .accessToken' \
  ~/.config/lovie/credentials.json

Tokens expire. lovie auth login refreshes them, so read the value at request time rather than baking it into an image or a committed .env.

Python

import os
from openai import OpenAI

client = OpenAI()

resp = client.responses.create(
    model="gpt-5.6",
    tools=[{
        "type": "mcp",
        "server_label": "lovie",
        "server_url": "https://mcp.lovie.co/mcp",
        "server_description": "Banking, cap table, accounting and US company formation.",
        "require_approval": "always",
        "authorization": os.environ["LOVIE_ACCESS_TOKEN"],
    }],
    input="What is my cap table?",
)

print(resp.output_text)

TypeScript

import OpenAI from "openai";

const client = new OpenAI();

const resp = await client.responses.create({
  model: "gpt-5.6",
  tools: [{
    type: "mcp",
    server_label: "lovie",
    server_url: "https://mcp.lovie.co/mcp",
    server_description: "Banking, cap table, accounting and US company formation.",
    require_approval: "always",
    authorization: process.env.LOVIE_ACCESS_TOKEN,
  }],
  input: "What is my cap table?",
});

console.log(resp.output_text);

Without a token

Omit authorization and the connection still works: discovery is anonymous and the open tools answer. Anything that touches a company returns an authorization challenge instead of data, which is a reasonable way to explore the tool surface before wiring credentials.

If something goes wrong

SymptomCause
Tools listed, every call refusedNo token, an expired one, or it was dropped — the API keeps nothing, so it must be on every request.
The model picks the wrong toolSet allowed_tools to the handful the task needs.
Approvals on every stepExpected under "always". Move to "never" only for flows you have watched end to end.
Empty tool listserver_url is missing the /mcp path.

Somewhere else

Claude Web, desktop, mobile and Cowork. Chat app $_ Claude Code One command, then /mcp to sign in. Terminal ChatGPT Developer mode, then the Plugins page. Chat app Cursor One click, or ~/.cursor/mcp.json. Editor Ma Manus Settings → Connectors → Custom MCP. Agent VS VS Code MCP: Add Server, or .vscode/mcp.json. Editor Windsurf Cascade → MCP Servers. Editor Gemini CLI gemini mcp add, then /mcp auth. Terminal Zed Settings → AI → MCP Servers. Editor Go Goose goose configure → Remote Extension. Agent ·· Any MCP client The endpoint, and what each client calls it. Reference