Skip to content

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.

Tools: 0 delete, 2 irreversible, 51 write, 17 read.

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".

      Matched text

      description: "...r non-simple methods, custom headers or credentials) to a public URL and reports the Access..."

      What this check looks for
    • Info

      The input schema at properties.credentials.description mentions "credentials".

      Matched text

      inputSchema.properties.credentials.description: "Whether the call sends cookies or auth (credentials: include)."

      What this check looks for
    • Warn

      The server marks "cors-check" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched 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.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "dataset-convert" says "convert": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "commit-message" says "commit": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "sql-explain" says "explain": a word for reading.

      What this check looks for
    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".

      Matched text

      description: "...arrays) and fragment, with warnings for credentials, plain http and punycode. Passwords are..."

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    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".

      Matched text

      description: "Validates a Claude Code .mcp.json: transports, commands, URLs, headers an..."

      What this check looks for
    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

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.
deny to break every path
{
  "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.

1 high12 warn3 info
  • The description refers to ".mcp.json".

    Matched text

    description: "Validates a Claude Code .mcp.json: transports, commands, URLs, headers an..."

    What this check looks for
  • The server marks "regex-test" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

    What this check looks for
  • The server marks "hst-calc" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "add": a word for a change.

    What this check looks for
  • The server marks "slash-command-scaffold" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.

    What this check looks for
  • The server marks "dataset-convert" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "dataset-convert" says "convert": a word for a change.

    What this check looks for
  • Warnuuid

    The server marks "uuid" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
Show 10 more findings
  • The server marks "cors-check" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched 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.

    What this check looks for
  • The server marks "code-review" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.

    What this check looks for
  • The server marks "commit-message" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "commit-message" says "commit": a word for a change.

    What this check looks for
  • The server marks "regex-from-english" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "write": a word for a change.

    What this check looks for
  • The server marks "sql-explain" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The name "sql-explain" says "explain": a word for reading.

    What this check looks for
  • The server marks "curl-to-code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "mock-response" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...arrays) and fragment, with warnings for credentials, plain http and punycode. Passwords are..."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...r non-simple methods, custom headers or credentials) to a public URL and reports the Access..."

    What this check looks for
  • The input schema at properties.credentials.description mentions "credentials".

    Matched text

    inputSchema.properties.credentials.description: "Whether the call sends cookies or auth (credentials: include)."

    What this check looks for

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/mcp
claude mcp add --transport http highland-apis https://api.highlnd-intel.group/mcp

Run 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.

.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.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for group.highlnd-intel/highland-apis
[![anlyon.dev](https://anlyon.dev/badge/group.highlnd-intel/highland-apis.svg)](https://anlyon.dev/servers/group.highlnd-intel/highland-apis)

Source: MCP Registry. Synced Oct 28, 2026, 08:17 UTC.