Agent Tools MCP
by why-see · remote · no sign-in to list tools · v1.1.0 · published by GitHub user why-see
32 free MCP tools for data validation, text optimization, and synthetic test data.
32 tools: 1 can delete or cancel things and 31 change things.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things31Claude Code: ask: see these tools
- Only reads0Claude Code: allow
21 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http agent-tools https://agent-tools-mcp.yvan11.workers.dev/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnis-password-safe
The server marks "is-password-safe" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "evaluate": a word for a change.
- Warnminify-html
The server marks "minify-html" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnminify-html
The server marks "minify-html" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warnminify-js
The server marks "minify-js" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.
- Warnminify-css
The server marks "minify-css" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.
- Warngenerate-avatar
The server marks "generate-avatar" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-avatar" says "generate": a word for a change.
Show 15 more findingsShow fewer
The server marks "generate-card-number" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-card-number" says "generate": a word for a change.
- Warngenerate-color
The server marks "generate-color" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-color" says "generate": a word for a change.
- Warngenerate-dataset
The server marks "generate-dataset" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-dataset" says "generate": a word for a change.
The server marks "generate-fake-data" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-fake-data" says "generate": a word for a change.
- Warngenerate-hash
The server marks "generate-hash" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-hash" says "generate": a word for a change.
- Warngenerate-lorem
The server marks "generate-lorem" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-lorem" says "generate": a word for a change.
The server marks "generate-password" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-password" says "generate": a word for a change.
The server marks "generate-phone-number" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-phone-number" says "generate": a word for a change.
- Warngenerate-prompt
The server marks "generate-prompt" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-prompt" says "generate": a word for a change.
- Warngenerate-slug
The server marks "generate-slug" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-slug" says "generate": a word for a change.
- Warngenerate-ssn
The server marks "generate-ssn" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-ssn" says "generate": a word for a change.
- Warngenerate-token
The server marks "generate-token" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-token" says "generate": a word for a change.
The description mentions "credentials".
What this check looks forMatched text
description: "...cvc}; values are synthetic, not issued credentials."
The description mentions "credential".
What this check looks forMatched text
description: "...nd visible to MCP clients; not a secure credential vault."
- Infogenerate-token
The description mentions "credentials".
What this check looks forMatched text
description: "...table and unsuitable for authentication credentials."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
32 tools
Deletes or cancels 1Claude Code: deny
minify-htmlRemove comments and compact whitespace in HTML fragments.2 findings
Why it is in this group
- The description's first verb is "remove": a word for removing or ending something.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "minify-html" read-only (readOnlyHint: true), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
- Warn
The server marks "minify-html" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "remove": a word for removing or ending something.
Description, as the server wrote it Remove comments and compact whitespace in HTML fragments. Use for small, controlled HTML snippets, not full document compilation. Returns an HTML string; preserves pre, textarea, script and style contents. Regression-test rendered output.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Changes things 31Claude Code: ask
generate-avatarCreate an SVG placeholder profile icon.1 finding
Why it is in this group
- The name "generate-avatar" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-avatar" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-avatar" says "generate": a word for a change.
Description, as the server wrote it Create an SVG placeholder profile icon. Use for synthetic avatars in demos and UI prototypes. Returns SVG markup, not a photorealistic likeness.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-card-numberGenerate a synthetic payment-card fixture.2 findings
Why it is in this group
- The name "generate-card-number" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...cvc}; values are synthetic, not issued credentials."
- Warn
The server marks "generate-card-number" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-card-number" says "generate": a word for a change.
Description, as the server wrote it Generate a synthetic payment-card fixture. Use for payment-form UI tests requiring a Luhn-valid card number. Returns {number, brand, expiry, cvc}; values are synthetic, not issued credentials.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-colorGenerate a palette from a base color and harmony scheme.1 finding
Why it is in this group
- The name "generate-color" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-color" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-color" says "generate": a word for a change.
Description, as the server wrote it Generate a palette from a base color and harmony scheme. Use for design prototypes; defaults: random base, triadic scheme, five hex colors. Returns {base, scheme, colors, textOnBase}; text color is heuristic, not a WCAG contrast check.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-datasetGenerate synthetic rows as JSON, JSONL or CSV.1 finding
Why it is in this group
- The name "generate-dataset" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-dataset" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-dataset" says "generate": a word for a change.
Description, as the server wrote it Generate synthetic rows as JSON, JSONL or CSV. Use for data import/export tests; use generate-fake-data for preset people or company fixtures. Returns at most eight records without accessing a database.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-fake-dataCreate fictional users, companies, addresses or rows.1 finding
Why it is in this group
- The name "generate-fake-data" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-fake-data" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-fake-data" says "generate": a word for a change.
Description, as the server wrote it Create fictional users, companies, addresses or rows. Use to seed demos with preset records; use generate-dataset for custom fields. Synthetic values are not verified identities.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-hashCompute SHA-256 or legacy MD5 text digests.1 finding
Why it is in this group
- The name "generate-hash" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-hash" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-hash" says "generate": a word for a change.
Description, as the server wrote it Compute SHA-256 or legacy MD5 text digests. Use for non-secret content fingerprints; generate-token creates new IDs instead. Returns a hex digest; unsuitable for password storage or key derivation.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-loremGenerate lorem ipsum placeholder copy.1 finding
Why it is in this group
- The name "generate-lorem" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-lorem" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-lorem" says "generate": a word for a change.
Description, as the server wrote it Generate lorem ipsum placeholder copy. Use for mock layouts needing filler words, sentences or paragraphs. Returns synthetic copy, not sourced editorial content.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-passwordGenerate random or seeded test passwords.2 findings
Why it is in this group
- The name "generate-password" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...nd visible to MCP clients; not a secure credential vault."
- Warn
The server marks "generate-password" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-password" says "generate": a word for a change.
Description, as the server wrote it Generate random or seeded test passwords. Use for demo login fields; use generate-token for identifiers. Seeded values are predictable and visible to MCP clients; not a secure credential vault.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-phone-numberGenerate fictional US-format phone numbers.1 finding
Why it is in this group
- The name "generate-phone-number" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-phone-number" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-phone-number" says "generate": a word for a change.
Description, as the server wrote it Generate fictional US-format phone numbers. Use for US demo phone fields; when supplied, city selects a local area-code pool and must match state. Returns an array of fictional (AAA) 555-01XX numbers; no subscriber lookup.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-promptFill a prompt template with supplied variables.1 finding
Why it is in this group
- The name "generate-prompt" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-prompt" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-prompt" says "generate": a word for a change.
Description, as the server wrote it Fill a prompt template with supplied variables. Use {name} placeholders with matching vars.name; missing variables become empty text. Returns a prompt string without invoking a model; code/image modes can add framing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-slugConvert a title into a Unicode-aware URL slug.1 finding
Why it is in this group
- The name "generate-slug" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-slug" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-slug" says "generate": a word for a change.
Description, as the server wrote it Convert a title into a Unicode-aware URL slug. Use when forming new path segments from headings. Inspect output before publishing permanent URLs.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-ssnGenerate fictional US SSN-style test identifiers.1 finding
Why it is in this group
- The name "generate-ssn" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate-ssn" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-ssn" says "generate": a word for a change.
Description, as the server wrote it Generate fictional US SSN-style test identifiers. Use for SSN test fields; use generate-fake-data for mixed-record fixtures. Returns a string for count=1, otherwise an array; structural validity does not confirm issuance.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
generate-tokenGenerate token strings or UUIDs.2 findings
Why it is in this group
- The name "generate-token" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...table and unsuitable for authentication credentials."
- Warn
The server marks "generate-token" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate-token" says "generate": a word for a change.
Description, as the server wrote it Generate token strings or UUIDs. Use for test identifiers; use generate-password for password fixtures. Seeded output is predictable and unsuitable for authentication credentials.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-card-safeCheck payment-card brand, length and Luhn checksum.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check payment-card brand, length and Luhn checksum. Use with synthetic card numbers in payment-form tests. Returns {ok, normalized?, brand?, last4?, issues}; not a payment authorization or fraud check.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-email-safeCheck conservative ASCII email address syntax.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check conservative ASCII email address syntax. Use to reject malformed addresses in forms and test fixtures. Returns true or false; does not check mailbox existence or deliverability.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-iban-safeCheck IBAN country rules, length and checksum against a bundled registry.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check IBAN country rules, length and checksum against a bundled registry. Use to screen public or synthetic IBANs in test data. Returns {ok, normalized?, issues}; does not verify account ownership or transferability.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-ip-safeCheck IPv4 or IPv6 literal-address syntax.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check IPv4 or IPv6 literal-address syntax. Use to screen candidate IP strings, not test reachability or geolocation. Returns {ok, version, issues}; version is 4, 6 or null.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-iso-date-safeCheck Gregorian YYYY-MM-DD calendar dates, including leap days.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check Gregorian YYYY-MM-DD calendar dates, including leap days. Use for date-only form fields, not timestamps or timezone offsets. Returns true for a valid date, otherwise false.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-json-safeParse JSON with bounded depth, key counts and input size.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Parse JSON with bounded depth, key counts and input size. Use to screen JSON without execution; use optimize-dataset for JSONL or CSV cleanup. Returns {ok, issues, bytes, depth, keys, value?}; parsed value is included only when valid.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-password-safeEvaluate password strength using local heuristics.1 finding
Why it is in this group
- The description's first verb is "evaluate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "is-password-safe" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "evaluate": a word for a change.
Description, as the server wrote it Evaluate password strength using local heuristics. Use only with dummy passwords when testing password policies. Returns {ok, score, entropyBits, length, sets, reasons, suggestions}; no breach-database lookup.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-phone-e164Check phone number syntax against E.164 after local normalization.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a destination (input.phone): what the tool writes goes there.
Description, as the server wrote it Check phone number syntax against E.164 after local normalization. Use to test international number formats, including spaces or 00 prefixes. Returns true or false, not the normalized number; no subscriber or reachability check.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-url-safeCheck absolute HTTP or HTTPS URL syntax.Can send data outNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Check absolute HTTP or HTTPS URL syntax. Use to screen links before display or storage. Returns true or false; does not visit or assess the site's safety.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-us-tin-safeCheck synthetic US EIN, SSN or ITIN number formats.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check synthetic US EIN, SSN or ITIN number formats. Use with tax-ID input fixtures, never real personal identifiers. Returns {ok, normalized?, type, issues}; does not verify IRS issuance or identity.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-uuid-safeCheck canonical UUID syntax and optional RFC variant/version.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check canonical UUID syntax and optional RFC variant/version. Use to validate UUIDs; use generate-token to create them. Returns true or false; does not check uniqueness or resource existence.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is-vat-safeCheck country-specific VAT number patterns.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check country-specific VAT number patterns. Use to screen VAT fixtures before form submission. Returns {ok, country?, normalized?, issues}; no VIES lookup or active-registration check.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
minify-cssReduce whitespace in CSS snippets.1 finding
Why it is in this group
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "minify-css" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.
Description, as the server wrote it Reduce whitespace in CSS snippets. Use for basic stylesheet cleanup rather than production minification. Not a full CSS parser; visually test the result.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
minify-jsCompact small JavaScript snippets.1 finding
Why it is in this group
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "minify-js" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.
Description, as the server wrote it Compact small JavaScript snippets. Use for basic source cleanup, not AST-aware production minification. Returns JavaScript text, sometimes unchanged for complex syntax; regression-test its behavior.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
minify-promptNormalize prompt whitespace and line breaks.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Normalize prompt whitespace and line breaks. Use to compact formatting before calling a model; filler phrases are not removed. Returns trimmed text with normalized spacing; review prompts where whitespace carries meaning.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
optimize-datasetClean and compact JSON, JSONL or CSV rows.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Clean and compact JSON, JSONL or CSV rows. Use for small datasets; use is-json-safe to check JSON syntax without changes. Returns text in the selected format; trims strings, deduplicates rows and may drop mostly empty columns.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
optimize-google-tagRebuild GA4 gtag.js markup from a G- measurement ID.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Rebuild GA4 gtag.js markup from a G- measurement ID. Use on existing GA4 snippets, not GTM containers or consent setup. Returns replacement HTML with async loading and a config call, or original input if no G- ID exists. Review lost settings and consent.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
strip-ansiStrip terminal ANSI escape codes from text.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Strip terminal ANSI escape codes from text. Use to make colorized logs readable for indexing or display. Returns plain text without interpreting log entries.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out2
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http agent-tools https://agent-tools-mcp.yvan11.workers.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [],
"ask": [
"mcp__agent-tools__is-card-safe",
"mcp__agent-tools__is-email-safe",
"mcp__agent-tools__is-iban-safe",
"mcp__agent-tools__is-iso-date-safe",
"mcp__agent-tools__is-ip-safe",
"mcp__agent-tools__is-json-safe",
"mcp__agent-tools__is-password-safe",
"mcp__agent-tools__is-phone-e164",
"mcp__agent-tools__is-uuid-safe",
"mcp__agent-tools__is-url-safe",
"mcp__agent-tools__is-us-tin-safe",
"mcp__agent-tools__is-vat-safe",
"mcp__agent-tools__optimize-dataset",
"mcp__agent-tools__optimize-google-tag",
"mcp__agent-tools__minify-js",
"mcp__agent-tools__minify-css",
"mcp__agent-tools__minify-prompt",
"mcp__agent-tools__strip-ansi",
"mcp__agent-tools__generate-avatar",
"mcp__agent-tools__generate-card-number",
"mcp__agent-tools__generate-color",
"mcp__agent-tools__generate-dataset",
"mcp__agent-tools__generate-fake-data",
"mcp__agent-tools__generate-hash",
"mcp__agent-tools__generate-lorem",
"mcp__agent-tools__generate-password",
"mcp__agent-tools__generate-phone-number",
"mcp__agent-tools__generate-prompt",
"mcp__agent-tools__generate-slug",
"mcp__agent-tools__generate-ssn",
"mcp__agent-tools__generate-token"
],
"deny": [
"mcp__agent-tools__minify-html"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as agent-tools. Review it before you use it.
Capability tags behind 2 rules
- mcp__agent-tools__is-phone-e164 outbound
- mcp__agent-tools__is-url-safe outbound
