Overview
Encoding reads the `text` as UTF-8 bytes and processes them in groups of four. Each group is treated as an unsigned 32-bit number and written as five base-85 digits, using the characters `!` (33) to `u` (117). A full group of four zero bytes is shortened to the single character `z`. A final group with fewer than four bytes is padded with zeros, and only n+1 characters are kept for n input bytes, so no padding appears in the output.
`format` controls the delimiters. `standard` returns the bare digits; `btoa` wraps them in `<~` and `~>`. On decode with `format=btoa`, input that does not start with `<~` and end with `~>` is rejected with a 400. Whitespace inside an encoded string is ignored, characters outside the `!` to `u` range return an error naming the position, and a final group of a single character is rejected because it cannot hold a byte. The decoded bytes are read back as UTF-8.
`original_length` and `encoded_length` are character counts of the input and output strings. `compression_ratio` is the encoded length divided by the original length, as a percentage with two decimals; for ASCII input it sits near 125%, plus 4 characters when `btoa` delimiters are added. Because it counts characters rather than bytes, non-ASCII input shows a higher ratio. On the Free plan the `format` parameter is ignored, so output is always `standard`, and `format` and `compression_ratio` are returned as null on encode.
Live Test ASCII85 Encoding Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as ASCII85EncodingSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "ASCII85EncodingSkill",
"arguments": {
"text": "Hello World"
}
}You do not name the tool yourself; the model picks it. Asking about Hello World in the terms this skill covers is enough for it to reach for ASCII85EncodingSkill on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
textRequired | string | Text to encode |
actionOptional | string | Action to performencodedecodedefault encode |
formatOptionalPremium | string | Output formatstandardbtoadefault standard |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"original_text": "Hello World",
"encoded": "87cURD]i,\"Ebo7",
"format": "standard",
"original_length": 11,
"encoded_length": 14,
"compression_ratio": "127.27%"
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
original_text | string | Hello World | The original input text before encoding |
encoded | string | 87cURD]i,"Ebo7 | The ASCII85 text that was decoded |
formatPremium | string | standard | The ASCII85 variant used, standard or btoa |
original_length | number | 11 | The character count of the original text |
encoded_length | number | 14 | The character count of the ASCII85 input |
compression_ratioPremium | string | 127.27% | The size ratio of encoded to original text |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 1 credit each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Data Encoding
- Encode binary data for text-based transmission with better compression than Base64
- PDF Processing
- Handle ASCII85-encoded data in PDF files and PostScript documents
- Data Serialization
- Serialize binary data for storage in text-based formats like JSON or XML
- Compression
- Achieve better compression ratios for binary data in text-only protocols
Other ways to use ASCII85 Encoding Skill
Set up ASCII85 Encoding Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Data Conversion: