Skip to content

Heffl Free Tools

by heffl.com · remote · no sign-in to list tools · v1.1.0 · published by com.heffl

Free email verification, business calculators, UAE estimates and drafts. No API key.

Changes · 14

15 tools: 14 change things and 1 only read.

Scanned Oct 21, 2026

5 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http free-tools https://api.heffl.com/api/public-tools/mcp

Findings

Matches of fixed checks, with the text they matched.

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

    Matched text

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

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

    Matched text

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

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "quotation_generate" says "generate": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "sow_generate" says "generate": a word for a change.

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "whatsapp_generate" says "generate": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

15 tools

Changes things 14Claude Code: ask
  • agency_pricingCalculate project price from labor, overhead and risk buffer.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
    Calculate project price from labor, overhead and risk buffer. margin is percentage of selling price; overhead and riskBuffer are percentage additions. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Agency pricing and profitability
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • coaching_agreementGenerate the website's coaching agreement as plain text.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 "coaching_agreement" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":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
    Generate the website's coaching agreement as plain text. Missing text fields use placeholders. Draft only; legal review may be needed. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Coaching agreement template
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • email_verifyCheck one email's syntax, mail routing, disposable/free-provider/role flags, and SMTP recipient acceptance.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check one email's syntax, mail routing, disposable/free-provider/role flags, and SMTP recipient acceptance. Sends no email. DNS alone does not verify a mailbox. unknown means inconclusive or mailbox not checked; likely_deliverable is evidence, not a delivery guarantee. No login or API key required. Rate limited.

    Annotations the server declares

    • title: Verify an email address
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • freelance_rateCalculate sustainable rates.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
    Calculate sustainable rates. margin is a percentage buffer added to annual income plus overhead, matching the website. All money must use the same currency. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Freelance hourly and day rates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • photography_pricingCalculate session price, costs, profit and per-photo price.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
    Calculate session price, costs, profit and per-photo price. Margin is a percentage of selling price; currency-neutral, no conversion. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Photography pricing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • quotation_generateGenerate quotation JSON and plain-text draft with percentage discounts per item and tax on discounted amounts.1 finding

    Why it is in this group

    • The name "quotation_generate" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "quotation_generate" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate quotation JSON and plain-text draft with percentage discounts per item and tax on discounted amounts. Does not save, send, or render PDF; website provides visual export. Currency is a label, no FX conversion. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Quotation document data
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • retainer_agreementGenerate the website's monthly retainer agreement as plain text.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 "retainer_agreement" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":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
    Generate the website's monthly retainer agreement as plain text. Missing text fields use placeholders. Draft only; legal review may be needed. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Retainer agreement template
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • risk_assessmentScore user-supplied risks using likelihood × impact (1–5).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
    Score user-supplied risks using likelihood × impact (1–5). Low <=6, medium <=14, high >=15. Does not infer likelihood or impact. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Project risk assessment
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sow_generateGenerate a scope-of-work draft using the existing Heffl DeepSeek service.1 finding

    Why it is in this group

    • The name "sow_generate" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "sow_generate" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a scope-of-work draft using the existing Heffl DeepSeek service. Returns untrusted HTML, not legal advice. Drafts may infer details; verify before use. Provider configuration required server-side. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: AI scope of work draft
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • uae_corporate_taxEstimate standard UAE corporate tax on already-adjusted taxable income in AED: 0% up to 375000 and 9% above.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
    Estimate standard UAE corporate tax on already-adjusted taxable income in AED: 0% up to 375000 and 9% above. Does not determine deductions, free-zone rules, relief or multinational minimum tax. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: UAE corporate tax estimate
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • uae_gratuityAED estimate for covered private-sector full-time foreign workers using monthly basic salary, at least one year service, 21 days for first five years then 30; capped at 24 months b…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
    AED estimate for covered private-sector full-time foreign workers using monthly basic salary, at least one year service, 21 days for first five years then 30; capped at 24 months basic salary. Assumes continuous service without unpaid leave; no deductions or alternative schemes assessed. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: UAE end-of-service gratuity estimate
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • uae_real_estate_vatEstimate VAT on ordinary commercial/residential property in AED, not transfer fees.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
    Estimate VAT on ordinary commercial/residential property in AED, not transfer fees. Residential zero-rating requires FIRST supply within three years of completion; other residential supply exempt. No mixed-use or specialist properties. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: UAE property VAT estimate
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • uae_vatEstimate standard 5% UAE VAT in AED, inclusive or exclusive.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
    Estimate standard 5% UAE VAT in AED, inclusive or exclusive. Does not classify exempt or zero-rated supplies. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: UAE VAT estimate
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • whatsapp_generateGenerate a business WhatsApp message draft using Heffl's DeepSeek service.1 finding

    Why it is in this group

    • The name "whatsapp_generate" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "whatsapp_generate" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a business WhatsApp message draft using Heffl's DeepSeek service. Only drafts text; never sends messages. Provider configuration required server-side. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: AI WhatsApp message draft
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 1Claude Code: allow
  • business_daysCount weekdays between dates or add/subtract days.No findings

    Why it is in this group

    • The description's first verb is "count": a word for reading.
    Description, as the server wrote it
    Count weekdays between dates or add/subtract days. UTC dates, Monday–Friday; start included and end excluded unless includeEnd. Offset excludes start. Public holidays are not excluded. Free, no authentication required. Rate limited.

    Annotations the server declares

    • title: Business days and date offsets
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http free-tools https://api.heffl.com/api/public-tools/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__free-tools__business_days"
    ],
    "ask": [
      "mcp__free-tools__email_verify",
      "mcp__free-tools__photography_pricing",
      "mcp__free-tools__freelance_rate",
      "mcp__free-tools__agency_pricing",
      "mcp__free-tools__risk_assessment",
      "mcp__free-tools__coaching_agreement",
      "mcp__free-tools__retainer_agreement",
      "mcp__free-tools__uae_vat",
      "mcp__free-tools__uae_corporate_tax",
      "mcp__free-tools__uae_gratuity",
      "mcp__free-tools__uae_real_estate_vat",
      "mcp__free-tools__quotation_generate",
      "mcp__free-tools__sow_generate",
      "mcp__free-tools__whatsapp_generate"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as free-tools. Review it before you use it.