HasData ChatGPT

com.hasdatav1.0.0Updated Oct 5, 2026

Send a prompt to ChatGPT anonymously and get the answer with its web sources, as JSON.

VerifiedStreamable HTTPWeb executableAI & MLWeb Search & Scraping

Overview

AI-generated overview

Lets an assistant send a prompt to ChatGPT anonymously and get back the answer as markdown plus the web sources it consulted, as JSON.

What it does
A hosted MCP server exposing one tool, hasdata_chatgpt_chat_getChatgptAnswer, which takes a prompt (up to 8000 characters) and an optional IANA timezone. It returns the answer as markdown under conversation.answer, along with the conversation title, the model that answered, whether a web search was used, and a list of sources with title, url and domain. Each request is a fresh conversation with no memory of earlier ones.
When to use it
Useful when you want what ChatGPT publicly answers, together with its citations, without an OpenAI account or your own OpenAI billing. It fits research-style prompts where current web sources matter, and multilingual prompts, since the answer follows the language of the prompt.
Requirements
An MCP client and a HasData API key created at app.hasdata.com. Remote use is a streamable HTTP endpoint with an x-api-key header; clients that only speak stdio use the npm package @hasdata/chatgpt-mcp or the PyPI package hasdata-chatgpt-mcp (run with uvx), which read the HASDATA_API_KEY environment variable. Network access is required.
Before you install
The HasData API key (x-api-key header or HASDATA_API_KEY) is a secret and is the only credential involved. Each successful call spends 10 credits from the connected account; the free tier is 1,000 credits a month, and paid plans start at $59 a month. Failed validation is not billed. Prompts are sent to a third-party service, HasData, which is not affiliated with OpenAI. Sources may be uneven or absent when no web search runs, and a truncated answer can still report success.

Installation

In SourceWeft

  1. Open HasData ChatGPT in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "chatgpt": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=chatgpt"
    }
  }
}

README

ChatGPT MCP Server

A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client one ChatGPT tool. Send a prompt anonymously and get the answer back as markdown together with the web pages ChatGPT consulted, as structured JSON, with no OpenAI account and no API key of your own.

1,000 free credits every month, no card required, which is 100 prompts.

https://mcp.hasdata.com/mcp?apis=chatgpt

[Glama score] [tool contract] [MCP] [Tools] [npm] [PyPI] [License]

Contents

What you need

An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers 100 calls a month at the 10-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run and no OpenAI billing anywhere in the flow. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/chatgpt-mcp on npm and hasdata-chatgpt-mcp on PyPI, shown below.

Quick start

The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.

FieldValue
URLhttps://mcp.hasdata.com/mcp?apis=chatgpt
TransportHTTP, streamable
Auth headerx-api-key: HASDATA_API_KEY

Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.

Claude Code
bash
claude mcp add --transport http chatgpt "https://mcp.hasdata.com/mcp?apis=chatgpt" \  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop
json
{  "mcpServers": {    "chatgpt": {      "type": "http",      "url": "https://mcp.hasdata.com/mcp?apis=chatgpt",      "headers": { "x-api-key": "HASDATA_API_KEY" }    }  }}
Cursor
json
{  "mcpServers": {    "chatgpt": {      "type": "streamable-http",      "url": "https://mcp.hasdata.com/mcp?apis=chatgpt",      "headers": { "x-api-key": "HASDATA_API_KEY" }    }  }}
VS Code
json
{  "servers": {    "chatgpt": {      "type": "http",      "url": "https://mcp.hasdata.com/mcp?apis=chatgpt",      "headers": { "x-api-key": "HASDATA_API_KEY" }    }  }}

Example prompts

Prompts, not code. Paste one in and the agent picks the tool itself. Each is annotated with the calls it takes, because every successful call costs 10 credits.

Ask ChatGPT what the current state of the Artemis program is, and list the sources it used.

One call, 10 credits. The answer and the sources come back together.

Ask ChatGPT the same question in German.

One call, 10 credits. The answer follows the language of the prompt, so write the prompt in the language you want back.

Ask ChatGPT what happened in AI this week, with Berlin as the current date.

One call, 10 credits. timezone is what fixes the meaning of "this week".

Put the same question to ChatGPT three times and show where the answers differ.

Three calls, 30 credits. Each request is a fresh conversation, so there is no carry-over between them.

Tools

ToolWhat it returns
hasdata_chatgpt_chat_getChatgptAnswerThe answer as markdown, the web sources ChatGPT consulted with their domain and title, the conversation title it generated, the model that answered, and whether a web search was used. 10 credits a call

One tool, 10 credits per successful call.

Ask ChatGPT

hasdata_chatgpt_chat_getChatgptAnswer

ParameterTypeRequiredNotes
promptstringyesThe question or instruction, up to 8000 characters
timezonestringIANA zone name such as Europe/Berlin. It sets what ChatGPT treats as today

Everything lands under conversation. The answer is in answer as markdown, with title holding the name ChatGPT generated for the thread, model the model that answered, and usedWebSearch saying whether it went to the web at all. finishReason and complete tell a truncated answer from a finished one.

json
{  "conversation": {    "answer": "As of **October 5, 2026**, NASA's Artemis program has made substantial progress…",    "title": "Artemis developments cited",    "model": "gpt-5-6",    "usedWebSearch": true,    "finishReason": "stop",    "complete": true,    "sources": [      { "title": "Artemis News - NASA", "url": "https://www.nasa.gov/artemis-news/", "domain": "www.nasa.gov" }    ]  }}

Errors and failure paths

Your client almost never sees an HTTP error code from a tool call. The MCP layer answers 200 and puts the failure inside the result, with isError set to true and the reason as text.

sources is uneven, and partly absent. In a measured answer carrying twenty sources, every one had title, url and domain, eleven had publishedDate and only five had snippet. Read each field defensively rather than assuming the shape of the first element holds for the rest.

No web search means no sources. usedWebSearch is false when ChatGPT answers from the model alone, and sources is then empty or missing. A prompt about a stable fact often takes that path, so ask for current information when citations are the point.

Every call is a fresh conversation. There is no memory between requests, so a follow-up has to carry its own context in the prompt. conversationId identifies the thread that answered, not a thread you can continue.

A truncated answer still succeeds. Check complete and finishReason before treating answer as the whole response.

Each successful call spends credits from the connected account. A call that fails validation is not billed.

Pricing, free tier and limits

The ChatGPT tool costs 10 credits per successful call. Answer length does not change the price.

The free tier is 1,000 credits every month with no card, which is 100 prompts.

Paid plans start at $59 a month for 200,000 credits, which is 20,000 calls. The unit price falls on larger plans. Current numbers are on the plans page.

How it compares

OpenAI APIThis server
AccountYour own OpenAI account and billingOne HasData key
What you getThe model's answerThe answer plus the web sources behind it
Web searchA separate tool you wire upIncluded, with usedWebSearch reporting whether it ran
OutputYour own schemaParsed JSON with the sources already split out

The two are not substitutes. The OpenAI API is the right call when you need system prompts, tools, streaming and conversation state. This server is the right call when you want what ChatGPT publicly answers, with its citations, and no account of your own.

FAQ

Do I need an OpenAI account or an API key?

No. The server answers anonymously through HasData, and the only credential involved is your HasData key.

Which model answers?

Whichever ChatGPT serves anonymously at the time. The response reports it in model, so read it rather than assuming. A measured call returned gpt-5-6.

Can I continue a conversation?

No. Each request is a fresh thread with no memory of earlier ones. Carry the context in the prompt instead.

What language will the answer be in?

The language of the prompt. Ask in German and the answer comes back in German, or ask explicitly for a language in the prompt.

Is HasData affiliated with OpenAI?

No. HasData is an independent web data provider and is not affiliated with, endorsed by or sponsored by OpenAI. All trademarks belong to their owners.

Compliance and personal data

The server reads what ChatGPT answers publicly to an anonymous visitor. It does not log in, and it does not reach private conversations or account data.

HasData links

Product page and request builderChatGPT Scraper API
Endpoint documentationChatGPT Scraper API docs
Server documentationMCP server docs
Every tool in one serverHasData/hasdata-mcp
Client walkthroughsMCP clients and integrations
Plans and credit costsPlans and credit costs

Development

bash
npm installnpm test

The tests in test/ assert the tool contract, the part that can break without a commit here. They check that ?apis=chatgpt returns the one expected tool, that its name and required parameter have not changed, that it carries a description, and that a real call still puts the answer under conversation.

Contributing

The parameter table and the sample above were read from the live schema and from real calls rather than from documentation. A correction is welcome when a field or a failure mode has changed. Open an issue with the response you saw.

License

MIT

Source: README.md at commit c4d3f11

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v1.0.0LatestOct 5, 2026