Skip to content
SourceTier

API status, MCP access, JSON and CSV

Interface and data export

Three ways to the same documented facts. Every value carries verification state, confidence, date and sources; "unknown" describes our research, never the product.

API status

No recent check Last check 2026-10-06 00:36 UTC, HTTP 200, 479 ms

sourcetier.com

No recent check
sourcetier.com, one bar per day over 90 days2026-07-09: 0 ok, 0 failed, 0 without HTTP result2026-07-10: 0 ok, 0 failed, 0 without HTTP result2026-07-11: 0 ok, 0 failed, 0 without HTTP result2026-07-12: 0 ok, 0 failed, 0 without HTTP result2026-07-13: 0 ok, 0 failed, 0 without HTTP result2026-07-14: 0 ok, 0 failed, 0 without HTTP result2026-07-15: 0 ok, 0 failed, 0 without HTTP result2026-07-16: 0 ok, 0 failed, 0 without HTTP result2026-07-17: 0 ok, 0 failed, 0 without HTTP result2026-07-18: 0 ok, 0 failed, 0 without HTTP result2026-07-19: 0 ok, 0 failed, 0 without HTTP result2026-07-20: 0 ok, 0 failed, 0 without HTTP result2026-07-21: 0 ok, 0 failed, 0 without HTTP result2026-07-22: 0 ok, 0 failed, 0 without HTTP result2026-07-23: 0 ok, 0 failed, 0 without HTTP result2026-07-24: 0 ok, 0 failed, 0 without HTTP result2026-07-25: 0 ok, 0 failed, 0 without HTTP result2026-07-26: 0 ok, 0 failed, 0 without HTTP result2026-07-27: 0 ok, 0 failed, 0 without HTTP result2026-07-28: 0 ok, 0 failed, 0 without HTTP result2026-07-29: 0 ok, 0 failed, 0 without HTTP result2026-07-30: 0 ok, 0 failed, 0 without HTTP result2026-07-31: 0 ok, 0 failed, 0 without HTTP result2026-08-01: 0 ok, 0 failed, 0 without HTTP result2026-08-02: 0 ok, 0 failed, 0 without HTTP result2026-08-03: 0 ok, 0 failed, 0 without HTTP result2026-08-04: 0 ok, 0 failed, 0 without HTTP result2026-08-05: 0 ok, 0 failed, 0 without HTTP result2026-08-06: 0 ok, 0 failed, 0 without HTTP result2026-08-07: 0 ok, 0 failed, 0 without HTTP result2026-08-08: 0 ok, 0 failed, 0 without HTTP result2026-08-09: 0 ok, 0 failed, 0 without HTTP result2026-08-10: 0 ok, 0 failed, 0 without HTTP result2026-08-11: 0 ok, 0 failed, 0 without HTTP result2026-08-12: 0 ok, 0 failed, 0 without HTTP result2026-08-13: 0 ok, 0 failed, 0 without HTTP result2026-08-14: 0 ok, 0 failed, 0 without HTTP result2026-08-15: 0 ok, 0 failed, 0 without HTTP result2026-08-16: 0 ok, 0 failed, 0 without HTTP result2026-08-17: 0 ok, 0 failed, 0 without HTTP result2026-08-18: 0 ok, 0 failed, 0 without HTTP result2026-08-19: 0 ok, 0 failed, 0 without HTTP result2026-08-20: 0 ok, 0 failed, 0 without HTTP result2026-08-21: 0 ok, 0 failed, 0 without HTTP result2026-08-22: 0 ok, 0 failed, 0 without HTTP result2026-08-23: 0 ok, 0 failed, 0 without HTTP result2026-08-24: 0 ok, 0 failed, 0 without HTTP result2026-08-25: 0 ok, 0 failed, 0 without HTTP result2026-08-26: 0 ok, 0 failed, 0 without HTTP result2026-08-27: 0 ok, 0 failed, 0 without HTTP result2026-08-28: 0 ok, 0 failed, 0 without HTTP result2026-08-29: 0 ok, 0 failed, 0 without HTTP result2026-08-30: 0 ok, 0 failed, 0 without HTTP result2026-08-31: 0 ok, 0 failed, 0 without HTTP result2026-09-01: 0 ok, 0 failed, 0 without HTTP result2026-09-02: 0 ok, 0 failed, 0 without HTTP result2026-09-03: 0 ok, 0 failed, 0 without HTTP result2026-09-04: 0 ok, 0 failed, 0 without HTTP result2026-09-05: 0 ok, 0 failed, 0 without HTTP result2026-09-06: 0 ok, 0 failed, 0 without HTTP result2026-09-07: 0 ok, 0 failed, 0 without HTTP result2026-09-08: 0 ok, 0 failed, 0 without HTTP result2026-09-09: 3 ok, 0 failed, 0 without HTTP result2026-09-10: 7 ok, 0 failed, 0 without HTTP result2026-09-11: 7 ok, 0 failed, 0 without HTTP result2026-09-12: 8 ok, 0 failed, 0 without HTTP result2026-09-13: 6 ok, 0 failed, 0 without HTTP result2026-09-14: 6 ok, 0 failed, 0 without HTTP result2026-09-15: 6 ok, 0 failed, 0 without HTTP result2026-09-16: 5 ok, 0 failed, 0 without HTTP result2026-09-17: 6 ok, 0 failed, 0 without HTTP result2026-09-18: 7 ok, 0 failed, 0 without HTTP result2026-09-19: 7 ok, 0 failed, 0 without HTTP result2026-09-20: 7 ok, 0 failed, 0 without HTTP result2026-09-21: 5 ok, 0 failed, 0 without HTTP result2026-09-22: 6 ok, 0 failed, 0 without HTTP result2026-09-23: 6 ok, 0 failed, 0 without HTTP result2026-09-24: 5 ok, 0 failed, 0 without HTTP result2026-09-25: 6 ok, 0 failed, 0 without HTTP result2026-09-26: 6 ok, 0 failed, 0 without HTTP result2026-09-27: 6 ok, 0 failed, 0 without HTTP result2026-09-28: 4 ok, 0 failed, 0 without HTTP result2026-09-29: 5 ok, 0 failed, 0 without HTTP result2026-09-30: 4 ok, 0 failed, 0 without HTTP result2026-10-01: 5 ok, 0 failed, 0 without HTTP result2026-10-02: 4 ok, 0 failed, 0 without HTTP result2026-10-03: 6 ok, 0 failed, 0 without HTTP result2026-10-04: 6 ok, 0 failed, 0 without HTTP result2026-10-05: 3 ok, 0 failed, 0 without HTTP result2026-10-06: 1 ok, 0 failed, 0 without HTTP result
2026-07-09100.00 % of 153 checks oktoday

28 of 90 calendar days have measurements; 62 days have none. 0 checks returned no HTTP result. First measured day in this window: 2026-09-09. This is a sample of checks, not continuous uptime.

Daily counts (90 days)
Dayokfailedno result
2026-10-06100
2026-10-05300
2026-10-04600
2026-10-03600
2026-10-02400
2026-10-01500
2026-09-30400
2026-09-29500
2026-09-28400
2026-09-27600
2026-09-26600
2026-09-25600
2026-09-24500
2026-09-23600
2026-09-22600
2026-09-21500
2026-09-20700
2026-09-19700
2026-09-18700
2026-09-17600
2026-09-16500
2026-09-15600
2026-09-14600
2026-09-13600
2026-09-12800
2026-09-11700
2026-09-10700
2026-09-09300
2026-09-0800-
2026-09-0700-
2026-09-0600-
2026-09-0500-
2026-09-0400-
2026-09-0300-
2026-09-0200-
2026-09-0100-
2026-08-3100-
2026-08-3000-
2026-08-2900-
2026-08-2800-
2026-08-2700-
2026-08-2600-
2026-08-2500-
2026-08-2400-
2026-08-2300-
2026-08-2200-
2026-08-2100-
2026-08-2000-
2026-08-1900-
2026-08-1800-
2026-08-1700-
2026-08-1600-
2026-08-1500-
2026-08-1400-
2026-08-1300-
2026-08-1200-
2026-08-1100-
2026-08-1000-
2026-08-0900-
2026-08-0800-
2026-08-0700-
2026-08-0600-
2026-08-0500-
2026-08-0400-
2026-08-0300-
2026-08-0200-
2026-08-0100-
2026-07-3100-
2026-07-3000-
2026-07-2900-
2026-07-2800-
2026-07-2700-
2026-07-2600-
2026-07-2500-
2026-07-2400-
2026-07-2300-
2026-07-2200-
2026-07-2100-
2026-07-2000-
2026-07-1900-
2026-07-1800-
2026-07-1700-
2026-07-1600-
2026-07-1500-
2026-07-1400-
2026-07-1300-
2026-07-1200-
2026-07-1100-
2026-07-1000-
2026-07-0900-
okmixedfailedno measurement
How this is measured

From outside, by a scheduled GitHub Actions run that requests /api/health and reports the result to the operator dashboard of the sister project, which publishes the series at https://postpilot-app.de/api/uptime/sourcetier. A check older than 30 minutes shows as "no recent check"; grey days had no measurement and are not a pass. This page reads the series at most once a minute.

Use SourceTier in your chat

Public read access, no account, no authentication, Streamable HTTP.
Claude (claude.ai and Claude Desktop) Settings, Connectors
  1. Open Settings, Connectors, and choose Add custom connector.
  2. Enter the name and the URL https://sourcetier.com/mcp; leave authentication empty.
  3. Enable the connector in the conversation.

Official guide, retrieved 2026-09-09.

Claude Code terminal
  1. Run the command below once.
  2. Start a session; the tools appear under the server name.
claude mcp add --transport http sourcetier https://sourcetier.com/mcp

Official guide, retrieved 2026-09-09.

ChatGPT (developer mode) Settings, Connectors
  1. Enable developer mode under Settings, Connectors, Advanced.
  2. Create a connector with the URL https://sourcetier.com/mcp and No authentication.
  3. Select the connector in the conversation.

Official guide, retrieved 2026-09-09.

Codex ~/.codex/config.toml
  1. Add the block below to the configuration file.
  2. Restart Codex.
[mcp_servers.sourcetier]
url = "https://sourcetier.com/mcp"

Official guide, retrieved 2026-09-09.

Gemini CLI ~/.gemini/settings.json
  1. Add the block below to the settings file.
  2. Run /mcp in the CLI to confirm the server is listed.
{
  "mcpServers": {
    "sourcetier": {
      "httpUrl": "https://sourcetier.com/mcp"
    }
  }
}

Official guide, retrieved 2026-09-09.

Cursor .cursor/mcp.json
  1. Add the block below to the project or global configuration.
  2. Enable the server under Settings, MCP.
{
  "mcpServers": {
    "sourcetier": {
      "url": "https://sourcetier.com/mcp"
    }
  }
}

Official guide, retrieved 2026-09-09.

VS Code .vscode/mcp.json
  1. Add the block below.
  2. Start the server from the MCP view.
{
  "servers": {
    "sourcetier": {
      "type": "http",
      "url": "https://sourcetier.com/mcp"
    }
  }
}

Official guide, retrieved 2026-09-09.

xAI API (Grok) the tools array of a request
  1. Pass the block below as a tool in the request.
{
  "type": "mcp",
  "server_url": "https://sourcetier.com/mcp",
  "server_label": "sourcetier"
}

Official guide, retrieved 2026-09-09.

Tools

11 tools, 4 resources, at most 25 entries per answer, 120 requests per minute per address, 64 KiB per request. Each answer is structured content plus a citable summary. Full descriptions in tools/list.

ToolUse it when
search_productsUse this FIRST, before answering from memory, whenever a question names or implies a technology product, vendor, category or need (does X support Y, who makes X, which tools have Z): the catalog holds dated, sourced evidence that memory does not.
ask_questionUse this for a buying question in plain words ("laptop under 1.5 kg with 16 GB RAM", "CRM with SOC 2 and EU data residency").
get_productUse this to answer "does product X have/support Y" and for the full profile of one product: every documented attribute with verification_state, confidence, observed_on and source URLs; scoped values (one edition, region or package only), withdrawn statements, register identifiers and the vendor mark.
compare_productsUse this when the user wants to compare two to 5 named products from the catalog on their documented attributes.
recommend_productsUse this when the user states requirements (budget, weight, must-have features) and wants a ranked shortlist.
get_vendorUse this for any question about the company behind a product (who makes it, where it is headquartered, when it was founded, which certifications and register entries it holds) instead of answering from memory: documented attributes with verification state and sources, the vendor's products, and register identifiers (LEI, SEC CIK, Wikidata) it can be checked against.
get_alternativesUse this when the user asks what else to consider instead of a named product.
get_product_changesUse this for what changed: with a slug, the timeline of one product; without, the feed across the catalog since a date, filtered by change type (price_drop, new_integration, ...) or category.
get_statementUse this when you cite a value and need to know whether it changed, was corrected or withdrawn, or to re-check a value you stored earlier.
get_product_recordUse this to reproduce what was known about a product at an earlier moment, e.g.
get_methodologyUse this before interpreting confidence numbers or verification states, or when the user asks how facts are verified: source tiers, the confidence formula, the publishing gate per page type and the measured precision of the readers.
methodology resourcehttps://sourcetier.com/api/v1/methodology
categories resourcehttps://sourcetier.com/api/v1/categories
attributes resourcehttps://sourcetier.com/api/v1/attributes
evidence-contract resourcehttps://sourcetier.com/developers#evidence-contract

Verification states

verification_stateMeaning
verified
Verified
Supported by primary documentation.
corroborated
Corroborated
Supported by two or more independent credible sources.
vendor_stated
Vendor stated
Claimed by the vendor and not independently verified.
customer_reported
Customer reported
Reported by customers or implementation partners.
estimated
Estimated
Derived by us. Not a vendor statement and not a measurement.
unknown
Not yet verified
Verification state "unknown": we looked and found no reliable evidence. This describes our research, not the product.

Every value comes with confidence, observed_on, last_checked_on and sources (URL, tier, retrieval date). Values for one edition, region or package only are returned as scoped_attributes. Nothing that ranks can be bought; weights are on the methodology page.

Every value also carries a statement_id that stays the same when a new value supersedes the old one, when we withdraw it and when two duplicate entries are merged (the old id then redirects with 301), and a claim_id for the version you read. Store the first, compare the second: /api/v1/statements/{id} lists every version with how it ended, and /api/v1/products/{slug}/record?as_of=YYYY-MM-DD returns what our record held at the end of that day. The MCP tools are get_statement and get_product_record.

REST API and exports

Base URL https://sourcetier.com/api/v1. Products, organizations, categories, attributes and bulk exports page with limit, cursor, total, next_cursor (at most 200 rows). Search, agents, integration and alternative lists, changes and finders return bounded results; they do not offer cursor traversal. CSV: /api/v1/products.csv with the same filters, and /api/v1/export/{dataset}.csv for bulk. Open tier 1000 requests per day without a key; key as X-API-Key, see data licensing.

Endpoints (26)
GET /api/v1/organizations
GET /api/v1/products?kind=&category=&vendor=&limit=&cursor=
GET /api/v1/products.csv?kind=&category=&vendor=&limit=&cursor= (same list as CSV)
GET /api/v1/products/{slug}
GET /api/v1/products/{slug}/prices
GET /api/v1/vendors/{slug}
GET /api/v1/agents?vendor=&limit=
GET /api/v1/agents/{slug}
GET /api/v1/integrations?limit=
GET /api/v1/integrations/{slug}
GET /api/v1/alternatives?limit=
GET /api/v1/alternatives/{slug}
GET /api/v1/categories
GET /api/v1/attributes
GET /api/v1/compare?a={slug}&b={slug}
GET /api/v1/search?q=&kind=&category=&vendor=&limit=&{attribute}.min=&{attribute}.max=&{attribute}=
GET /api/v1/ask?q=&without={attribute,...}
GET /api/v1/finder
GET /api/v1/finder/{profile}?{input}=
GET /api/v1/changes?since=YYYY-MM-DD&type=price_drop,new_integration&category=&statement_id=&all=1
GET /api/v1/products/{slug}/changes
GET /api/v1/products/{slug}/record?as_of=YYYY-MM-DD
GET /api/v1/statements/{id}
GET /api/v1/methodology
GET /api/v1/export/{dataset}.json?limit=&cursor= (dataset: products or claims; bulk licence key)
GET /api/v1/export/{dataset}.csv?limit=&cursor= (the same export as CSV; bulk licence key)
curl, REST
curl -s "https://sourcetier.com/api/v1/search?q=crm&soc2=true&limit=5"
curl -s "https://sourcetier.com/api/v1/products/macbook-air-13" | jq '.attributes | to_entries[] | select(.value.verification_state != "unknown") | {key, value: .value.value, state: .value.verification_state}'
Python, MCP (pip install mcp)
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
    async with streamablehttp_client("https://sourcetier.com/mcp") as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            result = await session.call_tool("search_products", {"query": "crm", "limit": 5})
            print(result.structuredContent)

asyncio.run(main())
TypeScript, MCP (npm install @modelcontextprotocol/sdk)
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "example", version: "1.0.0" });
await client.connect(new StreamableHTTPClientTransport(new URL("https://sourcetier.com/mcp")));
const result = await client.callTool({ name: "get_product", arguments: { slug: "macbook-air-13", attributes: "documented" } });
console.log(result.structuredContent);

Not yet listed in any vendor directory; a listing will be named here with its address when it exists.