Highland Intel APIs
group.highlnd-intel/highland-apishighlnd-intel.groupstreamable-httpv1.0.0Scanned
70 pay-per-call APIs: DNS, email auth, security headers, web search, scraping, AI. x402 USDC/Base
70 tools: 2 do something that can't be undone, 51 change things and 17 only read.
- Reads private data · 1
- Reads text others write · 17
- Can send data out · 14
- 16 findings, 1 high
Anlyon alternative
53 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
70 tools
Can't be undone 2Claude Code: ask
cors-checkSends a GET with an Origin header (and an OPTIONS preflight for non-simple methods, custom headers or credentials) to a public URL and reports the Access-Control-* headers with an …Can send data out3 findings
Why it is in this group
- The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe description's first verb is "send": it sends or publishes something to other people.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...r non-simple methods, custom headers or credentials) to a public URL and reports the Access..."
- Info
The input schema at properties.credentials.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.credentials.description: "Whether the call sends cookies or auth (credentials: include)."
- Warn
The server marks "cors-check" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it Sends a GET with an Origin header (and an OPTIONS preflight for non-simple methods, custom headers or credentials) to a public URL and reports the Access-Control-* headers with an allowed/blocked verdict. Returns { url, finalUrl, origin, status, preflight: { status } | null, headers: { acao, acac, acam, acah, vary }, allowed, issues } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
dataset-convertConverts JSONL between OpenAI-style chat, Anthropic-style messages and Alpaca rows.Can send data out1 finding
Why it is in this group
- The name "dataset-convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- 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.to): what the tool writes goes there.
Findings
- Warn
The server marks "dataset-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "dataset-convert" says "convert": a word for a change.
Description, as the server wrote it Converts JSONL between OpenAI-style chat, Anthropic-style messages and Alpaca rows. System prompts move between the system message and the top-level field; rows that cannot convert are listed. Returns { from, to, converted, skippedCount, skipped: [{ line, reason }], jsonl } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
Changes things 51Claude Code: ask
base64Encodes UTF-8 text to standard or url-safe base64, or decodes either form; binary results that are not valid UTF-8 come back as hex.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 Encodes UTF-8 text to standard or url-safe base64, or decodes either form; binary results that are not valid UTF-8 come back as hex. Returns encode: { base64, variant, bytes } · decode: { text | null, hex | null, utf8, bytes } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
cf-ip-checkSays whether an IPv4 or IPv6 address is in Cloudflare's published edge ranges, and which range.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 Says whether an IPv4 or IPv6 address is in Cloudflare's published edge ranges, and which range. Returns { ip, version, cloudflare, range, rangesAsOf }: range is the matching CIDR or null. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
chunk-textSplits text for retrieval by estimated tokens, sentences or markdown headings, with token overlap and stable SHA-256 chunk ids.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 Splits text for retrieval by estimated tokens, sentences or markdown headings, with token overlap and stable SHA-256 chunk ids. Returns { chunks: [{ id (sha-256 hex of the chunk text), index, text, tokens, start, end, heading? }], count, mode, size, overlap, family, method } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
classifyPicks one label from your list (2 to 20 labels) for a piece of 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 Picks one label from your list (2 to 20 labels) for a piece of text. Returns { label, labels }: the chosen label (one of yours, or null if none fit) and the labels sent. Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
claude-md-lintLints a CLAUDE.md: size, structure, @imports, and secrets, passwords or email addresses that should not be there.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 Lints a CLAUDE.md: size, structure, @imports, and secrets, passwords or email addresses that should not be there. Returns { ok, stats { characters, lines, approxTokens, headings, imports }, findings[{ severity: error|warning|info, code, path, message }] and counts { error, warning, info } }. Paths are line numbers. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
code-reviewReviews a code snippet and returns concrete issues (bugs, security, performance, style) with severity and a fix for each.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 "code-review" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":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 Reviews a code snippet and returns concrete issues (bugs, security, performance, style) with severity and a fix for each. Returns { language, summary, issues: [{ severity, line, issue, fix }] } Price: 4 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
commit-messageTurns a unified diff into a Conventional Commits message: type, scope, subject and body.Can send data out1 finding
Why it is in this group
- The name "commit-message" says "commit": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- outboundThe name "commit-message" says "commit" and "message": it writes something other people read.
Findings
- Warn
The server marks "commit-message" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "commit-message" says "commit": a word for a change.
Description, as the server wrote it Turns a unified diff into a Conventional Commits message: type, scope, subject and body. Returns { message, type, scope, subject, body } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
contrast-checkComputes the WCAG 2.2 contrast ratio of two colours, pass/fail for AA and AAA, and the nearest passing foreground when it fails.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 Computes the WCAG 2.2 contrast ratio of two colours, pass/fail for AA and AAA, and the nearest passing foreground when it fails. Returns { ratio, aa_normal, aa_large, aaa_normal, aaa_large, ui_components, suggested_foreground } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
cron-to-cfChecks a cron expression against Cloudflare Cron Trigger syntax, explains it, lists the next runs and gives the wrangler snippet.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 Checks a cron expression against Cloudflare Cron Trigger syntax, explains it, lists the next runs and gives the wrangler snippet. Returns { valid, cron, errors, warnings, explanation, nextRuns (up to 5 ISO times, standard syntax only), snippets { jsonc, toml } }. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
curl-to-codeConverts a curl command into JavaScript fetch, Python requests, Go net/http or PHP code.1 finding
Why it is in this group
- The description's first verb is "convert": 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 "curl-to-code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it Converts a curl command into JavaScript fetch, Python requests, Go net/http or PHP code. Returns { language, request: { url, method, headers, data }, code } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
dataset-splitDeterministic seeded shuffle and train/val/test split of JSONL 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 Deterministic seeded shuffle and train/val/test split of JSONL rows. The same seed and input always give the same split. Returns { seed, ratios, counts: { train, val, test, skipped }, train, val, test } (each split as JSONL) Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
embedEmbeds 1 to 16 short texts with the fixed Workers AI model @cf/baai/bge-base-en-v1.5 (768 dimensions) for search and clustering.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 Embeds 1 to 16 short texts with the fixed Workers AI model @cf/baai/bge-base-en-v1.5 (768 dimensions) for search and clustering. Returns { model, dimensions, count, vectors: number[][] } Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
enrich-companyCompany profile from public web sources: name, description, industry, recent signals and the sources used.Reads text others writeNo 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Company profile from public web sources: name, description, industry, recent signals and the sources used. Returns { name, domain, description, industry, signals, sources: [{ url, title }] }: up to 5 signals and 8 sources. Organisations only, never people. Price: 14 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
enrich-urlProfiles one public page: title, summary, organisations and other entities, topics, sentiment and public contact points.Reads text others writeCan 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- 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 Profiles one public page: title, summary, organisations and other entities, topics, sentiment and public contact points. Returns { url, finalUrl, title, summary, entities: [{ text, type }], topics, sentiment: { label, score }, contact_points: { emails, phones, pages, social } }. Only role mailboxes (info@, sales@ ...) are returned. Price: 12 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
entity-extractNamed entities of fixed types (person, organization, location, product, event, date, money, law, technology), each found verbatim in your 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 Named entities of fixed types (person, organization, location, product, event, date, money, law, technology), each found verbatim in your text. Returns { entities: [{ text, type }], counts }: up to 50 entities, each present in the (redacted) text, and a count per type. Price: 10 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
hashSHA-1/256/384/512 hex digest of UTF-8 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 SHA-1/256/384/512 hex digest of UTF-8 text. Returns { algorithm, hex }: the lower-case hex digest. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
header-auditWhich security headers a site's HTTPS front page sends, with a simple grade.Reads text others writeNo 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Which security headers a site's HTTPS front page sends, with a simple grade. Returns { domain, status, present, missing, grade, server }: security headers sent and missing, and a grade A, B, C or F. Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
hst-calcAdds 14% NS HST to a subtotal, or splits a tax-included total.1 finding
Why it is in this group
- The description's first verb is "add": 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 "hst-calc" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
Description, as the server wrote it Adds 14% NS HST to a subtotal, or splits a tax-included total. Confirm the rate with CRA. Returns { subtotalCents, hstCents, totalCents, rate }. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
https-redirectWhether plain HTTP redirects to HTTPS, and whether HSTS is set.Reads text others writeNo 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Whether plain HTTP redirects to HTTPS, and whether HSTS is set. Returns { domain, redirectsToHttps, hsts, hstsMaxAge, hstsStrong }: HTTP-to-HTTPS redirect and HSTS status. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
invoice-numberFormats PREFIX-YYYYMM-NNNNN-C with a Luhn check digit, or validates one.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 Formats PREFIX-YYYYMM-NNNNN-C with a Luhn check digit, or validates one. Returns { invoice } when formatting, or { valid } when validating. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
json-extractPulls the fields you name out of free text (emails, invoices, tickets) and returns strict JSON, null when a field is absent.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 Pulls the fields you name out of free text (emails, invoices, tickets) and returns strict JSON, null when a field is absent. Returns { data: { <field>: value | null }, found, total } Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
jwt-decodeDecodes a JWT header and payload without verifying it, with warnings for alg none, missing or past exp, future nbf/iat and risky header fields.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 Decodes a JWT header and payload without verifying it, with warnings for alg none, missing or past exp, future nbf/iat and risky header fields. Returns { header, payload, signatureBytes, times: { exp, nbf, iat, expired }, verified: false, warnings, note } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
keywordsKey phrases of your text, each found verbatim in it; falls back to a frequency ranking if the model answer is unusable.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 Key phrases of your text, each found verbatim in it; falls back to a frequency ranking if the model answer is unusable. Returns { keywords, source }: up to `max` phrases and whether they came from the model or the frequency fallback. Price: 10 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
mail-authSPF and DMARC presence and policy strength for a domain.Reads text others writeNo 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it SPF and DMARC presence and policy strength for a domain. Returns { domain, spf, dmarc, dmarcPolicy, findings, pass }: the SPF and DMARC records, the DMARC policy and finding codes. Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
mock-responseGenerates realistic sample JSON from a JSON Schema or OpenAPI schema object, with field-aware values (emails, UUIDs, dates, URLs).1 finding
Why it is in this group
- The description's first verb is "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 "mock-response" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it Generates realistic sample JSON from a JSON Schema or OpenAPI schema object, with field-aware values (emails, UUIDs, dates, URLs). Returns { data } or { data: [...], count } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
openapi-lintChecks an OpenAPI 3.0/3.1 document (as JSON): version, info, paths, responses, unique operationIds, declared path parameters and unresolved local $refs.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 Checks an OpenAPI 3.0/3.1 document (as JSON): version, info, paths, responses, unique operationIds, declared path parameters and unresolved local $refs. Returns { valid, version, operations, refs, unresolvedRefs, errors: [{ path, message }], warnings: [{ path, message }] } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
pii-redactStrips emails, phone numbers, card numbers, SINs and IPv4s.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 Strips emails, phone numbers, card numbers, SINs and IPv4s. Runs locally, no model. Returns { text, counts }: the redacted text with [EMAIL]-style placeholders and a count per kind (email, card, sin, phone, ip). Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
prompt-inject-scanScans untrusted text (web pages, emails, tool output) for prompt-injection patterns before it reaches your agent; returns a risk score and the hits.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 Scans untrusted text (web pages, emails, tool output) for prompt-injection patterns before it reaches your agent; returns a risk score and the hits. Returns { risk: none|low|medium|high, score, hits: [{ rule, weight, match, index }] } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
prompt-lintFlags prompt-injection phrasing, chat-template tokens, hidden characters, PII and secrets per line, and lists {{variables}}.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 Flags prompt-injection phrasing, chat-template tokens, hidden characters, PII and secrets per line, and lists {{variables}}. Rule-based, no model call; flagged text is never echoed. Returns { ok, findings: [{ kind, severity, line, detail }], counts: { high, medium, low }, variables } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
quote-buildTotals line items, applies a discount and HST, and computes a deposit.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 Totals line items, applies a discount and HST, and computes a deposit. No customer details taken. Returns { lines, grossCents, discountCents, subtotalCents, hstCents, totalCents, rate, depositCents }. Price: 5 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
regex-from-englishWrites a JavaScript regex from a plain-English description, compiles it, and tests it against your sample strings.1 finding
Why it is in this group
- The description's first verb is "write": 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 "regex-from-english" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
Description, as the server wrote it Writes a JavaScript regex from a plain-English description, compiles it, and tests it against your sample strings. Returns { pattern, flags, literal, explanation, tests: [{ input, expected, got }], passed, total } Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
regex-testRuns a JavaScript regex over sample text and returns matches and groups (capped sizes).1 finding
Why it is in this group
- The description's first verb is "run": 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 "regex-test" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Description, as the server wrote it Runs a JavaScript regex over sample text and returns matches and groups (capped sizes). Returns { count, matches }: up to 100 matches, each { match, index, groups }. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
semverSorts versions by SemVer 2.0 precedence, returns the latest stable and pre-release, and the next major, minor and patch.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 Sorts versions by SemVer 2.0 precedence, returns the latest stable and pre-release, and the next major, minor and patch. Returns { sorted, latest_stable, latest, invalid, next: { major, minor, patch, from } } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
sentimentPositive, negative or neutral, with a score from -1 to 1, from a sentiment classifier over up to 8,000 characters.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 Positive, negative or neutral, with a score from -1 to 1, from a sentiment classifier over up to 8,000 characters. Returns { label, score, positive, negative, chunks }: label is positive, negative or neutral (below 0.6 confidence); score is positive minus negative. Price: 10 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
seo-auditAudits a live page: title and description length, H1s, canonical, robots, lang, viewport, image alts, structured data and links, scored 0-100.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 Audits a live page: title and description length, H1s, canonical, robots, lang, viewport, image alts, structured data and links, scored 0-100. Returns { url, status, score, title, description, h1_count, images, images_missing_alt, links, checks: [{ id, pass, weight }] } Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
similarityRanks up to 15 candidate texts by cosine similarity to a query, using @cf/baai/bge-base-en-v1.5 embeddings.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 Ranks up to 15 candidate texts by cosine similarity to a query, using @cf/baai/bge-base-en-v1.5 embeddings. Returns { model, ranked: [{ index, score }] (highest first), scores: number[] (input order) } Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
slash-command-scaffoldWrites a ready-to-save Claude Code slash command file with frontmatter, $ARGUMENTS and a step outline.1 finding
Why it is in this group
- The description's first verb is "write": 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 "slash-command-scaffold" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
Description, as the server wrote it Writes a ready-to-save Claude Code slash command file with frontmatter, $ARGUMENTS and a step outline. Returns { path, content, usage }: save content at path (.claude/commands/<name>.md). Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
sql-explainExplains a SQL query step by step and flags performance and safety risks, with index suggestions.1 finding
Why it is in this group
- The name "sql-explain" says "explain": a word for reading.
- The input takes a statement or command to run (input.sql), 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 "sql-explain" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "sql-explain" says "explain": a word for reading.
Description, as the server wrote it Explains a SQL query step by step and flags performance and safety risks, with index suggestions. Returns { summary, steps, risks, index_suggestions } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
text-statsWord, sentence and character counts, reading time and a Flesch reading-ease score.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 Word, sentence and character counts, reading time and a Flesch reading-ease score. Returns { characters, words, sentences, readingMinutes, fleschReadingEase }. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
tool-schemaBuilds ready-to-paste tool definitions for Anthropic, OpenAI and MCP from a compact parameter spec.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 Builds ready-to-paste tool definitions for Anthropic, OpenAI and MCP from a compact parameter spec. Returns { anthropic, openai, mcp } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
translateTranslates text between languages; defaults to English to French for NS/NB customers.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 Translates text between languages; defaults to English to French for NS/NB customers. Returns { translated, source, target }: the translated text and the language pair used. Price: 4 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
uptime-checkOne HTTPS probe of a public domain: status, latency and whether it looks up.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 One HTTPS probe of a public domain: status, latency and whether it looks up. Returns { domain, up, status, ms }: up is true for any status below 500; status is null when the host does not answer. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
url-parseSplits a URL into scheme, host, port, path segments, query (repeated keys as arrays) and fragment, with warnings for credentials, plain http and punycode.Can send data out1 finding
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.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...arrays) and fragment, with warnings for credentials, plain http and punycode. Passwords are..."
Description, as the server wrote it Splits a URL into scheme, host, port, path segments, query (repeated keys as arrays) and fragment, with warnings for credentials, plain http and punycode. Passwords are never echoed. Returns { href, protocol, username, hasPassword, hostname, port, pathname, pathSegments, query, hash, origin, isIp, warnings } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
user-agent-parseIdentifies browser, engine, OS, device class and known crawlers, AI bots and HTTP clients from a User-Agent string.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 Identifies browser, engine, OS, device class and known crawlers, AI bots and HTTP clients from a User-Agent string. Rule-based; user agents can be spoofed. Returns { browser: { name, version }, engine, os: { name, version }, device, isBot, bot } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
uuidGenerates 1 to 100 random v4 or time-ordered v7 UUIDs (RFC 9562) from Web Crypto.1 finding
Why it is in this group
- The description's first verb is "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 "uuid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it Generates 1 to 100 random v4 or time-ordered v7 UUIDs (RFC 9562) from Web Crypto. Returns { version, uuids: string[] } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
web-contentsClean text of up to 5 public pages, capped per page, for agents to read.Reads text others writeCan 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a URL (input.urls): a request to a URL can carry data to whoever runs it.
Description, as the server wrote it Clean text of up to 5 public pages, capped per page, for agents to read. Returns { results: [{ url, title, publishedDate, text, characters }] }: one entry per page the provider could read. Price: 6 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
web-extractScrapes a public page and fills your flat schema (up to 20 typed fields) from it.Reads text others writeCan 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "scrape": it reads web pages, which anyone can write.
- 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 Scrapes a public page and fills your flat schema (up to 20 typed fields) from it. Values are type-checked. Returns { url, finalUrl, title, data, missing }: one value per field (typed, or null when the page does not say) and the required fields that came back null. Price: 10 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
web-mapDiscovers the URLs of a public site (up to 200), optionally ranked by a search term.Reads text others writeCan 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- 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 Discovers the URLs of a public site (up to 200), optionally ranked by a search term. Returns { url, count, links }: up to 200 unique public URLs. Price: 6 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
web-scrapeMain content of one public page as Markdown (up to 50,000 characters), with title and status.Reads text others writeCan 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
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe name "web-scrape" says "scrape": it reads web pages, which anyone can write.
- 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 Main content of one public page as Markdown (up to 50,000 characters), with title and status. Returns { url, finalUrl, title, description, statusCode, markdown, characters, truncated }. Price: 7 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
webhook-verifyVerifies Stripe, GitHub, Slack, Shopify or generic HMAC-SHA256 webhook signatures exactly as the provider computes them, with timestamp tolerance.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 Verifies Stripe, GitHub, Slack, Shopify or generic HMAC-SHA256 webhook signatures exactly as the provider computes them, with timestamp tolerance. Returns { provider, valid, timestamp?, age_s?, within_tolerance? } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
wrangler-lintLints a wrangler.jsonc or wrangler.toml: name, entry point, compatibility date, secrets left in vars, routes.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 Lints a wrangler.jsonc or wrangler.toml: name, entry point, compatibility date, secrets left in vars, routes. Returns { ok, format, findings[{ severity: error|warning|info, code, path, message }] and counts { error, warning, info } }. Values are never echoed, only paths. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
Only reads 17Show 17 read-only tools
cron-explainExplains a 5-field cron expression in plain English (UTC, as Cloudflare runs it).No findings
Why it is in this group
- The name "cron-explain" says "explain": a word for reading.
Description, as the server wrote it Explains a 5-field cron expression in plain English (UTC, as Cloudflare runs it). Returns { cron, explanation }: the expression and a plain-English reading of it. Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
dataset-validateChecks chat (OpenAI-style), messages (Anthropic-style) or Alpaca JSONL: per-line errors, role order, empty turns, duplicates, token estimates and a training-cost estimate from your…No findings
Why it is in this group
- The name "dataset-validate" says "validate": a word for reading.
Description, as the server wrote it Checks chat (OpenAI-style), messages (Anthropic-style) or Alpaca JSONL: per-line errors, role order, empty turns, duplicates, token estimates and a training-cost estimate from your price. Returns { format, lines, valid, invalid, ok, errors: [{ line, code, message }] (first 100), errorCount, errorsTruncated, duplicates: [{ line, firstLine }], duplicateCount, tokens: { total, mean, max }, costEstimate } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
dns-lookupA, AAAA, MX, NS and TXT records for a domain over DNS-over-HTTPS.Reads text others writeNo findings
Why it is in this group
- The name "dns-lookup" says "lookup": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "http": it reads web pages, which anyone can write.
Description, as the server wrote it A, AAAA, MX, NS and TXT records for a domain over DNS-over-HTTPS. Returns { domain, records: { A, AAAA, MX, NS, TXT } }: each record type as a list of strings. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
find-similarPages similar in meaning to a given public URL, with highlights.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "find-similar" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
- untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Claude Code: ask, because it is tagged outbound.
Description, as the server wrote it Pages similar in meaning to a given public URL, with highlights. Up to 10 results. Returns { url, results: [{ title, url, publishedDate, score, highlights }] }. Price: 8 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
hooks-validateValidates a Claude Code hooks block (or a whole settings.json): events, matchers, hook types, timeouts and risky commands.No findings
Why it is in this group
- The name "hooks-validate" says "validate": a word for reading.
Description, as the server wrote it Validates a Claude Code hooks block (or a whole settings.json): events, matchers, hook types, timeouts and risky commands. Returns { ok, events, hookCount, findings[{ severity: error|warning|info, code, path, message }] and counts { error, warning, info } }. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
http-statusName, meaning, class, retryability and default cacheability of an HTTP status code, including Cloudflare's 52x codes.Reads text others writeNo findings
Why it is in this group
- The name "http-status" says "status": a word for reading.
What it can reach
- untrusted-inputThe name "http-status" says "status" and "http": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "http": it reads web pages, which anyone can write.
Description, as the server wrote it Name, meaning, class, retryability and default cacheability of an HTTP status code, including Cloudflare's 52x codes. Returns { code, name, meaning, class, known, retryable, cacheableByDefault } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
json-validateValidates a JSON value against a JSON-Schema subset and lists every error path.No findings
Why it is in this group
- The name "json-validate" says "validate": a word for reading.
Description, as the server wrote it Validates a JSON value against a JSON-Schema subset and lists every error path. Returns { valid, errors }: true when the value matches, and one message per error path (up to 50). Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
mcp-config-validateValidates a Claude Code .mcp.json: transports, commands, URLs, headers and env, and flags literal secrets by path.1 finding
Why it is in this group
- The name "mcp-config-validate" says "validate": a word for reading.
Findings
- High
The description refers to ".mcp.json".
What this check looks forMatched text
description: "Validates a Claude Code .mcp.json: transports, commands, URLs, headers an..."
Description, as the server wrote it Validates a Claude Code .mcp.json: transports, commands, URLs, headers and env, and flags literal secrets by path. Returns { ok, servers[{ name, transport }], findings[{ severity: error|warning|info, code, path, message }] and counts { error, warning, info } }. Values are never echoed. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
og-previewFetches a public page (first 512 KB) and returns its link-preview metadata: title, description, image, Open Graph and Twitter tags, canonical URL, icons and missing tags.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "og-preview" says "preview": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "fetch" and "url": it reads web pages, which anyone can write.
- untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Claude Code: ask, because it is tagged outbound.
Description, as the server wrote it Fetches a public page (first 512 KB) and returns its link-preview metadata: title, description, image, Open Graph and Twitter tags, canonical URL, icons and missing tags. Returns { url, finalUrl, status, title, description, image, siteName, canonical, icons, lang, og, twitter, missing, truncated } Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
page-markdownFetches a public page and returns clean, LLM-ready Markdown of the main content, with title, word and link counts.Reads text others writeCan send data outNo findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
What it can reach
- untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Claude Code: ask, because it is tagged outbound.
Description, as the server wrote it Fetches a public page and returns clean, LLM-ready Markdown of the main content, with title, word and link counts. No third-party scraper. Returns { url, title, words, links, truncated, markdown } Price: 3 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
rdap-lookupModern WHOIS over RDAP: registrar, creation and expiry dates, days to expiry, status codes, nameservers and DNSSEC.No findings
Why it is in this group
- The name "rdap-lookup" says "lookup": a word for reading.
Description, as the server wrote it Modern WHOIS over RDAP: registrar, creation and expiry dates, days to expiry, status codes, nameservers and DNSSEC. Returns { domain, registrar, created, updated, expires, days_to_expiry, status, nameservers, dnssec } Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
robots-checkReads a site's robots.txt and says whether a crawler may fetch a path, with the matching rule, the major AI crawlers' access and the sitemaps.Reads text others writeCan send data outNo findings
Why it is in this group
- The description's first verb is "read": a word for reading.
What it can reach
- untrusted-inputThe input takes a URL (input.url), and the tool reads it: it reads web pages, which anyone can write.
- outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
Claude Code: ask, because it is tagged outbound.
Description, as the server wrote it Reads a site's robots.txt and says whether a crawler may fetch a path, with the matching rule, the major AI crawlers' access and the sitemaps. Returns { robots_url, robots_status, agent, path, allowed, rule, ai_crawlers, sitemaps } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
security-txtFetches /.well-known/security.txt and reports Contact and Expires (RFC 9116).Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
What it can reach
- private-dataThe description's first sentence says "fetch" and "contact": it reads contacts.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Fetches /.well-known/security.txt and reports Contact and Expires (RFC 9116). Returns { domain, present, hasContact, expires, expired }: whether security.txt exists, has a Contact and has expired. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
summarizeThree-bullet summary of up to 8,000 characters.No findings
Why it is in this group
- The name "summarize" says "summarize": a word for reading.
Description, as the server wrote it Three-bullet summary of up to 8,000 characters. Input is PII-redacted first. Returns { summary }: up to three short bullet points as one string. Price: 4 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
text-diffLine-by-line diff of two texts (up to 500 lines each).No findings
Why it is in this group
- The name "text-diff" says "diff": a word for reading.
Description, as the server wrote it Line-by-line diff of two texts (up to 500 lines each). Returns { added, removed, diff }: line counts and the diff lines prefixed with space, - or +. Price: 2 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
token-countEstimated token counts for cl100k-like, o200k-like, Claude-like and Llama-like tokenizers plus a char/4 baseline.No findings
Why it is in this group
- The name "token-count" says "count": a word for reading.
Description, as the server wrote it Estimated token counts for cl100k-like, o200k-like, Claude-like and Llama-like tokenizers plus a char/4 baseline. Deterministic estimates, not exact counts. Returns { estimates: { cl100k, o200k, claude, llama, char4 }, chars, bytes, pieces, method, exact: false } Price: 1 credit (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
web-searchNeural or keyword web search with highlights, for agents.Reads text others writeNo findings
Why it is in this group
- The name "web-search" says "search": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe name "web-search" says "search" and "web": it reads web pages, which anyone can write.
- untrusted-inputThe description's first sentence says "web": it reads web pages, which anyone can write.
Description, as the server wrote it Neural or keyword web search with highlights, for agents. Up to 10 results, public URLs only. Returns { query, results: [{ title, url, publishedDate, score, highlights }] }: up to 10 results, each with up to 3 highlights of 500 characters. Price: 8 credits (1 credit = 1 CAD cent) per successful call; input that does not match the schema is rejected before billing.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
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.
238 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 private-data tool breaks every one.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write17
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out14
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__highland-apis__security-txt"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
The description refers to ".mcp.json".
What this check looks forMatched text
description: "Validates a Claude Code .mcp.json: transports, commands, URLs, headers an..."
- Warnregex-test
The server marks "regex-test" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
- Warnhst-calc
The server marks "hst-calc" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.
The server marks "slash-command-scaffold" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
- Warndataset-convert
The server marks "dataset-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "dataset-convert" says "convert": a word for a change.
- Warnuuid
The server marks "uuid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Show 10 more findingsShow fewer
- Warncors-check
The server marks "cors-check" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
- Warncode-review
The server marks "code-review" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.
- Warncommit-message
The server marks "commit-message" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "commit-message" says "commit": a word for a change.
The server marks "regex-from-english" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.
- Warnsql-explain
The server marks "sql-explain" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "sql-explain" says "explain": a word for reading.
- Warncurl-to-code
The server marks "curl-to-code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnmock-response
The server marks "mock-response" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Infourl-parse
The description mentions "credentials".
What this check looks forMatched text
description: "...arrays) and fragment, with warnings for credentials, plain http and punycode. Passwords are..."
- Infocors-check
The description mentions "credentials".
What this check looks forMatched text
description: "...r non-simple methods, custom headers or credentials) to a public URL and reports the Access..."
- Infocors-check
The input schema at properties.credentials.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.credentials.description: "Whether the call sends cookies or auth (credentials: include)."
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http highland-apis https://api.highlnd-intel.group/mcpclaude mcp add --transport http highland-apis https://api.highlnd-intel.group/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": [
"mcp__highland-apis__dns-lookup",
"mcp__highland-apis__security-txt",
"mcp__highland-apis__summarize",
"mcp__highland-apis__json-validate",
"mcp__highland-apis__cron-explain",
"mcp__highland-apis__text-diff",
"mcp__highland-apis__web-search",
"mcp__highland-apis__mcp-config-validate",
"mcp__highland-apis__hooks-validate",
"mcp__highland-apis__token-count",
"mcp__highland-apis__dataset-validate",
"mcp__highland-apis__http-status",
"mcp__highland-apis__rdap-lookup"
],
"ask": [
"mcp__highland-apis__mail-auth",
"mcp__highland-apis__header-audit",
"mcp__highland-apis__https-redirect",
"mcp__highland-apis__classify",
"mcp__highland-apis__translate",
"mcp__highland-apis__pii-redact",
"mcp__highland-apis__text-stats",
"mcp__highland-apis__regex-test",
"mcp__highland-apis__hash",
"mcp__highland-apis__hst-calc",
"mcp__highland-apis__quote-build",
"mcp__highland-apis__invoice-number",
"mcp__highland-apis__uptime-check",
"mcp__highland-apis__web-contents",
"mcp__highland-apis__find-similar",
"mcp__highland-apis__web-scrape",
"mcp__highland-apis__web-map",
"mcp__highland-apis__web-extract",
"mcp__highland-apis__enrich-url",
"mcp__highland-apis__enrich-company",
"mcp__highland-apis__entity-extract",
"mcp__highland-apis__keywords",
"mcp__highland-apis__sentiment",
"mcp__highland-apis__cf-ip-check",
"mcp__highland-apis__wrangler-lint",
"mcp__highland-apis__cron-to-cf",
"mcp__highland-apis__claude-md-lint",
"mcp__highland-apis__slash-command-scaffold",
"mcp__highland-apis__chunk-text",
"mcp__highland-apis__dataset-convert",
"mcp__highland-apis__dataset-split",
"mcp__highland-apis__embed",
"mcp__highland-apis__similarity",
"mcp__highland-apis__prompt-lint",
"mcp__highland-apis__jwt-decode",
"mcp__highland-apis__url-parse",
"mcp__highland-apis__base64",
"mcp__highland-apis__uuid",
"mcp__highland-apis__user-agent-parse",
"mcp__highland-apis__cors-check",
"mcp__highland-apis__openapi-lint",
"mcp__highland-apis__og-preview",
"mcp__highland-apis__code-review",
"mcp__highland-apis__commit-message",
"mcp__highland-apis__regex-from-english",
"mcp__highland-apis__sql-explain",
"mcp__highland-apis__semver",
"mcp__highland-apis__page-markdown",
"mcp__highland-apis__json-extract",
"mcp__highland-apis__tool-schema",
"mcp__highland-apis__prompt-inject-scan",
"mcp__highland-apis__seo-audit",
"mcp__highland-apis__contrast-check",
"mcp__highland-apis__robots-check",
"mcp__highland-apis__webhook-verify",
"mcp__highland-apis__curl-to-code",
"mcp__highland-apis__mock-response"
],
"deny": []
}
}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 highland-apis. Review it before you use it.
Capability tags behind 22 rules
- mcp__highland-apis__dns-lookup untrusted-input
- mcp__highland-apis__mail-auth untrusted-input
- mcp__highland-apis__header-audit untrusted-input
- mcp__highland-apis__https-redirect untrusted-input
- mcp__highland-apis__security-txt private-data, untrusted-input
- mcp__highland-apis__web-search untrusted-input
- mcp__highland-apis__web-contents untrusted-input, outbound
- mcp__highland-apis__find-similar untrusted-input, outbound
- mcp__highland-apis__web-scrape untrusted-input, outbound
- mcp__highland-apis__web-map untrusted-input, outbound
- mcp__highland-apis__web-extract untrusted-input, outbound
- mcp__highland-apis__enrich-url untrusted-input, outbound
- mcp__highland-apis__enrich-company untrusted-input
- mcp__highland-apis__dataset-convert outbound
- mcp__highland-apis__url-parse outbound
- mcp__highland-apis__cors-check outbound
- mcp__highland-apis__http-status untrusted-input
- mcp__highland-apis__og-preview untrusted-input, outbound
- mcp__highland-apis__commit-message outbound
- mcp__highland-apis__page-markdown untrusted-input, outbound
- mcp__highland-apis__seo-audit outbound
- mcp__highland-apis__robots-check untrusted-input, outbound
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/group.highlnd-intel/highland-apis/verify?hash=70bd3ea6637b108abf526005c7ccac8c9831a41c3f341eddc5649e5f9ded893f" | jq -e '.changed == false'Pinned hash 70bd3ea6637b, from Oct 28, 2026, 08:17 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/group.highlnd-intel/highland-apis/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/group.highlnd-intel/highland-apis)Source: MCP Registry. Synced Oct 28, 2026, 08:17 UTC.