Castov
Castov is a local, read-only MCP server that gives AI agents and IDEs deterministic developer utilities — all offline, with zero telemetry.
Convert Unix timestamps to UTC, ISO 8601, and localized human time (
castov_timestamp).Decode creation timestamps from UUIDv7, ULID, MongoDB ObjectId, or Snowflake IDs (
castov_detect_id).Calculate IPv4 CIDR subnet masks, wildcard, network/broadcast addresses, IP ranges, and host counts (
castov_cidr).Inspect TCP/UDP port numbers for service assignments and typical purposes (
castov_port).Parse 5-field cron expressions and compute next 5 runs in any IANA timezone (
castov_cron).Convert date/time across IANA timezones with UTC offset, abbreviation, and DST warnings (
castov_timezone).Generate CSPRNG secrets in Hex, Base64URL, API key, and sortable UUIDv7 formats (
castov_secret).Decode JWT headers and payloads offline, checking claims and expiration (
castov_jwt_decode).Compute SHA-256/384/512, SHA-1, MD5 digests and Base64/Base64URL encodings (
castov_hash).Scan code snippets, git diffs, or .env content for leaked credentials and private keys (
castov_scan_secrets).
Castov
⚡ What is Castov?
Modern AI agents and developer workflows suffer from two critical flaws:
Agent Hallucinations on Exact Operations: LLMs frequently blunder arithmetic for CIDR network masks, time zone offsets, epoch milliseconds, and cryptographic key derivations.
Data & Secret Leakage: Sending system logs, environment variables, or tokens to third-party cloud APIs presents unacceptable security hazards.
Castov solves both. It acts as an in-situ Execution Layer for developer environments. It provides deterministic, offline, and instant utilities delivered directly to your terminal, editor, Docker containers, and AI agents through the Model Context Protocol (MCP).
Everything runs 100% locally. No external analytics, no telemetry, and zero cloud roundtrips.
Related MCP server: Polymath MegaBlaster MCP
🤖 AI Agent Setup (Model Context Protocol - MCP)
Castov ships with a built-in, production-grade JSON-RPC 2.0 stdio MCP server supporting both Content-Length framed and ndjson stream protocols.
1. Claude Desktop
Add Castov to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"castov": {
"command": "npx",
"args": ["-y", "castov", "mcp"]
}
}
}2. Cursor IDE & Windsurf
Go to Settings → Features → MCP Servers → Add New MCP Server:
Name:
castovType:
commandCommand:
npx -y castov mcp
Alternatively, add to your project's .cursor/mcp.json:
{
"mcpServers": {
"castov": {
"command": "npx",
"args": ["-y", "castov", "mcp"]
}
}
}Native Tools Exposed to Agents (10 Tools — All 100% Local & Read-Only)
MCP Tool | Capability | Example Agent Prompt |
| Identifies listening services, protocol mappings, and inspects process collision | "Why is port 3000 busy and what service uses it?" |
| Calculates IPv4 subnet masks, wildcard, broadcast, and usable host count | "Calculate usable IP range and subnet mask for 10.240.0.0/22" |
| Decodes embedded creation timestamps from UUIDv7, ULID, ObjectId, Snowflake | "When was this MongoDB ObjectId or Snowflake ID created?" |
| Bidirectional epoch conversion to ISO 8601, UTC, and localized representations | "Convert 1713456789 to human UTC and ISO format" |
| Parses 5-field cron schedules into plain English and computes next 5 runs | "Explain cron |
| Converts timestamps across IANA time zones with DST transition warnings | "Convert |
| Generates CSPRNG 256-bit Hex, Base64URL, API keys, and sortable UUIDv7 secrets | "Generate a 256-bit cryptographic secret for |
| Decodes JWT headers, payloads, and | "Decode this JWT offline and check if it is expired" |
| Computes SHA-256/384/512, SHA-1, MD5 digests and Base64/Base64URL encodings | "Compute the SHA-256 hex digest and Base64URL encoding of this webhook payload" |
| Audits code snippets, git diffs, or | "Scan this git diff for any accidentally hardcoded AWS, Stripe, or OpenAI keys" |
📦 Multi-Channel Distribution
Castov is available everywhere modern engineering happens:
1. Terminal CLI (Node.js / npm)
Run instantly without installation:
npx castov --helpOr install globally:
npm install -g castov
castov --help2. Docker Container (Docker Hub)
Lightweight Alpine Linux container (node:20-alpine) running under a non-root node user:
# Run one-off command
docker run --rm castovdev/castov:latest uuid --v7
# Interactive diagnostic shell
docker run -it --rm castovdev/castov:latest3. Homebrew Tap (macOS & Linux)
Install natively via Brew:
brew tap castovdev/castov
brew install castov
# Verify installation
castov --version4. VS Code, Cursor & Windsurf Extensions
Install the official extension directly within your editor:
VS Code Marketplace: Search
Castovor installCastov.castov-vscodeOpen VSX Registry: Available for Cursor, Windsurf, VSCodium:
castov/castov-vscode
# Command line installation
code --install-extension Castov.castov-vscode5. GitHub Action (CI/CD Pipelines)
Automate security scans, secret leakage audits, and environment checks in your GitHub workflows:
- name: Run Castov Secret Scanner
uses: castovdev/castov-action@v1.0.0
with:
command: 'scan .'🛠️ CLI Quickstart & Core Commands
castov <command> [options]🔍 Process & Port Manager (EADDRINUSE Killer)
Inspect what process is occupying a port or kill it cleanly:
# Inspect service and protocol
castov port 3000
# Inspect active process PID and terminate it immediately
castov port 3000 --kill🔐 Cryptographic Secret Generator
Generate high-entropy keys for .env, NEXTAUTH_SECRET, JWT signing, and API authentication:
castov secret
castov secret --len 64🌐 Subnet & CIDR Calculator
Calculate network masks, wildcard masks, and usable host ranges with zero external lookups:
castov cidr 192.168.1.0/24
castov cidr 10.0.0.0/16🛡️ Local Secret Leak Scanner
Recursively scan local directories for committed or uncommitted API tokens (AWS, Stripe, OpenAI, GitHub, Private Keys):
castov scan .🚑 Crash Log & Terminal Error Healer
Pipe terminal crashes or paste error stack traces for instant, deterministic remediation:
castov fix "Error: listen EADDRINUSE: address already in use :::8080"
npm run build 2>&1 | castov fix🧠 AI Rules & System Prompt Generator
Bootstrap .cursorrules or CLAUDE.md with hardened engineering practices:
castov rules nextjs --write
castov rules fastapi
castov rules rust⏱️ Universal ID & Timestamp Detector
Extract metadata and epoch timestamps from any modern distributed identifier:
castov detect 018e3a2b-8a5c-7b00-9821-654321abcdef
castov detect 507f1f77bcf86cd799439011
castov ts 1713456789🌐 Complete Suite of 63 Developer Tools
In addition to the CLI and MCP Server, Castov provides 63 client-side web tools accessible at castov.com:
Category | Featured Tools |
Security & Privacy | Steganography Env Vault, Client-Side Secret Scanner, Zero-Knowledge Env Vault, Hash Generator (SHA-256/512/MD5), JWT Decoder, Base64 Encoder/Decoder, UUID v4/v7 Generator. |
Networking & DevOps | EADDRINUSE Port Inspector, IPv4 CIDR Calculator, Dockerfile Visualizer, P2P Ghost Tunnel, Fetch Mock Generator, API Load Tester, DNS & Header Inspector. |
Data & Architecture | JSON to TypeScript Type Generator, 3D JSON Galaxy, Interactive JSON Formatter & Viewer, SQLite In-Browser Fiddle, Line-by-Line Diff Checker, AST Conflict Telepathy. |
Frontend & UI | Glassmorphism CSS Studio, App Mockup Generator, High-Resolution Code-to-Image Renderer, Favicon Generator, GitHub Profile README Builder. |
Time & Scheduling (25+ Tools) | Unix Timestamp Converter, Epoch Converter, ISO 8601 & RFC 3339 Parser, Timezone Converter & Simulator, Plain-English Cron Generator & Explainer, World Clock, Business Hours Matrix, Milliseconds to Date. |
🔒 Privacy & Zero-Telemetry Guarantee
Engineering tools should never leak your IP, company secrets, or code snippets.
0 Analytics or Tracking Cookies: No PostHog, Google Analytics, or third-party telemetry scripts.
Offline First: All cryptographic operations rely on the browser and runtime's native
SubtleCrypto/ Web Crypto API.Air-Gap Compatible: Both the CLI, Docker image, and web application can run in offline and restricted intranet environments.
💻 Local Development
Castov is built with Next.js 16 (App Router), TypeScript (Strict), and Tailwind CSS v4.
# 1. Clone repository
git clone https://github.com/castovdev/castov.git
cd castov
# 2. Install dependencies
npm install
# 3. Setup local environment
cp .env.example .env.local
# 4. Start development server
npm run dev
# 5. Build CLI and Web applications
npm run buildTo run tests across packages:
npm run test📄 License
Castov is open-source software licensed under the MIT License. Free for personal, commercial, and enterprise usage.
Available Tools
10 toolscastov_cidrARead-onlyIdempotent
Calculate IPv4 CIDR subnet mask, wildcard mask, network address, broadcast address, usable IP range, and total host count.
| Name | Required | Description | Default |
|---|---|---|---|
| cidr | Yes | IPv4 CIDR block such as '192.168.1.0/24', '10.0.0.0/16', or '/24' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds nothing further behaviorally — no mention of how malformed CIDRs are handled or whether host bits set in the address are accepted — so it neither helps nor hurts beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero filler, output list front-loaded immediately after the verb. Nothing padded and nothing left dangling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the six returned values so the agent knows what it gets back, and the annotations cover the safety profile. It falls short only on edge-case behavior (invalid or malformed CIDR input), which an agent might need to plan around.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's schema text already gives three concrete formats including the shorthand '/24'. The description adds no syntax or constraint detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Calculate') and resource ('IPv4 CIDR') and enumerates exactly what is produced: subnet mask, wildcard mask, network address, broadcast address, usable range, host count. None of the unrelated siblings (castov_hash, castov_jwt_decode, castov_cron, etc.) can be confused with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the output list — an agent will reach for this when it needs subnet math — but there is no explicit statement of when to use it versus anything else, no preconditions, and no note on invalid input. For a single-purpose utility with no competing sibling, implied usage is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_cronARead-onlyIdempotent
Parse a 5-field cron expression into plain English and calculate the next 5 upcoming execution times in a specified IANA timezone.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | Optional IANA timezone name (defaults to 'UTC', e.g. 'America/New_York', 'Europe/London') | |
| expression | Yes | 5-field cron expression (minute hour day-of-month month day-of-week), e.g. '*/15 * * * *' or '0 9 * * 1-5' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine behavioral detail beyond that: it returns a plain-English explanation plus the next 5 execution times, and applies the IANA timezone to the calculation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, front-loading the parse action and then the calculation, with no redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so concretely (English explanation plus 5 upcoming times). It is only slightly incomplete in not mentioning behavior for invalid or non-5-field expressions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description restates the same facts (5-field cron expression, IANA timezone) without adding format syntax, edge-case handling, or default behavior beyond what the schema already documents. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resources: parse a 5-field cron expression into plain English, and calculate the next 5 execution times. This clearly distinguishes it from siblings like castov_timestamp and castov_timezone, which do different work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (interpreting a cron schedule or previewing its next runs), but offers no explicit when-not conditions or pointers to alternatives such as castov_timezone for timezone conversion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_detect_idARead-onlyIdempotent
Detect identifier format and decode embedded creation timestamp from MongoDB ObjectId, UUIDv7, ULID, or Twitter/Discord Snowflake ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifier string (UUIDv7, ULID, 24-hex ObjectId, or numeric Snowflake ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and non-destructive behavior, so the safety profile is clear. The description adds the supported format list and the fact that it decodes an embedded creation timestamp, which is useful behavioral context, but it does not discuss error handling or invalid-ID behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that names the action and all supported formats; there is no filler or repetition. It earns its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only detection tool with full schema coverage and rich annotations, the description covers the essential input domain and output intent. It could better clarify the response shape (no output schema exists) and invalid input handling, but it is largely complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents the single 'id' parameter's expected types. The description adds only a minor detail ('Twitter/Discord' qualifier on Snowflake) beyond the schema's 'numeric Snowflake ID', so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Detect'/'decode') and resource ('identifier format'/'embedded creation timestamp'), and enumerates exact supported identifier types (MongoDB ObjectId, UUIDv7, ULID, Twitter/Discord Snowflake). This enumeration distinguishes it from sibling tools such as castov_timestamp and castov_jwt_decode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage whenever an agent needs to identify an ID's format or extract its creation time, but it offers no explicit when-to-use/when-not-to-use guidance and does not name alternatives such as castov_timestamp. It is adequate context but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_hashARead-onlyIdempotent
Compute deterministic cryptographic hashes (sha256, sha384, sha512, sha1, md5) and Base64 / Base64URL encodings of input text locally.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Input text string to hash and encode | |
| algorithm | No | Hash algorithm to use (default: 'sha256') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true and destructiveHint=false, so safety and locality are covered. The description's 'deterministic' and 'locally' largely restate idempotentHint and openWorldHint rather than adding new behavior, and it says nothing about output format (hex vs raw, padding) or whether Base64 output requires an extra request.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the action, algorithm enumeration and execution scope front-loaded; no filler or redundant clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a pure-compute tool with rich annotations the description is nearly adequate, but with no output schema it never states what comes back (hex digest string, encoding case, padding), and the unprompted Base64/Base64URL claim leaves an unanswered question about how that output is obtained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with only two parameters, so the schema already documents 'text' and the algorithm enum with its default. The description's algorithm list duplicates the enum, and its Base64/Base64URL mention implies an output-format choice that no parameter exposes, which could mislead rather than clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (compute) plus the resources (cryptographic hashes, Base64/Base64URL encodings) and names the exact algorithms, which cleanly separates it from siblings like castov_jwt_decode or castov_scan_secrets. It stops short of explicitly naming any sibling or stating a boundary against them, and the Base64/Base64URL claim has no corresponding parameter in the schema, which slightly muddies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for hashing arbitrary text rather than decoding JWTs or scanning secrets. There is no explicit when-to-use statement, no exclusions, and no mention of when a sibling such as castov_jwt_decode would be the better pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_jwt_decodeARead-onlyIdempotent
Decode a JSON Web Token (JWT) header and payload locally offline without external network calls, inspecting claims (exp, iat, nbf, sub, iss) and expiration status.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Encoded JWT string (header.payload.signature) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description usefully reinforces the offline/no-network behavior and names the claims inspected, but it never states the key limitation that this is a decode-only operation with no signature verification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the core action front-loaded and zero filler; the offline constraint and inspected claims follow in a natural reading order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does carry the burden of indicating what comes back, and it lists the extracted claims (exp, iat, nbf, sub, iss) plus expiration status. It is nearly complete for a one-parameter tool, missing only the caveat that no signature validation occurs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'token' is fully documented in the schema as header.payload.signature, so the schema does the heavy lifting. The description adds no format or syntax detail beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Decode) and resource (JWT header and payload), and no sibling tool (hash, secret, scan_secrets, cidr, etc.) overlaps with JWT decoding, so the tool is trivially distinguishable. It also scopes the operation as a local, read-only inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: decode a token to inspect its claims and expiration. There is no explicit when-to-use statement, no exclusions, and no named alternative, though none of the siblings is a plausible substitute, which limits the cost of the omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_portARead-onlyIdempotent
Inspect network port number (1-65535) for standard IANA service assignment, transport protocol (TCP/UDP), and typical application purpose.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | TCP/UDP port number between 1 and 65535 (e.g. 3000, 5432, 6379) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the agent knows this is a safe, repeatable lookup. The description adds the range constraint (1-65535) and the shape of the answer, but no extra behavioral context such as lookup source, offline vs online resolution, or completeness guarantees. With annotations carrying the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, no filler or redundancy. It earns its length entirely by enumerating what the inspection returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description usefully pre-declares the three fields the caller will get back (IANA assignment, transport protocol, application purpose), which is the main missing structured information. Adequate for a simple one-parameter lookup, though it could mention result reliability or unknown-port behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented there with the 1-65535 range and examples (3000, 5432, 6379). The description merely restates the same range, so it adds no meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Inspect") and resource ("network port number") plus the exact information returned (IANA service assignment, TCP/UDP protocol, typical application purpose). The domain is clearly distinct from siblings like castov_jwt_decode or castov_cidr, though it never names a sibling to route against, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context (you have a port number and want to know what service it maps to), but it never states when to use this versus alternatives or any preconditions. No exclusions or sibling routing are given, so it is implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_scan_secretsBRead-onlyIdempotent
Scan a code snippet, git diff, or .env configuration text locally for leaked credentials (AWS Access Keys, Stripe Live Keys, OpenAI API Keys, GitHub PATs, Slack Tokens, and RSA/OpenSSH Private Keys).
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Code snippet, configuration file text, or git diff to audit for hardcoded secrets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description reinforces this with 'locally' and adds the detection taxonomy, but says nothing about return shape or scanning limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence naming the action, the input forms, and the detection categories with no filler. Efficient, though the parenthetical list is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations describing results, the description never indicates what the scan returns (matched findings, severity, line references), which is what an agent most needs to plan a follow-up call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'content' parameter, so the schema fully documents it. The description's enumeration of scannable content types (code, git diff, .env) loosely maps to the parameter but adds no format or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Scan') plus the resource ('code snippet, git diff, or .env configuration text') and enumerates the credential classes it detects, so the agent knows exactly what it does. It does not, however, differentiate itself from the sibling castov_secret, leaving a plausible overlap unresolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'locally' implies the operating context, but there is no explicit statement of when to choose this over castov_secret or what inputs are unsuitable. Usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_secretARead-only
Generate cryptographically secure random secrets (CSPRNG) in Hex, Base64URL, API Key ('sk_live_...'), and sortable UUIDv7 formats for .env files and JWT signing.
| Name | Required | Description | Default |
|---|---|---|---|
| bytes | No | Optional entropy length in bytes between 8 and 512 (default: 32 bytes / 256 bits) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered and the description correctly does not contradict it. The description adds a useful trait, that output is CSPRNG-generated, but omits that results are non-deterministic (annotations flag idempotentHint=false) and never explains how the four advertised formats are selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence with no padding; the verb leads and the formats follow. It is slightly weakened by trailing format names that the schema gives no way to select.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter and no output schema, the definition is nearly complete, but it advertises Hex/Base64URL/API Key/UUIDv7 formats while the schema exposes no format selector, leaving the agent unsure how to obtain each format or what the default is. That ambiguity is the main completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'bytes' parameter fully documented in the schema (range 8-512, default 32). The description adds no meaning beyond that. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate cryptographically secure random secrets (CSPRNG)') and enumerates the concrete output formats. It clearly distinguishes itself from siblings like castov_hash, castov_jwt_decode, and castov_scan_secrets, which all touch cryptographic material but do different things.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended context ('for .env files and JWT signing') hints at when to reach for this tool, but there is no explicit when-to-use vs. when-not framing and no named alternative. Usage is largely implied by the purpose statement rather than stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_timestampBRead-onlyIdempotent
Inspect and convert a Unix epoch timestamp (seconds or milliseconds) to UTC, ISO 8601, and localized human time.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Unix epoch timestamp in seconds (10 digits) or milliseconds (13 digits), e.g. '1713456789' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the useful fact that it returns UTC, ISO 8601, and localized human time, but says nothing about how 'localized' time is determined (server timezone vs. client) or about handling of ambiguous/invalid values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the action and resource and closes with the concrete outputs. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, side-effect-free utility with no output schema, the description is nearly sufficient: it names the return formats and the annotations cover safety. It falls short only on ambiguity handling and how the localized rendering is anchored.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already documents the 10-digit seconds / 13-digit milliseconds convention with an example. The description merely repeats 'seconds or milliseconds', adding no syntax, edge-case, or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (inspect/convert) and a precise resource (Unix epoch timestamp) plus the output formats produced. It is clear what the tool does, but it never distinguishes itself from the closely related sibling castov_timezone, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative, even though castov_timezone is an obvious adjacent tool. The only routing signal is the implicit input type (an epoch timestamp), which is weak guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
castov_timezoneARead-onlyIdempotent
Convert a date/time string between two IANA time zones with exact UTC offset, timezone abbreviation, and Daylight Saving Time (DST) transition warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| toZone | Yes | Target IANA timezone (e.g. 'Europe/Paris' or 'Asia/Tokyo') | |
| dateTime | Yes | Date/time string in 'YYYY-MM-DD HH:mm' or ISO 8601 format, e.g. '2026-03-29 14:30' | |
| fromZone | Yes | Source IANA timezone (e.g. 'America/New_York' or 'UTC') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine value by disclosing the return content: exact UTC offset, timezone abbreviation, and DST transition warnings, which tells the agent to expect advisory output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the operation, inputs, and outputs with no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly summarizes the return payload (offset, abbreviation, DST warnings). It stops short of stating how invalid zone names or ambiguous/nonexistent local times around transitions are handled, which matters for a conversion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with formats and IANA examples given for all three parameters, so the schema carries the parameter burden. The description only restates "IANA time zones" without adding syntax, ambiguity handling, or default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Convert") and resource (date/time strings between two IANA time zones), plus the outputs produced. It is clear on its own, but it never distinguishes itself from the sibling castov_timestamp, which an agent could plausibly confuse with a timezone tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites (e.g. valid IANA zone names required), and no mention of the nearest alternative (castov_timestamp). Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.3.4- Changed
castov_cidr2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / cidr / descriptionPrevious value: -"CIDR string like 192.168.1.0/24 or /24"New value: +"IPv4 CIDR block such as '192.168.1.0/24', '10.0.0.0/16', or '/24'"
- Added
castov_cron - Changed
castov_detect_id2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / id / descriptionPrevious value: -"Identifier string"New value: +"Identifier string (UUIDv7, ULID, 24-hex ObjectId, or numeric Snowflake ID)"
- Added
castov_hash - Added
castov_jwt_decode - Changed
castov_port2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / port / descriptionPrevious value: -"Port number between 1 and 65535"New value: +"TCP/UDP port number between 1 and 65535 (e.g. 3000, 5432, 6379)"
- Added
castov_scan_secrets - Added
castov_secret - Changed
castov_timestamp2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / value / descriptionPrevious value: -"Unix timestamp in seconds or ms"New value: +"Unix epoch timestamp in seconds (10 digits) or milliseconds (13 digits), e.g. '1713456789'"
- Added
castov_timezone
4 tool updates
v1.3.3- First observed
castov_cidr - First observed
castov_detect_id - First observed
castov_port - First observed
castov_timestamp
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose targeting a specific resource or action (secrets, JWT, hash, scan, ID, CIDR, port, cron, timezone). The only mild overlap is within the time-related cluster (timestamp, timezone, cron) and the crypto cluster (secret vs hash vs scan_secrets), but descriptions distinguish them well enough that misselection is unlikely.
All tools share a consistent 'castov_' prefix and snake_case, giving a predictable namespace. However, the suffix style is mixed: mostly bare nouns (secret, hash, cidr, port, cron, timezone) with a few verb_noun forms (jwt_decode, scan_secrets, detect_id), which is a minor deviation rather than a real inconsistency.
At 10 tools, the set is well-scoped and each tool is a distinct, self-contained utility that earns its place. No redundancy or padding is present.
As a developer utility toolkit, coverage is broad across security, networking, and time domains. A few minor gaps exist (e.g., no Base64 decode counterpart to the hash/encode tool, and JWT decode has no accompanying sign/encode), but these are workable omissions.
Maintenance
Related MCP Connectors
500+ deterministic tools for AI agents: math, conversion, validation, hashing, encoding, date/time.
Exact hashing, base64/hex/URL encoding, JWT decoding and UUIDs for AI agents. No auth required.
JSON/YAML, regex, diff, JWT, SQL dialects — the keyless millisecond ops an agent needs mid-task.
Open-source IP address and CIDR tools for network calculations and public IP lookup.
Related MCP Servers
- AlicenseCqualityAmaintenanceStateless URL, DNS, x402, JWT, encoding, and parsing tools for AI agents.4442 PyPIMIT
- AlicenseBqualityBmaintenanceEnables AI agents to perform accurate local computations including arbitrary-precision math, date handling, unit conversion, subnet calculations, encoding, hashing, and text analysis, all without network calls or API keys.27128 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to perform exact, reproducible mechanical computation — text diffing, hashing, JSON querying, calendar arithmetic, deadline-bounded regex extraction, CSV parsing, similarity scoring, unit and base conversion — instead of relying on probabilistic guessing. Runs dependency-free, read-only and offline over stdio, with schema validation and hard caps on every operation so no call can hang the client.1538 npmMIT
- AlicenseNot gradedqualityCmaintenanceExposes 24 deterministic developer utilities as MCP tools — encoders and hashers, UUID/ULID and timestamp helpers, color, CSS, cron and permission converters, JSON/YAML/XML/SQL/TypeScript transformers, and a web page-to-markdown fetcher. Runs locally over stdio so agents get byte-exact results instead of approximating computations, with only the markdown fetcher making network requests.MIT