▲HIGHLAND DOCS

MCP for OpenAI

WhereMethodAuth
ChatGPTDeveloper mode connectorKey in the URL path
Responses API{"type":"mcp"} remote toolheaders
Agents SDK (Python)HostedMCPTool or MCPServerStreamableHttpheaders
Codex CLIconfig.tomlEnv var bearer token, see Editors

ChatGPT (developer mode)

  1. In ChatGPT open Settings → Apps & Connectors → Advanced settings and turn on Developer mode (Plus, Pro, Business, Enterprise and Edu plans).
  2. Create a connector. Name: Highland. MCP server URL: https://api.highlnd-intel.group/mcp/<YOUR_KEY>. Authentication: No authentication (the key is in the URL).
  3. In a new chat, choose Developer mode from the tools menu and enable Highland.
  4. Ask: "Use Highland to audit the security headers of https://example.com."

Developer mode can ask you to confirm each tool call. Highland tools are read-only lookups (they are marked readOnlyHint), but every call is billed.

Responses API

OpenAI calls the server from its side, lists the tools and runs them during the response.

python (openai SDK)
# pip install openai
import os
from openai import OpenAI

client = OpenAI()  # reads OPENAI_API_KEY

resp = client.responses.create(
    model="gpt-5",
    tools=[{
        "type": "mcp",
        "server_label": "highland",
        "server_url": "https://api.highlnd-intel.group/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['HIGHLAND_KEY']}"},
        "allowed_tools": ["dns-lookup", "mail-auth", "header-audit"],
        "require_approval": "never",
    }],
    input="Check example.com: DNS, email auth and security headers. Summarize the risks.",
)
print(resp.output_text)
javascript (openai SDK)
// npm i openai
import OpenAI from "openai";

const client = new OpenAI();
const resp = await client.responses.create({
  model: "gpt-5",
  tools: [{
    type: "mcp",
    server_label: "highland",
    server_url: "https://api.highlnd-intel.group/mcp",
    headers: { Authorization: `Bearer ${process.env.HIGHLAND_KEY}` },
    require_approval: "never",
  }],
  input: "Summarize https://example.com in three bullet points using Highland page-markdown and summarize.",
});
console.log(resp.output_text);
curl
curl -s https://api.openai.com/v1/responses \
  -H "authorization: Bearer $OPENAI_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-5",
    "tools": [{
      "type": "mcp",
      "server_label": "highland",
      "server_url": "https://api.highlnd-intel.group/mcp",
      "headers": {"Authorization": "Bearer '"$HIGHLAND_KEY"'"},
      "require_approval": "never"
    }],
    "input": "Look up the RDAP record for example.com"
  }'

allowed_tools keeps the tool list short (fewer input tokens). Leave require_approval at its default to approve each call yourself with an mcp_approval_response item.

Agents SDK (Python)

python (openai-agents, hosted tool)
# pip install openai-agents
import os, asyncio
from agents import Agent, Runner, HostedMCPTool

agent = Agent(
    name="Domain auditor",
    instructions="You audit domains. Use the Highland tools, then give a short, prioritized fix list.",
    tools=[HostedMCPTool(tool_config={
        "type": "mcp",
        "server_label": "highland",
        "server_url": "https://api.highlnd-intel.group/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['HIGHLAND_KEY']}"},
        "require_approval": "never",
    })],
)

print(asyncio.run(Runner.run(agent, "Audit example.com")).final_output)
python (openai-agents, local client)
import os, asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(params={
        "url": "https://api.highlnd-intel.group/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['HIGHLAND_KEY']}"},
    }) as highland:
        agent = Agent(name="Helper", instructions="Use Highland tools when useful.", mcp_servers=[highland])
        print((await Runner.run(agent, "Count the tokens in 'hello world'")).final_output)

asyncio.run(main())

The hosted tool runs on OpenAI's side; the local client runs on your machine and works with any model the SDK supports.