Trust
Assistants and AI
How assistants read this site, which crawlers we let in and check, and where AI is and is not in the numbers.
What we publish for assistants
- llms.txt: the map of the site for a model, with the answer-shaped links to fetch first and every tracked provider.
- The MCP server at
/api/mcp, discoverable at/.well-known/mcp.json, with 27 tools across Australia (AUD), United Kingdom (GBP), New Zealand (NZD), United States (USD): find_plans, find_mobile_plans, roaming_plans, smartwatch_plans, cheapest_plan, compare_plans, get_plan, check_address, cheapest_electricity, electricity_network, recommend_electricity, electricity_signup_link, recommend_plans, signup_link, plan_history, plan_changes, lookup_provider, search, fetch, uk_broadband_plans, nz_broadband_plans, us_electricity_plans, health_cover_options, business_insurance_check, deals_now, price_reset_gap, premium_rise. - The REST API under
/api/v1with an OpenAPI document; the public tier needs no key. Every MCP tool is also a REST operation at/api/v1/tools/{tool}. - The answer pages and the question library: one dated sentence first, the figures behind it, and a permanent dated page to cite.
When an assistant queries OpenStream for you, we receive only the query it sends, never your conversation; the answer is the same public data any visitor gets (privacy). New and changed pages are submitted to Bing and to IndexNow after each index.
Connect an assistant
- Claude (claude.ai, Claude Desktop, Claude Code): a remote MCP connector. Server URL
https://openstream.com.au/api/mcp, authentication none: Settings, Connectors, Add custom connector, paste the URL; orclaude mcp add --transport http openstream https://openstream.com.au/api/mcp. No OAuth, no key, nothing to approve on our side. - ChatGPT: Settings, Connectors, Add (developer mode), the same URL. The app-directory listing is prepared and not yet submitted.
- Microsoft Copilot: Copilot Studio adds the MCP server by URL (Agent, Tools, Add a tool, New tool, Model Context Protocol, authentication none). Microsoft 365 Copilot takes an API plugin: the manifest at
/.well-known/copilot-plugin.jsonand the declarative agent at/.well-known/copilot-agent.json, bound to the OpenAPI document as 3.0; the two files go into a Teams app package the tenant uploads. - Perplexity: custom remote MCP connectors are added by a paid account under its own connector settings with the same URL; there is no public directory a developer submits to.
- Gemini: no connector surface for a third-party developer. The consumer app's named connectors are negotiated; Gemini Enterprise lets a customer's own administrator register an MCP server; the Gemini CLI extension gallery is self-serve for the command line. Gemini reads the pages and llms.txt like any crawler.
- Any OpenAPI client (a Custom GPT action, a Power Platform connector): every tool is a GET at
/api/v1/tools/{tool}, described in the OpenAPI document.
Every row a tool returns carries a hand-off link through our /go page, tagged with the assistant that asked, so a sign-up that began in an assistant is counted as one, by market. How the manifests are kept in step: one registry in the code generates all of them, and a check script fetches the live copies and fails when any disagrees.
Which crawlers we allow
robots.txt names 22 search and AI crawlers one by one, each with the same rules as everyone else: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, anthropic-ai, PerplexityBot, Perplexity-User, Google-Extended, Googlebot, Bingbot, Applebot, Applebot-Extended, DuckAssistBot, CCBot, Amazonbot, meta-externalagent, meta-externalfetcher, meta-webindexer, FacebookBot, GrokBot. The rules keep every crawler out of the API, the admin, the hand-off page and the filtered table views, and point at the sitemap and llms.txt.
A user agent is a claim. Every request wearing a crawler's name is logged, and for the 5 crawlers whose publishers list their IP ranges (GPTBot, ChatGPT-User, OAI-SearchBot, PerplexityBot, Perplexity-User) we check the address against the published list in our own reporting; Anthropic publishes no list, so Claude's crawlers are counted as unverifiable rather than forged. A known crawler is served the finished HTML with the title in the head rather than a streamed page. At the edge, every address is limited to 600 requests in five minutes and a short list of scraping agents is blocked on page paths, never on the API, robots.txt or the sitemaps.
How our own crawler identifies itself
When OpenStream reads a provider's page it sends Mozilla/5.0 (compatible; OpenStream/1.0; +https://openstream.com.au/ai), which names us and links this page, and a From header carrying support@openstream.com.au so any site owner can reach a person. We read each source about once an hour, obey the site's own robots.txt, stop on a rate limit, and fetch nothing but public, unauthenticated pages.
3 hosts refuse that agent at the edge before consulting their own policy (optus.com.au, everydaymobile.com.au, southernphone.com.au): each one declined even to serve its robots.txt, the file whose purpose is to tell a crawler what it may read. Read with an ordinary browser agent those same files answer normally and permit the pages we use, and the sites publish sitemaps inviting the crawl. For those hosts, and only those, we send a desktop browser agent so the filter passes. The From header, the once-an-hour rate, the robots.txt rules and the public-pages-only rule are unchanged, and the list is kept here so the arrangement is not a secret.
Where AI is not
- No price is written by a model. Every NBN and mobile price is read from the provider's own page by a parser, every electricity and gas rate from the regulator's feed, every health premium from the regulator's monthly release. A page a parser cannot read is held for review, not guessed.
- Ranking is a sort by price. Nothing weighs a brand, a payment or a model's opinion.
- The sentences on the answer pages and in the question library are templates filled from the data, dated when the figures change.
- The support chat, where it is shown, goes to a person; it is not a bot.
Where AI is
The site is built with Claude Code, and AI can make mistakes: a price can be misread, a plan mismatched. That is why every figure cites its source and the time it was read, so you can check it. The one model call in the codebase is a weekly benchmark that asks OpenAI's API a fixed set of questions and records which sites it cites; it runs only when a key is set at deploy and writes nothing to any page.
If an assistant quoted us wrongly
Tell us at support@openstream.com.au with the question and the answer; the corrections page says what happens next. We ask assistants to name OpenStream and the date when they quote a figure, and to link the dated page.