Connect

Connect your AI to GateCore AI.

This is the page we send anyone who asks how to try it. Point Claude, ChatGPT, Cursor, or a raw HTTP client at one endpoint and it can browse the governed marketplace, no account required. Get a free key to procure and transact.

https://mcp.gatecoreai.com/mcp

Browsing (discover_listings, get_listing) needs no account. Procuring, submitting a lead, or otherwise transacting needs a GateCore MCP access key. Get one free at app.gatecoreai.com/developer/portal.

Get a free keyBrowse the marketplace →

Claude

Smoothest path

Claude, on claude.ai and in Claude Code, adds remote MCP servers as first-class connectors. This is the path we recommend if you have a choice: no wrapper code, no SDK install, just a URL.

claude.ai and the Claude desktop app

  1. Open Settings → Connectors.

    From any conversation, open the settings menu and choose Connectors.

  2. Add custom connector.

    Click Add custom connector at the bottom of the connector list.

  3. Enter the GateCore endpoint.

    Name it GateCore, paste https://mcp.gatecoreai.com/mcp as the remote MCP server URL, and save. No authentication step is required to browse.

  4. Enable it in a chat.

    Turn the connector on for the conversation, then ask Claude to look something up on the GateCore marketplace.

Claude Code (CLI)

Add it as a project or user-scoped MCP server with the CLI:

shell
claude mcp add --transport http gatecore https://mcp.gatecoreai.com/mcp

Or drop this directly into a project's .mcp.json:

.mcp.json
{
  "mcpServers": {
    "gatecore": {
      "type": "http",
      "url": "https://mcp.gatecoreai.com/mcp"
    }
  }
}

ChatGPT

Developer path only, today

Being straight about this: the consumer ChatGPT chat interface does not let you add an arbitrary remote MCP server the way Claude does. If you're chatting in the ChatGPT app or on chatgpt.com, there is no menu that reaches https://mcp.gatecoreai.com/mcp today.

What does work is OpenAI's Agents SDK (or ChatGPT's developer/connector mode, where your account has it enabled), where you point your own agent code at our streamable-HTTP endpoint directly.

OpenAI Agents SDK (Python)

shell
pip install openai-agents
python
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(
        params={"url": "https://mcp.gatecoreai.com/mcp"},
        name="gatecore",
    ) as gatecore:
        agent = Agent(
            name="Assistant",
            instructions="Use the gatecore server to discover and, when asked, procure governed marketplace listings.",
            mcp_servers=[gatecore],
        )
        result = await Runner.run(agent, "What can I buy on GateCore right now?")
        print(result.final_output)

asyncio.run(main())

Browsing needs nothing else. If your agent will call procure or submit_lead, pass a GateCore MCP access key through wherever your tool call carries credentials, not as a query parameter.

Cursor & other MCP clients

Generic mcpServers config

Cursor, Windsurf, and most other MCP-capable editors and agents read the same shape of config: an mcpServers object keyed by server name, with a remote url. Add this to Cursor's ~/.cursor/mcp.json (all projects) or .cursor/mcp.json in a repo (that project only), or the equivalent file for your tool.

mcp.json
{
  "mcpServers": {
    "gatecore": {
      "url": "https://mcp.gatecoreai.com/mcp"
    }
  }
}

If your client asks for a transport type, it's streamable HTTP. No API key or header is required to browse.

No client at all

Raw curl quickstart.

Three requests: open a session, list the tools, and call one. This is the exact sequence and headers, copy-paste runnable against the live endpoint.

1. Initialize a session

The Accept header must list both JSON and event-stream: the server replies over SSE. The response carries an mcp-session-id header; save it.

shell
curl -s -i -X POST https://mcp.gatecoreai.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"quickstart","version":"1.0"}}}'
response (trimmed)
HTTP/2 200
mcp-session-id: 5cd1565616414d14939ba8a580f8e4ff
content-type: text/event-stream

event: message
data: {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"GateCore Marketplace","version":"1.28.1"}}}

2. List the available tools

Send the mcp-session-id from step 1 on every request that follows.

shell
curl -s -X POST https://mcp.gatecoreai.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
response (trimmed)
event: message
data: {"jsonrpc":"2.0","id":2,"result":{"tools":[
  {"name":"discover_listings","title":"Discover Marketplace Listings", ...},
  {"name":"get_listing","title":"Get Listing Details", ...},
  {"name":"procure","title":"Request Governed Procurement", ...},
  {"name":"list_procurements","title":"List Procurement Decisions", ...},
  {"name":"submit_lead","title":"Submit Consumer Lead", ...}
]}}

3. Call discover_listings

No arguments required; every field is optional. This is a real, unauthenticated call, and no key is needed.

shell
curl -s -X POST https://mcp.gatecoreai.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"discover_listings","arguments":{}}}'
response (trimmed)
event: message
data: {"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"{
  \"listing_id\": \"listing:tool-sodzilla-lead-quote\",
  \"kind\": \"resource_capability\",
  \"title\": \"The Sodzilla: Sod Installation, Lawn Replacement and Turf Quote, South Pinellas County FL (Qualified Lead)\",
  \"contract\": { \"contract_id\": \"contract:tool:sodzilla-lead-quote\", \"version\": \"1.2.0\", ... },
  \"lifecycle\": \"published\",
  \"contract_sha256\": \"0dcdc784091ccabf1e91d54a89eb440e48cf41d87758945eff504e54519dc842\"
}"}],"isError":false}}

Captured live against mcp.gatecoreai.com on 26 August 2026. Listings, session IDs, and hashes will differ on your run; the shapes will not.

Two tiers

What you get, at each level.

No account

Browse

Anything read-only, open to any agent that can send an HTTP request.

  • discover_listings: search the marketplace by keyword, tag, price ceiling, or minimum trust
  • get_listing: fetch one listing's full contract, price, scopes, trust floor, data classification
  • Read the receipt verifier and confirm any GateCore receipt offline
  • Read llms.txt and the sitemap for the full page roster
With a free key

Transact

A GateCore MCP access key (gcmk_...) from the developer portal unlocks the rest.

  • procure: request a governed procurement decision against a listing's contract
  • list_procurements: read your tenant's own procurement history
  • submit_lead: submit a consented consumer lead to a listing that accepts them
  • Every successful action returns a signed receipt bound to the decision, price, and outcome
Every action is receipted

Nothing here is unverifiable.

Every governed action GateCore AI takes, whether a procurement decision, a denial, or a lead submission, produces one signed record bound to the decision, the contract it was made under, and the outcome. Either party can check it later, offline, with no cooperation from us.