Toy Box MCP server

Use Toy Box tools from AI assistants and editors that support the Model Context Protocol (MCP). Add the server URL below to your client; no sign-up or API key is needed.

Use of the server is subject to the Terms of Service and the Privacy Policy.

Server

  • URL: https://mcp.toy-box.dev/mcp
  • Transport: Streamable HTTP (stateless)
  • Authentication: None
  • Language: English (tool names, descriptions and errors)

Connect

Claude

Works in Claude on the web, desktop and mobile apps.

  1. Open Customize > Connectors.
  2. Click Add custom connector.
  3. Enter the name Toy Box and the URL https://mcp.toy-box.dev/mcp.
  4. If asked about authentication, choose No sign-in. Then click Add.

On the Free plan you can add one custom connector. To use it in a chat, click + > Connectors and turn Toy Box on. Menu names may change; see the official guide.

Claude Code

claude mcp add --transport http toy-box https://mcp.toy-box.dev/mcp

ChatGPT

ChatGPT connects to custom MCP servers in developer mode. Availability depends on your plan.

  1. Turn on developer mode (in recent versions: Settings > Apps > Advanced settings).
  2. Create an app with the MCP server URL https://mcp.toy-box.dev/mcp.
  3. Choose No authentication, save, and select the app in a new chat.

OpenAI moves these settings from time to time; see the official guide.

VS Code

Add this to .vscode/mcp.json:

{
  "servers": {
    "toy-box": { "type": "http", "url": "https://mcp.toy-box.dev/mcp" }
  }
}

Cursor

Add this to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "toy-box": { "url": "https://mcp.toy-box.dev/mcp" }
  }
}

Other clients

Any client that supports the Streamable HTTP transport can use the URL directly. For clients that only support local (stdio) servers, use a bridge such as mcp-remote:

npx -y mcp-remote https://mcp.toy-box.dev/mcp

Tools

This list is generated from the same definitions that serve the Web UI and REST API. Every tool runs on our server when called over MCP.

convert_color

Converts a CSS colour into HEX, RGB, HSL, HWB, OKLCH, OKLab, Lab, LCH and CMYK, and returns the nearest CSS colour name and the WCAG contrast ratio with white and black text. Colours outside sRGB are clipped into it.

Use Color Picker in your browser
Parameters
NameTypeDefaultDescription
color · requiredstring—A CSS colour: #hex (3, 4, 6 or 8 digits), a named colour such as teal, or rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch() in comma or space syntax. (1–100 chars)

Example calls

hex

{
  "name": "convert_color",
  "arguments": {
    "color": "#00838F"
  }
}

space syntax with alpha

{
  "name": "convert_color",
  "arguments": {
    "color": "rgb(255 0 0 / 50%)"
  }
}

oklch outside sRGB

{
  "name": "convert_color",
  "arguments": {
    "color": "oklch(70% 0.4 150)"
  }
}

get_color_harmonies

Returns colours that go with a CSS colour: complementary, split complementary, analogous, triadic and tetradic colours (hue turned on the HSL colour wheel, saturation and lightness kept) and a scale of lighter and darker shades.

Use Color Picker in your browser
Parameters
NameTypeDefaultDescription
color · requiredstring—A CSS colour: #hex (3, 4, 6 or 8 digits), a named colour such as teal, or rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch() in comma or space syntax. (1–100 chars)

Example calls

teal

{
  "name": "get_color_harmonies",
  "arguments": {
    "color": "#1B6F8C"
  }
}

calculate_date_difference

Counts the days between two dates and breaks them down into weeks, years/months/days, days per weekday, weekends, public holidays (200+ countries) and business days after excluding weekly days off, holidays and given closed days.

Use Date Calculator in your browser
Parameters
NameTypeDefaultDescription
start · requiredstring—Start date (YYYY-MM-DD).
end · requiredstring—End date (YYYY-MM-DD). It may be before the start; the dates are swapped.
count"exclusive" | "end" | "inclusive""end"Which dates are counted. `end`: the days after the start up to and including the end (2026-01-01 to 2026-01-05 is 4 days). `inclusive`: both dates too (5 days). `exclusive`: only the days strictly between them (3 days). Every breakdown covers the counted days.
weekendinteger[][6,7]Weekly days off as ISO weekdays (1 = Monday ... 7 = Sunday). Defaults to Saturday and Sunday. (≤ 7 items)
holidaysobject—Public holidays to count as days off. Holidays are computed from the date-holidays rules and may differ from official announcements, especially for lunar and Islamic dates. At most 100 calendar years; Islamic-calendar holidays only for 1970–2076 and Hebrew-calendar ones for 1969–2099.
closedstring[][]Other days off, e.g. company holidays, one ISO date each. Duplicates are ignored. (≤ 3660 items)
languagestring"en"ISO 639-1 language for holiday names. Falls back to the country's own language.

Example calls

days between two dates

{
  "name": "calculate_date_difference",
  "arguments": {
    "start": "2026-01-01",
    "end": "2026-01-05"
  }
}

business days in Japan with a company holiday

{
  "name": "calculate_date_difference",
  "arguments": {
    "start": "2026-04-27",
    "end": "2026-05-08",
    "count": "inclusive",
    "holidays": {
      "country": "JP"
    },
    "closed": [
      "2026-04-30",
      "2026-05-01"
    ]
  }
}

lookup_dns_records

Looks up a domain's DNS records (A, AAAA, MX, TXT and more) with DNSSEC validation through Cloudflare's public resolver 1.1.1.1. An IP address is looked up as PTR (reverse DNS).

Use DNS Checker in your browser
Parameters
NameTypeDefaultDescription
domain · requiredstring—Domain name (example.com), URL (the host is used) or IP address. Internationalized names are converted to punycode. (≤ 2048 chars)
types"A" | "AAAA" | "CNAME" | "MX" | "TXT" | "NS" | "SOA" | "CAA" | "SRV" | "PTR" | "HTTPS" | "SVCB" | "DS" | "DNSKEY" | "TLSA"[]["A","AAAA","CNAME","MX","TXT","NS","SOA","CAA"]Record types to look up. Ignored for an IP address, which is looked up as PTR. (1–15 items)

Example calls

default record types

{
  "name": "lookup_dns_records",
  "arguments": {
    "domain": "example.com"
  }
}

chosen record types

{
  "name": "lookup_dns_records",
  "arguments": {
    "domain": "example.com",
    "types": [
      "MX",
      "TXT"
    ]
  }
}

reverse lookup of an IP address

{
  "name": "lookup_dns_records",
  "arguments": {
    "domain": "1.1.1.1"
  }
}

check_ogp

Fetches a web page and checks its Open Graph and X (Twitter) card tags: required and recommended tags, the preview image (reachable, format, size) and common mistakes.

Use OGP Checker in your browser
Parameters
NameTypeDefaultDescription
url · requiredstring—Public http(s) URL of the page to check. (≤ 2048 chars)

Example calls

check a page

{
  "name": "check_ogp",
  "arguments": {
    "url": "https://example.com/"
  }
}

test_regex

Tests a JavaScript (ECMAScript) regular expression against one or more texts and returns every match with its position and capture groups. With the g flag (the default) all matches are returned, without it only the first, as String.prototype.matchAll and RegExp.prototype.exec do. Each text can state whether it should match, to check a pattern against positive and negative examples. A pattern that runs too long (catastrophic backtracking, e.g. (a+)+ on a long non-matching text) is stopped and the request fails, so avoid nested repetition.

Use Regex Tester in your browser
Parameters
NameTypeDefaultDescription
pattern · requiredstring—The pattern without slashes, e.g. `(\d{4})-(\d{2})`. Backslashes are literal. (≤ 10000 chars)
flagsstring"g"JavaScript flags: g (all matches), i (ignore case), m (^ and $ match at line breaks), s (. matches line breaks), u or v (Unicode), y (sticky), d (indices; always on internally).
texts · requiredobject[]—Texts to test, each checked separately. (1–20 items)

Example calls

dates with named groups

{
  "name": "test_regex",
  "arguments": {
    "pattern": "(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})",
    "texts": [
      {
        "text": "Released 2026-10-28, patched 2026-11-02.",
        "expect": "match"
      },
      {
        "text": "No date here",
        "expect": "no-match"
      }
    ]
  }
}

first match only without g, case-insensitive and multiline

{
  "name": "test_regex",
  "arguments": {
    "pattern": "^error: (.+)$",
    "flags": "im",
    "texts": [
      {
        "text": "ok\nERROR: disk full\nerror: retry"
      }
    ]
  }
}

parse_url

Parses a URL as browsers do (WHATWG URL Standard) and returns its scheme (flagging unknown schemes and likely typos), user info, host (with registrable domain and subdomain), port, path, decoded query parameters (flagging known tracking parameters) and fragment. For mailto: URLs it also returns recipients, subject and body per RFC 6068.

Use URL Parser in your browser
Parameters
NameTypeDefaultDescription
url · requiredstring—Absolute URL, parsed as browsers do (WHATWG URL Standard). (≤ 65536 chars)

Example calls

shop URL with tracking parameters

{
  "name": "parse_url",
  "arguments": {
    "url": "https://Shop.Example.co.jp:443/products/winter-coat?color=navy&q=%E5%86%AC+%E3%82%B3%E3%83%BC%E3%83%88&utm_source=newsletter&fbclid=IwAR0xYz9#reviews"
  }
}

internationalized domain with credentials

{
  "name": "parse_url",
  "arguments": {
    "url": "http://admin:hunter2@例え.テスト:8080/資料/../最新版.pdf"
  }
}

mailto URL with recipients and header fields

{
  "name": "parse_url",
  "arguments": {
    "url": "mailto:info@example.com?cc=sales@example.com&subject=Hello%20world&body=1+1%3D2"
  }
}

edit_url

Removes, replaces or adds query parameters of a URL and optionally drops its fragment, e.g. to strip tracking parameters. Steps run in order: keepParams, removeParams, removeTracking, setParams, appendParams, removeFragment. Untouched parameters keep their original spelling. For mailto: URLs the parameters are header fields (cc, subject, body, ...) and are percent-encoded per RFC 6068.

Use URL Parser in your browser
Parameters
NameTypeDefaultDescription
url · requiredstring—Absolute URL, parsed as browsers do (WHATWG URL Standard). (≤ 65536 chars)
keepParamsstring[]—If given, remove every parameter whose name is not listed. (≤ 1000 items)
removeParamsstring[][]Remove parameters with these names. (≤ 1000 items)
removeTrackingbooleanfalseRemove known tracking parameters (utm_*, gclid, fbclid, msclkid, ...).
setParamsobject[][]Set each name to a value: replaces the first parameter with that name and removes the others, or appends it. (≤ 1000 items)
appendParamsobject[][]Append these parameters at the end. (≤ 1000 items)
removeFragmentbooleanfalseRemove the #fragment.

Example calls

strip tracking parameters

{
  "name": "edit_url",
  "arguments": {
    "url": "https://example.com/item?id=42&utm_source=newsletter&utm_medium=email&fbclid=IwAR0xYz9#specs",
    "removeTracking": true
  }
}

keep one parameter, set another and drop the fragment

{
  "name": "edit_url",
  "arguments": {
    "url": "https://example.com/search?q=a~b&page=2&sort=new#top",
    "keepParams": [
      "q",
      "page"
    ],
    "setParams": [
      {
        "name": "page",
        "value": "3"
      }
    ],
    "appendParams": [
      {
        "name": "lang",
        "value": "ja jp"
      }
    ],
    "removeFragment": true
  }
}

generate_uuid

Generates one or more random UUIDs (version 4 or time-ordered version 7).

Use UUID Generator in your browser
Parameters
NameTypeDefaultDescription
version"v4" | "v7""v4"UUID version.
countinteger1How many UUIDs to generate. (1–100)

Example calls

single v4

{
  "name": "generate_uuid",
  "arguments": {}
}

five v7

{
  "name": "generate_uuid",
  "arguments": {
    "version": "v7",
    "count": 5
  }
}

Privacy and usage

  • Tool inputs and outputs are used only to run the tool. They are not included in usage statistics, which record items such as the tool, the result status and how long it took. For how logs and other data are handled, see the privacy policy.
  • Results are returned as structured content, with the same JSON in a text block for clients that do not read structured content.
  • Tools keep backward compatibility. A tool that will be removed says deprecated at the start of its description.
  • There is no sign-in. Please avoid heavy automated traffic; sources that harm the service may be blocked.

Support

For questions, bug reports or requests, use the support page.