Koskamo

EosLog Free Tools MCP

A public, stateless MCP server by EosLog that generates quote and invoice PDFs and answers pricing and compliance questions for US service businesses without requiring authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

EosLog Free Tools MCP logo, by EosLogVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by EosLog
MCP endpoint (Streamable HTTP)
https://eoslog.com/mcp/free
Vendor documentation

What you can do with it

  • Generate quote PDFs from line items
  • Generate invoice PDFs from line items
  • Estimate house cleaning prices
  • Check cleaning sales tax rules by state

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
EosLog Free Tools 1.1.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

EosLog Free Tools make quotes and invoices and answer pricing and compliance questions for small US service businesses with EosLog's own sourced data. No account or sign-in is needed. - estimate_house_cleaning_price prices a residential cleaning with the same math as EosLog's free cleaning price calculator. Prices are estimates: tell the user they can change any input (hourly rate, square footage, market, add-ons) in the linked calculator. - create_quote_pdf and create_invoice_pdf make a PDF from the business name, customer and line items the user gives, and save it behind an unguessable link for 90 days. Use the user's own prices; if a price is missing, ask for it rather than guessing. Anyone with the link can open the document. - cleaning_sales_tax_by_state says whether home and commercial cleaning are taxable in a state, as that state's own official pages say, with the date the sources were checked. It is not tax advice and does not cover local taxes; say so. - gas_leaf_blower_rules lists adopted local gas leaf blower bans and limits with effective dates and official sources. No row does not prove there is no rule. - find_free_tool returns the right free EosLog quote or invoice generator, price calculator or contract template. Every successful result includes an https://eoslog.com link. Include the link so the user can open the document or the free tool.

Tools

6 advertised

estimate_house_cleaning_price — Estimate a house cleaning price
Advertised by the server during the last successful anonymous check.
Advertised read-only

Prices one residential house cleaning visit with the math behind EosLog's free cleaning price calculator: time on site from the home's size and square footage, times a frequency factor and the cleaner's hourly rate, plus supplies, drive and add-ons, adjusted for the local market and rounded to $5. Returns the price, a low to high range, hours on site, a per square foot cross-check, the math, and a link that opens the calculator with these inputs so the user can adjust them. Every input is optional and has the calculator's default.

estimate_house_cleaning_price input schema
{
  "type": "object",
  "properties": {
    "size": {
      "enum": [
        "1br1ba",
        "2br1ba",
        "2br2ba",
        "3br2ba",
        "4br2ba",
        "4br3ba",
        "5br3ba",
        "5br4ba",
        "6br4ba",
        "6br5ba",
        "7br5ba"
      ],
      "type": "string",
      "default": "2br1ba",
      "description": "Bedrooms and bathrooms, for example 3br2ba for 3 bedrooms and 2 bathrooms."
    },
    "sqft": {
      "type": "integer",
      "maximum": 10000,
      "minimum": 300,
      "description": "Square footage. Defaults to the typical size for the layout (1,600 for 3br2ba)."
    },
    "addons": {
      "type": "array",
      "items": {
        "enum": [
          "pets",
          "kids",
          "oven",
          "fridge",
          "trash",
          "laundry"
        ],
        "type": "string"
      },
      "maxItems": 6,
      "description": "Extras that apply: pets (+$15), kids under 10 (+$20), oven inside (+$35), fridge inside (+$30), trash takeout (+$10), laundry, one load washed and folded (+$20).",
      "uniqueItems": true
    },
    "market": {
      "enum": [
        "rural",
        "standard",
        "coastal"
      ],
      "type": "string",
      "default": "standard",
      "description": "rural (0.80x), standard for most US metros (1.00x), or coastal for a high-cost coastal metro (1.30x)."
    },
    "frequency": {
      "enum": [
        "weekly",
        "biweekly",
        "monthly",
        "deep",
        "moveout"
      ],
      "type": "string",
      "default": "biweekly",
      "description": "How often the home is cleaned. deep is a first or one-time deep clean; moveout is a one-time move-out clean."
    },
    "hourly_rate": {
      "type": "integer",
      "default": 40,
      "maximum": 120,
      "minimum": 20,
      "description": "What the cleaner bills per cleaner-hour, in US dollars."
    }
  }
}
estimate_house_cleaning_price annotations
{
  "title": "Estimate a house cleaning price",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_quote_pdf — Create a quote PDF
Advertised by the server during the last successful anonymous check.
Open-world

Makes a professional quote (estimate) PDF for a small service business from the details the user gives: the business name, the customer, and each line item's name, quantity and price, plus an optional tax rate, discount, deposit, note and how many days the quote stays valid. EosLog adds up the subtotal, discount, tax and total, saves the quote behind an unguessable link for 90 days, and returns that link (view, download or email the PDF) and a direct PDF link. Use it when the user wants a quote or estimate to send a customer. It uses the user's prices and never sets them.

create_quote_pdf input schema
{
  "type": "object",
  "required": [
    "business_name",
    "line_items"
  ],
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 150,
      "description": "Optional subject line, for example Biweekly house cleaning."
    },
    "message": {
      "type": "string",
      "maxLength": 1000,
      "description": "Optional note to the customer."
    },
    "tax_rate": {
      "type": "number",
      "default": 0,
      "maximum": 25,
      "minimum": 0,
      "description": "Sales tax percent on the subtotal after any discount, for example 8.25. The user supplies it."
    },
    "line_items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "unit_price"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "description": "What the line is for."
          },
          "quantity": {
            "type": "number",
            "default": 1,
            "maximum": 10000,
            "minimum": 0.01,
            "description": "Units, hours or visits."
          },
          "unit_price": {
            "type": "number",
            "maximum": 1000000,
            "minimum": 0,
            "description": "Price per unit in US dollars."
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "description": "Optional detail under the name."
          }
        }
      },
      "maxItems": 25,
      "minItems": 1,
      "description": "One row per service or item, with the prices the user gives."
    },
    "valid_days": {
      "type": "integer",
      "default": 30,
      "maximum": 365,
      "minimum": 1,
      "description": "How many days the quote stays valid."
    },
    "business_name": {
      "type": "string",
      "maxLength": 100,
      "description": "The business sending the document, as it should print at the top."
    },
    "customer_name": {
      "type": "string",
      "maxLength": 100,
      "description": "Who the document is for, a person or a company. Printed as Customer when left out."
    },
    "business_email": {
      "type": "string",
      "maxLength": 120,
      "description": "Business email to print on it."
    },
    "business_phone": {
      "type": "string",
      "maxLength": 30,
      "description": "Business phone to print on it."
    },
    "deposit_percent": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Optional deposit to schedule the job, as a percent of the total."
    },
    "discount_percent": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Optional discount, as a percent off the subtotal."
    }
  }
}
create_quote_pdf annotations
{
  "title": "Create a quote PDF",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
create_invoice_pdf — Create an invoice PDF
Advertised by the server during the last successful anonymous check.
Open-world

Makes a professional invoice PDF for a small service business from the details the user gives: the business name, the customer, and each line item's name, quantity and price, plus an optional tax rate, discount, payment terms, service date, invoice number and note. EosLog adds up the subtotal, discount, tax and total due, sets the due date from the payment terms, saves the invoice behind an unguessable link for 90 days, and returns that link (view, download or email the PDF) and a direct PDF link. Use it when the user wants an invoice to send a customer. It uses the user's prices and never sets them.

create_invoice_pdf input schema
{
  "type": "object",
  "required": [
    "business_name",
    "line_items"
  ],
  "properties": {
    "notes": {
      "type": "string",
      "maxLength": 1000,
      "description": "Optional note, such as how to pay."
    },
    "tax_rate": {
      "type": "number",
      "default": 0,
      "maximum": 25,
      "minimum": 0,
      "description": "Sales tax percent on the subtotal after any discount, for example 8.25. The user supplies it."
    },
    "line_items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "unit_price"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "description": "What the line is for."
          },
          "quantity": {
            "type": "number",
            "default": 1,
            "maximum": 10000,
            "minimum": 0.01,
            "description": "Units, hours or visits."
          },
          "unit_price": {
            "type": "number",
            "maximum": 1000000,
            "minimum": 0,
            "description": "Price per unit in US dollars."
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "description": "Optional detail under the name."
          }
        }
      },
      "maxItems": 25,
      "minItems": 1,
      "description": "One row per service or item, with the prices the user gives."
    },
    "service_date": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional date or period of the work, as text, for example October 2026 or 10/1 to 10/15."
    },
    "business_name": {
      "type": "string",
      "maxLength": 100,
      "description": "The business sending the document, as it should print at the top."
    },
    "customer_name": {
      "type": "string",
      "maxLength": 100,
      "description": "Who the document is for, a person or a company. Printed as Customer when left out."
    },
    "payment_terms": {
      "enum": [
        "upon_receipt",
        "net_15",
        "net_30",
        "net_45"
      ],
      "type": "string",
      "default": "upon_receipt",
      "description": "When payment is due: on receipt, or 15, 30 or 45 days after the invoice date."
    },
    "business_email": {
      "type": "string",
      "maxLength": 120,
      "description": "Business email to print on it."
    },
    "business_phone": {
      "type": "string",
      "maxLength": 30,
      "description": "Business phone to print on it."
    },
    "invoice_number": {
      "type": "string",
      "maxLength": 40,
      "description": "Optional invoice number. One based on the date and time is used when left out."
    },
    "discount_percent": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Optional discount, as a percent off the subtotal."
    }
  }
}
create_invoice_pdf annotations
{
  "title": "Create an invoice PDF",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
cleaning_sales_tax_by_state — Check if cleaning is taxable in a state
Advertised by the server during the last successful anonymous check.
Advertised read-only

Says whether state sales tax (or the state's equivalent) applies to home (residential) and commercial cleaning services in one US state or DC, from EosLog's state by state reference. Each answer is what that state's own official pages say, with the official source links, the state base rate where the source states one, and the date it was checked. It is not tax advice and does not cover local taxes.

cleaning_sales_tax_by_state input schema
{
  "type": "object",
  "required": [
    "state"
  ],
  "properties": {
    "state": {
      "type": "string",
      "maxLength": 40,
      "minLength": 2,
      "description": "Two-letter code (TX) or full name (Texas). DC is included."
    },
    "audience": {
      "enum": [
        "home",
        "commercial",
        "both"
      ],
      "type": "string",
      "default": "both",
      "description": "home for residential cleaning, commercial for offices and other businesses, or both."
    }
  }
}
cleaning_sales_tax_by_state annotations
{
  "title": "Check if cleaning is taxable in a state",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
gas_leaf_blower_rules — Look up gas leaf blower rules
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists adopted local laws that ban or restrict gas leaf blowers in one US state, or one city or town in it, from EosLog's sourced table: the rule, when it took or takes effect and any later phases, who is cited, the penalty, and the official sources with the date each row was checked. Also reports a state law that blocks local bans (Florida, Georgia, Texas, Iowa, and Indiana). Without a city it lists every place in the state briefly; pass city for the full row. A place with no row may still have a rule EosLog has not confirmed.

gas_leaf_blower_rules input schema
{
  "type": "object",
  "required": [
    "state"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 100,
      "description": "Optional city, town, village or county name, for example Los Angeles."
    },
    "state": {
      "type": "string",
      "maxLength": 40,
      "minLength": 2,
      "description": "Two-letter code (CA) or full name (California). DC is included."
    }
  }
}
gas_leaf_blower_rules annotations
{
  "title": "Look up gas leaf blower rules",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_free_tool — Find a free EosLog tool
Advertised by the server during the last successful anonymous check.
Advertised read-only

Finds the free EosLog tool for a service business task: a quote or invoice generator (with a page for the trade where one exists), a price calculator for house, move-out, deep, commercial or Airbnb cleaning, pressure washing or landscaping (with the URL params that prefill it), or contract and form templates, filtered by trade when given. Returns titles and https://eoslog.com URLs. Every tool is free and needs no account.

find_free_tool input schema
{
  "type": "object",
  "required": [
    "need"
  ],
  "properties": {
    "need": {
      "enum": [
        "quote",
        "invoice",
        "house_cleaning_price",
        "move_out_cleaning_price",
        "deep_cleaning_price",
        "commercial_cleaning_bid",
        "airbnb_cleaning_price",
        "pressure_washing_price",
        "landscaping_price",
        "contract_or_form_template"
      ],
      "type": "string",
      "description": "What the user is trying to do."
    },
    "trade": {
      "enum": [
        "hvac",
        "plumbing",
        "electrical",
        "landscaping",
        "cleaning",
        "pest_control",
        "handyman",
        "property_management",
        "pressure_washing"
      ],
      "type": "string",
      "description": "Optional trade, used to pick trade pages and templates."
    }
  }
}
find_free_tool annotations
{
  "title": "Find a free EosLog tool",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
390 ms
95th percentile latency
390 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 390 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http eoslog-free-tools-mcp https://eoslog.com/mcp/free

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add eoslog-free-tools-mcp --url https://eoslog.com/mcp/free

Cursor

Merge this server into .cursor/mcp.json in your project, then enable eoslog-free-tools-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "eoslog-free-tools-mcp": {
      "url": "https://eoslog.com/mcp/free"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "eoslog-free-tools-mcp": {
      "type": "streamableHttp",
      "url": "https://eoslog.com/mcp/free",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start eoslog-free-tools-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "eoslog-free-tools-mcp": {
      "type": "http",
      "url": "https://eoslog.com/mcp/free"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http eoslog-free-tools-mcp https://eoslog.com/mcp/free

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "eoslog-free-tools-mcp": {
      "url": "https://eoslog.com/mcp/free"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "eoslog-free-tools-mcp": {
      "serverUrl": "https://eoslog.com/mcp/free"
    }
  }
}

Let your agent find its tools

Find servers like EosLog Free Tools MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run EosLog Free Tools MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing