---
title: "One listing as JSON"
method: GET
path: "/i/{slug}.json"
tags: ["directory"]
---

# One listing as JSON

`GET /i/{slug}.json`

## Request

- Base URL: `https://mcp.tc`
- URL: `https://mcp.tc/i/{slug}.json`
- Auth: none required

Everything the listing page shows, with one-click setup actions that use the server's own URL or package. Old slugs and aliases return the current listing: read `slug` from the answer.

## Path parameters

- `slug` string, required

## Query parameters

- `lang` 'en' | 'it' | 'fr' | 'de' | 'es'

## Response `200`

The listing.

- ListingJson: Every field is listed at https://mcp.tc/docs/api#listing-json.
  - `slug` string, required
  - `name` string, required
  - `vendor` string, nullable
  - `tagline` string
  - `description` string
  - `link` string, uri, required
  - `lang` 'en' | 'it' | 'fr' | 'de' | 'es': Language of the labels.
  - `text_lang` 'en' | 'it' | 'fr' | 'de' | 'es': Language of `tagline`, `description` and the tool summaries: `lang` when the listing has an up-to-date translation, else `en`. A tool whose description changed since the last translation keeps its English summary until it is translated again.
  - `category` string, nullable
  - `category_name` string, nullable
  - `kind` 'remote' | 'local', required
  - `transport` string, nullable
  - `auth` 'none' | 'optional' | 'oauth' | 'api_key' | 'unknown', required
  - `endpoint` string, nullable: The server's own URL (remote).
  - `install_command` string, nullable: The server's own install command (local).
  - `verified` boolean
  - `tools` object[]
  - `add` object[]: One-click setup actions per client; always the server's own URL or package.
  - `history` ListingHistory: The listing's History: what changed and when, as mcp.tc's own checks found it, and edits by the server's owner.
    - `url` string, uri, required: The History tab of the listing page (`link` + `#history`).
    - `feed` string, uri, required: Its Atom feed, https://mcp.tc/i/{slug}/history.xml.
    - `tracking` 'tools' | 'version' | 'listing', required: `tools`: mcp.tc reads the tool list every 3 hours (and read it in the last two days). `version`: no readable tool list, only new versions (a local npm or PyPI package, or the version a server reports). `listing`: mcp.tc reads neither its tools nor its version, so the History records only edits by the server's owner.
    - `tools_checked` string, date-time, nullable, required: When mcp.tc last read the whole tool list; null unless `tracking` is `tools`.
    - `last_changed` string, date-time, nullable, required: When the History last recorded a change (not counting the start of tracking).
  - `embeds` ListingEmbeds: Ways to show the listing on another site (https://mcp.tc/embed).
    - `badge` string, uri, required: The README badge (SVG).
    - `widget` string, uri, required: The website card script; keeps `?lang=`.
    - `iframe` string, uri, required: The card as an iframe page; keeps `?lang=`.
    - `markdown` string, uri, required: The listing as Markdown (English).
    - `snippets` object, required: Copy-ready code, the same as the Embed section of the listing page shows, in the language of `?lang=` (alt text and links), else English.
      - `markdown` string, required: The badge as a Markdown image link, for a README.
      - `html` string, required: The badge as an HTML image link.
      - `script` string, required: The `<script>` tag that renders the website card where it stands.
      - `placeholder` string, required: A `<div data-mcptc>` the script fills with the card, with a link inside for visitors without JavaScript (the script tag is still needed once per page).
      - `iframe` string, required: The `<iframe>` tag for the card.

## Other responses

- `304`: Not Modified: If-None-Match matched the ETag.
- `404`: Not listed.
- `410`: Removed.

---

[API](https://skmtc.dev/mcp/apis/mcp-tc-api.md) · [All operations](https://skmtc.dev/mcp/apis/mcp-tc-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mcp/apis/mcp-tc-api/revisions/5642f5c9f02e?raw)
