Local-first knowledge graph for token-efficient code review through MCP and CLI
APIShed is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Validates PESEL/NIP/REGON/IBAN/Luhn/ISBN/EAN/BIC/VAT; RPN, dates, hash, tokens, random, encode, time
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http apished-mcp https://apished.com/mcp
# 2 — ask your agent for something these tools do
# color_contrast, color_convert, csv_from_json and 49 more
APIShed costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http apished-mcp https://apished.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
52 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Computes the WCAG 2.1 contrast ratio between two hex colors. Alpha, if present, is composited over white first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| colorA | string | yes | — |
| colorB | string | yes | — |
Converts a color between hex, rgb, hsl, and hsv. value's shape depends on from/to: a string for hex, an object ({r,g,b,a?} etc.) otherwise.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | yes | hex, rgb, hsl, or hsv |
| to | string | yes | hex, rgb, hsl, or hsv |
| value | yes | a hex string, or an {r,g,b,a?}/{h,s,l,a?}/{h,s,v,a?} object per from |
Converts JSON records to CSV text. columns is the explicit, ordered header — JSON object key order can't be relied on to infer it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| columns | null/array | yes | — |
| records | null/array | yes | — |
| delimiter | string | no | — |
Parses CSV text into rows of string fields (no type guessing). Ragged rows are tolerated — use csv_validate to detect them.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| delimiter | string | no | a single character, default ',' |
Parses CSV text (header row required) and reports per-column non-empty/empty value counts across the data rows. No numeric aggregation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| delimiter | string | no | — |
Converts CSV text to JSON: header=true (default) returns one object per data row keyed by the header row; header=false returns raw rows. Every value is a string.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| delimiter | string | no | — |
| header | boolean | no | default true |
Reports whether CSV text is structurally well-formed: every row has the same field count as the first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| delimiter | string | no | — |
Adds years/months/days to date. years/months are applied together with end-of-month clamping — e.g. 2026-01-31 + 1 month = 2026-02-28, not an overflowed 2026-03-03. days is then applied as plain calendar-day arithmetic.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| date | string | yes | YYYY-MM-DD |
| years | integer | no | — |
| months | integer | no | — |
| days | integer | no | — |
Age in whole years as of asOf (optional, defaults to the current UTC date). A Feb-29 birthDate is treated as falling on March 1 in a non-leap asOf year.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| birthDate | string | yes | YYYY-MM-DD |
| asOf | string | no | YYYY-MM-DD, defaults to today |
Counts days in [from, to] (inclusive on both ends) whose weekday is in weekdays (default mon-fri) and which aren't in holidays.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | yes | YYYY-MM-DD |
| to | string | yes | YYYY-MM-DD |
| weekdays | null/array | no | sun/mon/tue/wed/thu/fri/sat, default mon-fri |
| holidays | null/array | no | YYYY-MM-DD dates to exclude |
Day of the week for date: both the weekday name and its ISO 8601 weekday number (1=Monday..7=Sunday).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| date | string | yes | YYYY-MM-DD |
Day difference between two YYYY-MM-DD dates: to minus from, in whole days. Negative if to is before from.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | yes | YYYY-MM-DD |
| to | string | yes | YYYY-MM-DD |
Checks whether year is a leap year in the Gregorian calendar.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| year | integer | yes | — |
Returns the actual current date/time — an LLM has a training cutoff and no live clock, so it can't know what time it actually is right now.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| format | string | no | iso8601 (default), unix, unixmilli, or rfc1123 |
| timezone | string | no | IANA timezone name, e.g. Europe/Warsaw; default UTC |
Validates an 8-digit (EAN-8), 12-digit (UPC-A), 13-digit (EAN-13), or 14-digit (GTIN-14) barcode checksum: alternating weights 1 3 applied right-to-left, check digit is (10 - sum mod 10) mod 10.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
Checks value is a single, bare RFC 5322 email address — syntax only, not a deliverability check. user@localhost is valid (no TLD required). "Name <email>" display syntax is rejected.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
Decodes rot13, base64, base64url, base32, hex, uuencode, urlcomponent, urlform, or html text back to the original. encoding in the result is "text" if the decoded bytes are valid UTF-8, or "base64" if they're binary.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| format | string | yes | rot13, base64, base64url, base32, hex, uuencode, urlcomponent, urlform, or html |
| input | string | yes | encoded text to decode |
Encodes plain UTF-8 text into rot13, base64, base64url, base32, hex, uuencode, urlcomponent (RFC 3986 percent-encoding, space -> %20), urlform (application/x-www-form-urlencoded, space -> +), or html (entity-escapes < > & ' "). Returns plain ASCII.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| format | string | yes | rot13, base64, base64url, base32, hex, uuencode, urlcomponent, urlform, or html |
| input | string | yes | plain UTF-8 text to encode |
Computes a hash digest of input (decoded per encoding: "text" default, "base64", or "hex") using algo: md5, sha1, sha256, sha512, or crc32. Returns the digest as lowercase hex.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| algo | string | yes | md5, sha1, sha256, sha512, or crc32 |
| input | string | yes | data to hash, encoded per encoding |
| encoding | string | no | text (default), base64, or hex |
Computes an HMAC of input (decoded per encoding) using algo: md5, sha1, sha256, or sha512 (crc32 isn't offered — it's a checksum, not a cryptographic primitive HMAC composes with). key is used as its raw UTF-8 bytes, not decoded per encoding. Returns the MAC as lowercase hex.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| algo | string | yes | md5, sha1, sha256, or sha512 |
| key | string | yes | secret key, used as raw UTF-8 bytes |
| input | string | yes | data to authenticate, encoded per encoding |
| encoding | string | no | text (default), base64, or hex |
Validates an IBAN's length for its issuing country (per the SWIFT IBAN registry) and its mod-97 checksum. Does not decompose the BBAN into a bank code/account number or resolve a BIC.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
Validates a 10- or 13-character ISBN. ISBN-10 uses weights 10..1 over 10 characters (last may be X, worth 10), sum mod 11 must be 0. ISBN-13 uses the same GTIN checksum as barcodes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
Validates document against schema (JSON Schema draft-07 or 2020-12). Reports one specific violation per call, not an aggregated list.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| schema | yes | a JSON Schema (draft-07 or 2020-12) | |
| document | yes | the JSON value to validate against schema |
Validates a numeric string against the Luhn (mod-10) checksum — payment card numbers, IMEI numbers, and similar identifiers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
Reports whether a CIDR block contains an address. Different address families (IPv4 vs IPv6) never match.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cidr | string | yes | — |
| address | string | yes | — |
Parses a CIDR block and reports its network address, address range, and address count. An address with host bits set (e.g. 10.14.32.17/21) is normalized to its network address in the result.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cidr | string | yes | an IPv4 or IPv6 CIDR block, e.g. 10.14.32.17/21 |
Reports whether two CIDR blocks share any address.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cidrA | string | yes | — |
| cidrB | string | yes | — |
Validates the checksum of a 10-digit Polish tax identification number (NIP). Checksum uses weights 6 5 7 2 3 4 5 6 7 over the first 9 digits; sum mod 11 must equal the 10th digit. A sum mod 11 of 10 is itself invalid.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | digits-only identifier to validate (no spaces or dashes) |
Validates the checksum of an 11-digit Polish national identification number (PESEL). Checksum uses weights 1 3 7 9 1 3 7 9 1 3 over the first 10 digits; control digit is (10 - sum mod 10) mod 10. On success also decodes the date of birth and sex embedded in the number; a checksum-valid number with an impossible calendar date (e.g. Feb 30) is still reported invalid.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | digits-only identifier to validate (no spaces or dashes) |
Runs a short ordered chain of existing apished operations in one call (same as POST /v1/pipe/run), passing one named field of each step's result into the next step's args. Stops at the first failing step.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| steps | null/array | yes | — |
Generates cryptographically random integers in [min, max] (inclusive), using crypto/rand — an actual random value, not a guess. count defaults to 1, max 1000.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| min | integer | yes | lower bound, inclusive |
| max | integer | yes | upper bound, inclusive; must be >= min |
| count | integer | no | how many numbers to generate, 1-1000, default 1 |
Extracts up to maxMatches non-overlapping regex matches from input, using Go's RE2-based regexp engine (linear-time, no backreferences/lookaround). Named groups (?P<name>...) are reported in namedGroups.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pattern | string | yes | an RE2 regex pattern |
| input | string | yes | — |
| maxMatches | integer | no | stop after this many matches; omitted/<=0 means no limit |
Tests input against pattern (Go's regexp package: RE2 syntax, not PCRE — no backreferences or lookaround; use inline flags like (?i) for case-insensitive matching). Returns the full match and captured groups.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pattern | string | yes | RE2 syntax |
| input | string | yes | — |
Replaces every regex match of pattern in input with replacement, which may reference capture groups as $1, $name, etc. (Go's Regexp.Expand syntax).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pattern | string | yes | — |
| input | string | yes | — |
| replacement | string | yes | — |
Splits input around regex matches of pattern, returning at most limit substrings (the last holds the unsplit remainder). limit<=0 means no limit.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pattern | string | yes | — |
| input | string | yes | — |
| limit | integer | no | — |
Validates the checksum of a 9- or 14-digit Polish business registry number (REGON). 9-digit: weights 8 9 2 3 4 5 6 7 over the first 8 digits, sum mod 11 (10 mapped to 0) must equal the 9th digit. 14-digit: the first 9 digits must themselves be a valid 9-digit REGON, and weights 2 4 8 5 0 9 7 3 6 1 2 4 8 over the first 13 digits (sum mod 11, 10 mapped to 0) must equal the 14th digit.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | digits-only identifier to validate (no spaces or dashes) |
Evaluates a Reverse Polish Notation (postfix) expression: whitespace-separated tokens, each a number or an operator/function that pops its operands off a stack and pushes the result. Supports arithmetic, exponentiation/modulo, roots, trigonometry, logarithms, rounding, bitwise ops, and constants (pi, e, phi). Always returns the decimal result — for hex/bin/oct rendering, convert the returned numbe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expr | string | yes | space-separated RPN expression, e.g. "3 4 + 2 *" |
Structural format validation only for a SWIFT/BIC code: 8 or 11 characters (4 letters bank code + 2 letters country code + 2 alphanumeric location code + optional 3 alphanumeric branch code). The country code is not cross-checked against ISO 3166-1.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
Returns the 0-indexed character (rune) at index in text.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| index | integer | yes | 0-indexed |
Counts non-overlapping occurrences of substring in text (rune-safe, not byte-based).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| substring | string | yes | must be non-empty |
Checks whether text reads the same forwards and backwards. ignoreCase/ignoreNonAlnum default false (strict, literal comparison); set both true for phrase-style palindromes like "A man, a plan, a canal: Panama".
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| ignoreCase | boolean | no | — |
| ignoreNonAlnum | boolean | no | — |
Reverses text by Unicode code point (rune), not grapheme cluster.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
Sorts text's characters or words alphabetically. by: "chars" (default, sorts runes, no separator) or "words" (splits on whitespace, rejoins with a single space).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| by | string | no | chars (default) or words |
Descriptive statistics for text: rune/byte/word/line counts, a unique-rune count, a letters/digits/spaces/punctuation/other breakdown, an exact per-character frequency table, and word-length min/max/average plus the actual shortest/longest word (ties resolve to the first occurrence).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
Counts whitespace-delimited words in text.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
Counts tokens under an OpenAI-compatible (tiktoken) encoding. Provide exactly one of model (e.g. "gpt-4o") or encoding ("o200k_base" or "cl100k_base"). No Claude/Anthropic tokenizer.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | — |
| model | string | no | e.g. gpt-4o; exactly one of model/encoding |
| encoding | string | no | o200k_base or cl100k_base; exactly one of model/encoding |
Converts a data-size value (decimal string) between bit, Kbit, Mbit, Gbit, Tbit (SI bits), B, KB, MB, GB, TB, PB (SI bytes), and KiB, MiB, GiB, TiB, PiB (IEC bytes). Always exact.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | decimal string |
| from | string | yes | — |
| to | string | yes | — |
Converts a temperature value (decimal string) between C, F, and K. Offset-aware, not a bare multiplier.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | decimal string |
| from | string | yes | C, F, or K |
| to | string | yes | C, F, or K |
Checks value is a well-formed absolute URL (has both a scheme and a host) — syntax only, not a reachability check.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
Generates count (default 1, max 1000) random version-4 UUIDs from crypto/rand-backed entropy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| count | integer | no | default 1, max 1000 |
Parses value as a UUID and reports its version/variant if well-formed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | digits-only identifier to validate (no spaces or dashes) |
Format validation only (no VIES lookup) for an EU VAT number: checks the 2-letter member-state prefix (EL for Greece, XI for Northern Ireland) against that country's digit/letter pattern. A format-valid result does not mean the number is actually registered.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| value | string | yes | identifier or value to check |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install APIShed or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.3.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish APIShed can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.