API Tool Calls

API Tool Calls is Cowerx's set of public HTTP tools (home cost planners, QR and barcodes, page to Markdown, SEO checks, recalls, data finder and more) with 20 free calls a day per IP and no key; the same tools are offered through a remote MCP server at https://apitoolcalls.com/mcp.

GitHub OpenAPI

Operations 26

1 of 26 operations are conformant: apis.io called them with no credentials and the responses matched this contract. Checked 2026-11-12. how this works · status file

GET /api/basement-water #
GET /api/cite-url #
POST /api/company-facts #
GET /api/data-finder #
GET /api/driveway-cost #
GET /api/epoch-convert #
GET /api/ev-charger-installation-cost #
GET /api/fence-cost #
GET /api/flooring-cost #
GET /api/funeral-cost conformant #
GET /api/furnace_age #
GET /api/kitchen-remodel-cost #
GET /api/markdown #
GET /api/page-check #
GET /api/pickleball-court-cost #
GET /api/pole-barn-cost #
POST /api/proofread #
GET /api/recall-check #
POST /api/resume #
GET /api/roof_replacement_cost #
POST /api/run-loop #
GET /api/seo-check #
GET /api/transcript #
GET /api/water-softener-size #
GET /api/wheelchair-ramp #
GET /api/yard-drainage #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cowerx-dev:api-tool-calls"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cowerx-dev-api-tool-calls-openapi.yml Raw ↑
info:
  contact:
    name: Cowerx
    url: https://apitoolcalls.com/api/
  description: 'API Tool Calls: public HTTP tools with 20 free calls a day per IP with no key. Own-key tools also need the caller''s OpenRouter key. Free limits reset at midnight UTC; global and per-tool limits also apply. Citation lookups have a separate limit of 60 per IP per UTC hour.'
  title: API Tool Calls
  version: 1.0.0
openapi: 3.1.0
paths:
  /api/basement-water:
    get:
      description: Narrow down why a basement gets wet and who fixes it. Eight observation groups return every rule-matched possible cause, evidence, safe first checks, trade referrals and sources. Hazard stops come first; no probabilities or structural diagnosis. Pure rules, no network or model.
      operationId: basement_water_cause
      parameters:
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: hazard
        required: false
        schema:
          items:
            enum:
            - standing_water
            - sewage
            - electrical
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: timing
        required: false
        schema:
          items:
            enum:
            - rain
            - snowmelt
            - dry_weather
            - water_use
            - humid_summer
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: where
        required: false
        schema:
          items:
            enum:
            - wall_crack
            - wall_floor_joint
            - floor
            - window
            - overhead_pipe
            - floor_drain
            - crack_changing
            - wall_bowing
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: gutters
        required: false
        schema:
          items:
            enum:
            - overflowing
            - missing
            - downspout_near
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: grading
        required: false
        schema:
          items:
            enum:
            - slopes_toward
            - puddles
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: window_well
        required: false
        schema:
          items:
            enum:
            - debris
            - ponding
            - starts_at_window
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: sump
        required: false
        schema:
          items:
            enum:
            - none
            - power_lost
            - pit_filling_no_discharge
            - running
            - seepage_no_inflow
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      - description: Repeat for each observation code. Send unknown for unknown or none_observed for no observations. Supply at least one group.
        explode: true
        in: query
        name: moisture
        required: false
        schema:
          items:
            enum:
            - cold_surface_sweating
            - humid_air
            - indoor_sources
            - visible_drip
            - unknown
            - none_observed
            type: string
          minItems: 1
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/basement-water/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/cite-url:
    get:
      description: Read citation metadata from one public HTTP or HTTPS page.
      operationId: cite_url
      parameters:
      - in: query
        name: url
        required: true
        schema:
          description: Enter a public http or https page URL without login details (ports 80/443 only)
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/apa-citation-generator/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/company-facts:
    post:
      description: 'Read a business''s own home, about and contact pages and return its name, address, phone, email, founding year and what it does, each with the page it came from. Page text goes to a language model: with no key, a small shared free daily allowance (Google Gemini); with an X-OpenRouter-Key header, the caller''s OpenRouter key.'
      operationId: company_facts
      parameters:
      - description: Needs the caller's OpenRouter key in the X-OpenRouter-Key header.
        in: header
        name: X-OpenRouter-Key
        required: true
        schema:
          maxLength: 200
          minLength: 1
          type: string
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                url:
                  description: The business's public http or https homepage URL.
                  maxLength: 8192
                  minLength: 1
                  type: string
              required:
              - url
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/company-info-finder/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '401':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: OpenRouter key missing or rejected.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/data-finder:
    get:
      description: 'Get a full Data Finder plan for up to three sources: fit, cost at your monthly volume, resale terms with recorded clause, URL and read date, and build-it-yourself guidance. No live source lookup. Defaults: volume 0, US, no resale.'
      operationId: find_data
      parameters:
      - in: query
        name: q
        required: true
        schema:
          description: Describe the data you need and what you want to build.
          maxLength: 500
          minLength: 1
          type: string
      - in: query
        name: volume
        required: false
        schema:
          maximum: 1000000000000000
          minimum: 0
          type: integer
      - in: query
        name: resell
        required: false
        schema:
          enum:
          - 'yes'
          - 'no'
          type: string
      - in: query
        name: geo
        required: false
        schema:
          maxLength: 200
          minLength: 1
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/data-finder/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/driveway-cost:
    get:
      description: Estimate driveway replacement costs for a given size. Returns national installed ranges with no published typical figure. One call compares all ten surfaces. Base, drainage and permits are not priced; removal is priced only for an existing concrete driveway. Includes unpriced checks, two separate national reference cards and dated sources. Pure arithmetic, no network or model.
      operationId: driveway_cost
      parameters:
      - description: 1–10 sections, each 1–10,000 sq ft; total 20–10,000 sq ft. Use length_ft + width_ft OR area_sqft per section. Repeat this parameter for each section; use lengthxwidth in feet or an area in square feet.
        explode: true
        in: query
        name: section
        required: true
        schema:
          items:
            pattern: ^([0-9]+(?:\.[0-9]+)?)(?:x([0-9]+(?:\.[0-9]+)?))?$
            type: string
          maxItems: 10
          minItems: 1
          type: array
        style: form
      - description: Optional labels; supply exactly one per section.
        explode: true
        in: query
        name: section_name
        required: false
        schema:
          items:
            description: Optional section name, at most 40 characters.
            maxLength: 40
            type: string
          maxItems: 10
          type: array
        style: form
      - in: query
        name: surface
        required: true
        schema:
          description: Chosen installed surface; one call compares all ten surfaces.
          enum:
          - concrete_standard
          - concrete_decorative
          - concrete_stamped
          - concrete_custom
          - asphalt_standard
          - asphalt_recycled
          - asphalt_porous
          - pavers_standard
          - pavers_brick
          - pavers_cobblestone
          type: string
      - in: query
        name: existing
        required: false
        schema:
          default: none
          description: Existing driveway surface. Removal is priced only for existing concrete.
          enum:
          - none
          - concrete
          - other
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/driveway-cost-calculator/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/epoch-convert:
    get:
      description: Convert between Unix timestamps and dates. Converts a Unix timestamp (seconds or milliseconds, detected by size) or an ISO 8601 date string to epoch seconds, epoch milliseconds, an ISO UTC time, the same moment in an optional IANA time zone, and the weekday there. A date string with no offset is read in the given zone, UTC by default. Pure standard-library rules, no network, model or clock.
      operationId: epoch_convert
      parameters:
      - in: query
        name: value
        required: true
        schema:
          anyOf:
          - type: number
          - maxLength: 64
            type: string
          description: Required. A Unix timestamp (number or digits; seconds or milliseconds are detected by size) or an ISO 8601 date or date-time string such as 2024-03-10 or 2024-03-10T14:30:00-05:00.
      - in: query
        name: tz
        required: false
        schema:
          description: Optional IANA time zone name such as America/New_York. Default UTC. Used for iso_in_tz and weekday, and as the zone of a date string that has no offset of its own.
          maxLength: 64
          type: string
      - in: query
        name: unit
        required: false
        schema:
          description: Optional. Force a numeric value to be read as seconds (s) or milliseconds (ms) instead of auto-detecting.
          enum:
          - s
          - ms
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/unix-epoch/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/ev-charger-installation-cost:
    get:
      description: Work out the circuit a home EV charger needs, panel triage, utility install cost references and federal credit rules. Returns safety first, the exact 125% minimum breaker calculation, panel triage, unpriced extras and dated federal 30C rules. Reference cards are utility and DOE program figures, not a price for this home. A licensed electrician and permit are needed; confirm local requirements and inspection. Pure rules and Decimal, no network, model or clock. Web and MCP share the free daily allowance.
      operationId: ev_charger_install_cost
      parameters:
      - in: query
        name: level
        required: false
        schema:
          description: Charging level; omit when unknown.
          enum:
          - level1
          - level2
          type: string
      - in: query
        name: charger_amps
        required: false
        schema:
          description: Rated or installer-set maximum charging current in amps.
          maximum: 80
          minimum: 6
          type: number
      - in: query
        name: panel_amps
        required: false
        schema:
          description: Panel/service rating, echoed only; a panel label alone cannot decide electrical changes or price the job.
          maximum: 400
          minimum: 30
          type: integer
      - in: query
        name: spare_space
        required: false
        schema:
          description: Compatible breaker space for a new circuit.
          enum:
          - 'yes'
          - 'no'
          type: string
      - in: query
        name: capacity_check
        required: false
        schema:
          description: Electrician load calculation result; not_done means not assessed.
          enum:
          - enough
          - not_enough
          - not_done
          type: string
      - in: query
        name: existing_circuit
        required: false
        schema:
          description: Suitable dedicated circuit already at the parking spot.
          enum:
          - 'yes'
          - 'no'
          type: string
      - in: query
        name: run_feet
        required: false
        schema:
          description: Estimated routed panel-to-charger length, not straight-line distance.
          maximum: 500
          minimum: 1
          type: number
      - allowEmptyValue: true
        description: ' Send comma-separated codes; an empty value means none observed.'
        explode: false
        in: query
        name: extras
        required: false
        schema:
          items:
            enum:
            - detached_garage
            - outdoor_run
            - finished_walls
            - trenching
            - pavement_cut
            - long_route
            type: string
          type: array
          uniqueItems: true
        style: form
      - in: query
        name: installed_on
        required: false
        schema:
          description: Placed-in-service date YYYY-MM-DD; omitted follows the after-2026-06-30 rule.
          format: date
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/ev-charger-installation-cost/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/fence-cost:
    get:
      description: Estimate fence and gate costs from net non-gate length and gate widths. Returns calculated low, median bid and high bounds from exact City of Sunrise FL 2020 municipal bid rows, their scope and sources, and local permit guidance. Historical public bid observations are not current homeowner prices.
      operationId: fence_cost
      parameters:
      - in: query
        name: net_length_ft
        required: true
        schema:
          description: Net non-gate fence length in feet. Gate openings already excluded; do not subtract them again.
          maximum: 1000000000.0
          minimum: 0
          type: number
      - in: query
        name: fence_type
        required: true
        schema:
          description: Exact documented material and height row; no interpolation.
          enum:
          - chain_link_4
          - chain_link_6
          - wood_6
          - pvc_4
          - pvc_6
          - aluminum_4
          type: string
      - in: query
        name: gate_type
        required: false
        schema:
          description: Exact documented gate material and height for all entered widths; local_quote for unsupported gates.
          enum:
          - chain_link_6
          - wood_6
          - pvc_6
          - aluminum_4
          - local_quote
          type: string
      - allowEmptyValue: true
        description: 'Each gate width in feet, not a gate count. GET: comma-separated widths; omitted means no gates.'
        explode: false
        in: query
        name: gate_widths_ft
        required: false
        schema:
          description: 'Each gate width in feet, not a gate count. GET: comma-separated widths; omitted means no gates.'
          items:
            exclusiveMinimum: 0
            maximum: 1000000000.0
            type: number
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                properties:
                  link:
                    examples:
                    - https://apitoolcalls.com/fence-cost-calculator/?utm_source=api&utm_medium=api
                    format: uri
                    type: string
                  via:
                    const: API Tool Calls
                    type: string
                required:
                - via
                - link
                type: object
          description: Successful tool result with attribution.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Invalid tool arguments.
        '429':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: integer
                      message:
                        type: string
                    required:
                    - message
                    type: object
                required:
                - error
                type: object
          description: Free call limit reached; try again after the limit resets.
  /api/flooring-cost:
    get:
      description: Estimate installed flooring costs for given room sizes. Returns national installed ranges (labor and materials), no labor-only figure, and no published typical figure. One call compares all eight materials using net room area, with hardwood order guidance, an unpriced prep checklist, a separate historical Census reference card and dated sources. Pure arithmetic, no network or model.
      operationId: flooring_cost
      parameters:
      - description: 1–20 rooms, each 1–5,000 sq ft; total 10–10,000 sq ft. Use length_ft + width_ft OR area_sqft per room. Repeat this parameter for each room; use lengthxwidth in feet or an area in square feet.
        explode: true
        in: query
        name: room
        required: true
        schema:
          items:
            pattern: ^([0-9]+(?:\.[0-9]+)?)(?:x([0-9]+(?:\.[0-9]+)?))?$
            type: string
          maxItems: 20
          minItems: 1
          type: array
        style: form
      - description: Optional labels; supply exactly one per room.
        explode: true
        in: query
        name: room_name
        required: false
        schema:
          items:
            description: Optional room name, at most 40 characters.
            maxLength: 40
            type: string
          maxItems: 20
          type: array
        style: form
      - in: query
        name: material
        required: true
        schema:
          description: Chosen installed material; one call also compares all eight materials.
          enum:
          - carpet
          - laminate
          - vinyl_sheet
          - vinyl_plank
          - hardwood_solid
          - hardwood_engineered
          - tile_ceramic
          - tile_porcelain
          type: string
      - in: query
        name: layout
        required: false
        schema:
          default: standard
          description: 'Only changes the hardwood order amount: standard 5%, diagonal 10%. Installed estimate always uses net area.'
          enum:
          - standard
          - diagonal
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
        

# --- truncated at 32 KB (97 KB total) ---
# Full source: https://artifacts.apis.io/cowerx-dev/openapi/cowerx-dev-api-tool-calls-openapi.yml