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.
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
Add selected operations to Stack
Documentation
Specifications
Other Resources
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.
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