Atlas entry
apished. com
52 capabilities over MCP. First atlas observation.
52 tools. 51 only compute. 1 has no reading.◇
AI reading, beta. side-effects v1 on claude-haiku-5.5, calibrated on MCP (golden-3). Only readings above a measured precision count. Counts are tools, not calls: no tool was called.
AI readings summary · beta
The service lists 52 tools, and 51 have AI readings.
color_contrast: Returns a luminance-based readability ratio for two hex colors, blending any transparency onto white first.
text_wordcount: Returns a word total for submitted text, splitting words on whitespace.
encode_encode: Converts plain text into rot13, base64, hex, URL, form or HTML-escaped ASCII output.
Written by code from the AI readings on this page: it groups them and says nothing they do not.
What an agent can do here
AI readings, beta · Readings on 51 of 52 MCP tools.
Moves money
0
No tool read this way.
Deletes or cancels records
0
No tool read this way.
Sends messages to people
0
No tool read this way.
Changes permissions
0
No tool read this way.
Runs code
0
No tool read this way.
Should ask a person first
0
No tool read this way.
No counted reading 1 tool No reading was counted, so any effect above is possible for it: pipe_run.
What changed
First atlas observation. Atlas history
Look first
AI reading, beta: AI adds items here; it never removes one.
No tool is read as one of the six effects. A zero is a count, not a clearance.
Surfaces
5 protocols checked
| ARD | Not found | No document retrieved |
|---|---|---|
| A2A | Not found | 0 skills |
| MCP | Valid | 2026-07-28 · 52 tools · resources not advertised · prompts not advertised |
| OpenAPI | Not detected | 0 operations |
| WebMCP | Not detected | 0 declarative form tools · experimental |
Exact states and meaning
- ARDabsent
Exact state: not found · No document retrieved
The supported discovery location returned no matching document.
Not found does not prove the service exposes no such interface elsewhere.
Not observed / not fetched
- A2Aabsent
Exact state: not found · 0 skills
The supported discovery location returned no matching document.
Not found does not prove the service exposes no such interface elsewhere.
Not observed / not fetched
- MCPobserved
Exact state: valid · Revision 2026-07-28 · 52 tools · resources not advertised · prompts not advertised
A usable protocol document was retrieved and validated.
Directly observed
- OpenAPIabsent
Exact state: not detected · 0 operations
No endpoint was established from the evidence and scope that InterfaceDelta inspected.
Not detected does not prove that no endpoint exists.
Not observed / not fetched
- WebMCPabsent
Exact state: not detected · 0 declarative form tools · experimental
No named declarative WebMCP form tools were observed in the origin root HTML.
Script-registered tools and other pages are not observed, so this does not mean the site has no WebMCP tools.
Not observed / not fetched
Capabilities
Showing 52 of 52.
| Tool and inputs | ◇ AI reading, beta · confidence | ||||||
|---|---|---|---|---|---|---|---|
| Read as none of the six 51 Not a clearance. | |||||||
| Returns a luminance-based readability ratio for two hex colors, blending any transparency onto white first.colorA*, colorB* | Computes only, changes nothing0.92 | ||||||
| |||||||
| Converts colors among hex, RGB, HSL and HSV formats, returning the same color in the requested format.from*, to*, value* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Converts an array of JSON objects into CSV text, using an explicitly ordered column list for the header row.columns*, delimiter, records* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Converts CSV text into rows of plain string cells, with an optional custom delimiter and no type inference.delimiter, text* | Computes only, changes nothing0.95 | ||||||
| |||||||
| Reports how many filled and blank cells each column has in CSV text that includes a header row.delimiter, text* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Converts pasted CSV text into JSON, either as objects keyed by header names or as raw row arrays, with all values as strings.delimiter, header, text* | Computes only, changes nothing0.92 | ||||||
| |||||||
| Checks whether supplied CSV text has consistent column counts, with each row matching the field count of the first row.delimiter, text* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Returns a date shifted by given year, month and day amounts, clamping to month-end when needed.date*, days, months, years | Computes only, changes nothing0.93 | ||||||
| |||||||
| Returns the completed years between a birth date and a chosen date, defaulting to today's UTC date.asOf, birthDate* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Returns the number of working days between two dates, skipping weekends by default and any listed holiday dates.from*, holidays, to*, weekdays | Computes only, changes nothing0.88 | ||||||
| |||||||
| Returns the day name and ISO 8601 number (1 for Monday through 7 for Sunday) of a given date.date* | Computes only, changes nothing0.84 | ||||||
| |||||||
| Returns the count of whole days separating two YYYY-MM-DD dates, negative when the second comes first.from*, to* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Verifies whether an integer year qualifies as a leap year using Gregorian calendar rules.year* | Computes only, changes nothing0.91 | ||||||
| |||||||
| Returns the present date and time, optionally formatted and localized to a chosen timezone.format, timezone | Computes only, changes nothing0.85 | ||||||
| |||||||
| Validates the check digit of a barcode number in EAN-8, UPC-A, EAN-13 or GTIN-14 format.value* | Computes only, changes nothing0.90 | ||||||
| |||||||
| value* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Converts encoded text such as base64, hex, rot13 or HTML entities back to its original form.format*, input* | Computes only, changes nothing0.92 | ||||||
| |||||||
| Converts plain text into rot13, base64, hex, URL, form or HTML-escaped ASCII output.format*, input* | Computes only, changes nothing0.94 | ||||||
| |||||||
| Converts input text, base64 or hex into a checksum via MD5, SHA-1, SHA-256, SHA-512 or CRC32, shown as lowercase hex.algo*, encoding, input* | Computes only, changes nothing0.88 | ||||||
| |||||||
| Returns a keyed hash (HMAC) of given text using md5, sha1, sha256 or sha512, as lowercase hex.algo*, encoding, input*, key* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Validates an IBAN by checking its country-specific length and mod-97 checksum, without parsing bank details.value* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Validates whether a given string is a correctly formed ISBN-10 or ISBN-13 by checking its checksum.value* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Checks a JSON document against a JSON Schema and reports one violation per call, if any.document*, schema* | Computes only, changes nothing0.91 | ||||||
| |||||||
| Validates a digit string with the Luhn mod-10 check, as used for card and IMEI numbers.value* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Checks whether an IP address falls inside a given CIDR network range, never matching across IPv4 and IPv6.address*, cidr* | Computes only, changes nothing0.95 | ||||||
| |||||||
| Returns the normalized network base, first-to-last address span, and size of a given CIDR range.cidr* | Computes only, changes nothing0.88 | ||||||
| |||||||
| Checks whether two IP address ranges in CIDR notation have any addresses in common.cidrA*, cidrB* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Validates whether a ten-digit Polish taxpayer number (NIP) passes its check-digit test, without changing any data.value* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Validates a Polish PESEL number's check digit and, if it passes, reports the embedded birth date and sex.value* | Computes only, changes nothing0.87 | ||||||
| |||||||
| count, max*, min* | Computes only, changes nothing0.88 | ||||||
| |||||||
| Returns up to a set number of pattern matches found in a text input, with named capture groups listed separately.input*, maxMatches, pattern* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Checks whether an input string matches a regular expression and reports the matched text and its capture groups.input*, pattern* | Computes only, changes nothing0.94 | ||||||
| |||||||
| Converts input text by substituting every regex match of a pattern with a replacement that can use capture groups.input*, pattern*, replacement* | Computes only, changes nothing0.88 | ||||||
| |||||||
| Returns the pieces of a text cut at each match of a regex, with an optional cap on how many pieces come back.input*, limit, pattern* | Computes only, changes nothing0.93 | ||||||
| |||||||
| value* | Computes only, changes nothing0.88 | ||||||
| |||||||
| Returns the decimal result of a postfix math expression, covering arithmetic, roots, trig, logarithms and bitwise operations.expr* | Computes only, changes nothing0.88 | ||||||
| |||||||
| Validates whether a text string has the structural layout of a SWIFT/BIC bank code, without checking the country code against ISO.value* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Returns the single rune located at a given zero-based position within a supplied string.index*, text* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Returns the count of non-overlapping matches of a given substring within a text, counting characters rather than bytes.substring*, text* | Computes only, changes nothing0.94 | ||||||
| |||||||
| Checks if a string is a palindrome, with optional case-folding and removal of non-alphanumeric characters.ignoreCase, ignoreNonAlnum, text* | Computes only, changes nothing0.89 | ||||||
| |||||||
| Converts a supplied string into its reverse, flipping characters by Unicode code point rather than by grapheme cluster.text* | Computes only, changes nothing0.90 | ||||||
| |||||||
| Converts a given string by reordering its characters or words alphabetically, with words rejoined by single spaces.by, text* | Computes only, changes nothing0.89 | ||||||
| |||||||
| Reports character, word and line counts, letter/digit/punctuation breakdowns, and word-length stats for a given text.text* | Computes only, changes nothing0.92 | ||||||
| |||||||
| Returns a word total for submitted text, splitting words on whitespace.text* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Returns the token count of a given text using an OpenAI tiktoken encoding, chosen by model or encoding name.encoding, model, text* | Computes only, changes nothing0.93 | ||||||
| |||||||
| Converts a decimal data-size value between bit, byte, SI and IEC units such as MB to MiB, with exact results.from*, to*, value* | Computes only, changes nothing0.95 | ||||||
| |||||||
| Converts a decimal temperature from one scale (C, F, or K) to another, accounting for their different zero points.from*, to*, value* | Computes only, changes nothing0.88 | ||||||
| |||||||
| Validates whether a supplied text string is a correctly formed absolute web address with a scheme and host, without contacting it.value* | Computes only, changes nothing0.91 | ||||||
| |||||||
| count | Computes only, changes nothing0.89 | ||||||
| |||||||
| Checks whether a text string is a valid UUID and states its version and variant.value* | Computes only, changes nothing0.92 | ||||||
| |||||||
| Validates the format of an EU VAT number against each country's pattern, without confirming it is actually registered.value* | Computes only, changes nothing0.90 | ||||||
| |||||||
| No counted reading 1 No reading was counted, so any effect is possible. | |||||||
| Runs a chain of existing API operations in order, passing one result field into the next step and stopping at the first failure.steps* | unknown | unknown | unknown | unknown | unknown | unknown | No reading |
| |||||||
Read as this effect No reading: unknown Not read as this effect◇ AI readings, beta. A zero is a count, not a clearance.
Not observed in this Passport: A2A skills, MCP resources, MCP prompts, OpenAPI operations.
The atlas shows each capability by its plain identifier, inputs and declared sign-in. Publisher descriptions, paths, links and source evidence are not published here.
The comparison with the previous observation is shown only to the account that recorded it.
Atlas history
1 observation
- 52 capabilities · MCP 2026-07-28 · MCP endpoint validFirst observation
Fingerprint and versions
- Fingerprint
25eaca3112d12e5235de0a0c605f346c09c83f8565961f97df6efcfa0a38f2cf- Passport schema
- 0.5.0, passport-semantic-v4
- Consistency
- MCP_PROMPTS_ADVERTISEMENT_LIST: not applicable · MCP_RESOURCES_ADVERTISEMENT_LIST: not applicable · MCP_TOOLS_ADVERTISEMENT_LIST: match · OPENAPI_MCP_EXPLICIT_MAPPING: not applicable
Each class compares an observation with the previous atlas observation. Runs of unchanged observations are grouped. Struck values are what the previous observation recorded; inserted values are what this one recorded.
Declared and observed
No tools declare hints.
A disagreement is not a finding about the service: either side can be wrong. How we compare declarations and readings.
About this entry
com.apished/apishedListedOfficial MCP Registry · first listed 17 Sep 2026 · last listed 2 Nov 2026
Passive observations of a public interface listed in the Official MCP Registry. An observation does not verify security, ownership or compliance, and InterfaceDelta assigns no scores or rankings. Methodology · Report an inaccuracy · Ask for removal
Identity and snapshot
- Target key
sha256:6bb564a1bd3e1c47cf12ad6ff1a44bc4e53538ad7a79a609df4be525678718fa- Locator SHA-256
260e37aae5e2bfa02d981011b736d796b0c803604c14ec75f662190fe6a9a76e- Snapshot generated
- 13 Nov 2026, 01:06 UTC
The entry is one exact observed target, not a real-world service identity, and implies no ownership. Endpoint paths are not published; the locator hash lets an operator confirm their own URL.

