Proven Plaza Calculators & Open Data

Free trades/DIY calculators plus Florida contractor, permit, federal award and AI-crawler data.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
85%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (8)

  • LOWTool 'calc_drywall' description lacks action verbin calc_drywall
  • LOWTool 'calc_mulch_gravel' description lacks action verbin calc_mulch_gravel
  • LOWTool 'calc_ac_btu' description lacks action verbin calc_ac_btu
  • LOWTool 'calc_board_foot' description lacks action verbin calc_board_foot
  • LOWTool 'calc_asphalt' description lacks action verbin calc_asphalt
  • LOWTool 'calc_paver' description lacks action verbin calc_paver
  • LOWTool 'calc_sod' description lacks action verbin calc_sod
  • LOWTool 'sitemap_urls' description lacks action verbin sitemap_urls

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,817Tokens (tool definitions)
~1.3 KBTypical response size
Significant attention impact (6.11% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "provenplaza-agent-mcp": {
      "url": "https://provenplaza-agent-mcp.zvorsteg1.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://provenplaza-agent-mcp.zvorsteg1.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (39)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢calc_concrete_slab(length_ft, width_ft, depth_in, waste_pct, bag_yield_cf)

Estimate ready-mix cubic yards or the number of 80 lb bags for a rectangular slab, patio or driveway. Formula: Cubic yards = Length(ft) × Width(ft) × Thickness(in)/12 ÷ 27 × (1 + waste%). Bags = cubic feet ÷ bag yield.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Length (ft); default 20",
      "type": "number"
    },
    "width_ft": {
      "description": "Width (ft); default 10",
      "type": "number"
    },
    "depth_in": {
      "description": "Thickness (in); default 4",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 10",
      "type": "number"
    },
    "bag_yield_cf": {
      "description": "Bag yield (cu ft/bag); default 0.6",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_concrete_column(diameter_in, height_ft, count, waste_pct, bag_yield_cf)

Concrete needed for round columns, piers and tube forms (sonotubes). Uses cylinder volume, which differs from slab math. Formula: Cubic feet = π × (diameter(in)/24)² × height(ft) × count; cubic yards = cu ft ÷ 27 × (1 + waste%).

Input Schema

{
  "type": "object",
  "properties": {
    "diameter_in": {
      "description": "Tube diameter (in); default 12",
      "type": "number"
    },
    "height_ft": {
      "description": "Height (ft); default 4",
      "type": "number"
    },
    "count": {
      "description": "Number of columns; default 4",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 10",
      "type": "number"
    },
    "bag_yield_cf": {
      "description": "Bag yield (cu ft/bag); default 0.6",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_concrete_footing(length_ft, width_in, depth_in, waste_pct, bag_yield_cf)

Volume for continuous trench/wall footings where width is in inches and length runs the full perimeter. Formula: Cubic yards = Length(ft) × Width(in)/12 × Depth(in)/12 ÷ 27 × (1 + waste%).

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Total footing length (ft); default 120",
      "type": "number"
    },
    "width_in": {
      "description": "Footing width (in); default 16",
      "type": "number"
    },
    "depth_in": {
      "description": "Footing depth (in); default 8",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 10",
      "type": "number"
    },
    "bag_yield_cf": {
      "description": "Bag yield (cu ft/bag); default 0.6",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_paint(wall_perimeter_ft, wall_height_ft, doors, windows, coats, ...)

Gallons of wall paint from room perimeter and height, minus doors and windows, for any number of coats. Formula: Paintable area = perimeter × height − 20 sq ft per door − 15 sq ft per window. Gallons = area × coats ÷ label coverage.

Input Schema

{
  "type": "object",
  "properties": {
    "wall_perimeter_ft": {
      "description": "Room perimeter (ft); default 48",
      "type": "number"
    },
    "wall_height_ft": {
      "description": "Wall height (ft); default 8",
      "type": "number"
    },
    "doors": {
      "description": "Doors; default 1",
      "type": "number"
    },
    "windows": {
      "description": "Windows; default 2",
      "type": "number"
    },
    "coats": {
      "description": "Coats; default 2",
      "type": "number"
    },
    "coverage_sqft_per_gal": {
      "description": "Coverage (from your can label) (sq ft/gal); default 350",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_roofing(footprint_length_ft, footprint_width_ft, overhang_in, pitch_rise, waste_pct, ...)

Roof area from the house footprint and pitch, converted to roofing squares (100 sq ft) and shingle bundles. Formula: Pitch factor = √(1 + (rise/12)²). Roof area = (L + 2×overhang) × (W + 2×overhang) × pitch factor. Squares = area ÷ 100 × (1 + waste%).

Input Schema

{
  "type": "object",
  "properties": {
    "footprint_length_ft": {
      "description": "Footprint length (ft); default 40",
      "type": "number"
    },
    "footprint_width_ft": {
      "description": "Footprint width (ft); default 30",
      "type": "number"
    },
    "overhang_in": {
      "description": "Eave/rake overhang (in); default 12",
      "type": "number"
    },
    "pitch_rise": {
      "description": "Pitch (rise per 12 in run) (in); default 6",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 10",
      "type": "number"
    },
    "bundles_per_square": {
      "description": "Bundles per square (see wrapper); default 3",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_drywall(wall_perimeter_ft, wall_height_ft, include_ceiling, room_length_ft, room_width_ft, ...)

Number of drywall sheets for walls and optionally the ceiling. Formula: Sheets = (perimeter × height + ceiling area) × (1 + waste%) ÷ sheet area.

Input Schema

{
  "type": "object",
  "properties": {
    "wall_perimeter_ft": {
      "description": "Room perimeter (ft); default 48",
      "type": "number"
    },
    "wall_height_ft": {
      "description": "Wall height (ft); default 8",
      "type": "number"
    },
    "include_ceiling": {
      "description": "Include ceiling; default 1; one of 1 = Yes, 0 = No",
      "type": "number"
    },
    "room_length_ft": {
      "description": "Room length (ceiling) (ft); default 14",
      "type": "number"
    },
    "room_width_ft": {
      "description": "Room width (ceiling) (ft); default 10",
      "type": "number"
    },
    "sheet_w_ft": {
      "description": "Sheet width (ft); default 4",
      "type": "number"
    },
    "sheet_l_ft": {
      "description": "Sheet length (ft); default 8",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 10",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_flooring_tile(length_ft, width_ft, waste_pct, box_coverage_sqft)

Square footage plus waste and number of boxes for tile, laminate, vinyl plank or hardwood. Formula: Area = L × W; to buy = area × (1 + waste%); boxes = to buy ÷ coverage per box.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Room length (ft); default 14",
      "type": "number"
    },
    "width_ft": {
      "description": "Room width (ft); default 12",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (more for diagonal layouts) (%); default 10",
      "type": "number"
    },
    "box_coverage_sqft": {
      "description": "Coverage per box (on the box) (sq ft); default 20",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_mulch_gravel(length_ft, width_ft, depth_in, tons_per_cy)

Cubic yards (and optional tons) of mulch, gravel, sand or soil for a bed or path. Formula: Cubic yards = L(ft) × W(ft) × depth(in) ÷ 324 (since 27 cu ft × 12 in = 324). Tons = cu yd × supplier density.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Length (ft); default 20",
      "type": "number"
    },
    "width_ft": {
      "description": "Width (ft); default 10",
      "type": "number"
    },
    "depth_in": {
      "description": "Depth (in); default 3",
      "type": "number"
    },
    "tons_per_cy": {
      "description": "Material density from your supplier (0 = skip) (tons/cu yd); default 0",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_voltage_drop(awg, material, amps, one_way_ft, volts, ...)

Voltage drop for a single- or three-phase run using NEC Chapter 9 Table 8 conductor sizes. Formula: VD = 2 × K × I × L ÷ CM (single phase) or √3 × K × I × L ÷ CM (three phase); K = ohm·cmil/ft (approx. 12.9 Cu, 21.2 Al); CM from NEC Ch. 9 Table 8.

Input Schema

{
  "type": "object",
  "properties": {
    "awg": {
      "description": "Wire size (AWG); default 12",
      "type": "string",
      "enum": [
        "1",
        "2",
        "3",
        "4",
        "6",
        "8",
        "10",
        "12",
        "14",
        "1/0",
        "2/0",
        "3/0",
        "4/0"
      ]
    },
    "material": {
      "description": "Conductor; default copper",
      "type": "string",
      "enum": [
        "copper",
        "aluminum"
      ]
    },
    "amps": {
      "description": "Load current (A); default 16",
      "type": "number"
    },
    "one_way_ft": {
      "description": "One-way length (ft); default 100",
      "type": "number"
    },
    "volts": {
      "description": "Source voltage (V); default 120",
      "type": "number"
    },
    "phase": {
      "description": "Phase; default 1; one of 1 = Single phase, 3 = Three phase",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_ac_btu(room_sqft, shade, occupants, kitchen)

Room air-conditioner capacity using the ENERGY STAR sizing chart and its adjustments for sun, occupants and kitchens. Formula: Base BTU from the ENERGY STAR area chart; −10% heavily shaded, +10% very sunny, +600 BTU per person above 2, +4,000 BTU for a kitchen.

Input Schema

{
  "type": "object",
  "properties": {
    "room_sqft": {
      "description": "Room area (sq ft); default 350",
      "type": "number"
    },
    "shade": {
      "description": "Sun exposure; default normal",
      "type": "string",
      "enum": [
        "normal",
        "shaded",
        "sunny"
      ]
    },
    "occupants": {
      "description": "Regular occupants; default 2",
      "type": "number"
    },
    "kitchen": {
      "description": "Used as kitchen; default 0; one of 0 = No, 1 = Yes (+4,000 BTU)",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_deck_board(deck_length_ft, deck_width_ft, board_width_in, gap_in, board_length_ft, ...)

Number of deck boards for a rectangular deck, accounting for board width and gap. Formula: Rows = ⌈width(in) ÷ (board width + gap)⌉; boards = rows × ⌈deck length ÷ board length⌉ × (1 + waste%).

Input Schema

{
  "type": "object",
  "properties": {
    "deck_length_ft": {
      "description": "Deck length (board direction) (ft); default 16",
      "type": "number"
    },
    "deck_width_ft": {
      "description": "Deck width (ft); default 12",
      "type": "number"
    },
    "board_width_in": {
      "description": "Actual board width (in); default 5.5",
      "type": "number"
    },
    "gap_in": {
      "description": "Gap between boards (in); default 0.1875",
      "type": "number"
    },
    "board_length_ft": {
      "description": "Board length (ft); default 16",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 10",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_fence(length_ft, post_spacing_ft, gates, picket_width_in, picket_gap_in, ...)

Posts, rails and pickets for a straight run of wood privacy or picket fence. Formula: Sections = ⌈length ÷ spacing⌉; posts = sections + 1 + gates; pickets = ⌈length(in) ÷ (picket width + gap)⌉.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Fence length (ft); default 100",
      "type": "number"
    },
    "post_spacing_ft": {
      "description": "Post spacing (ft); default 8",
      "type": "number"
    },
    "gates": {
      "description": "Gates (extra posts); default 1",
      "type": "number"
    },
    "picket_width_in": {
      "description": "Picket width (in); default 5.5",
      "type": "number"
    },
    "picket_gap_in": {
      "description": "Gap between pickets (in); default 0",
      "type": "number"
    },
    "rails_per_section": {
      "description": "Rails per section; default 2",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_insulation_r_value(target_r, r_per_inch, area_sqft)

Thickness needed to reach a target R-value for the R-per-inch printed on your insulation product. Formula: Thickness(in) = target R ÷ R per inch. Volume in board feet = area(sq ft) × thickness(in).

Input Schema

{
  "type": "object",
  "properties": {
    "target_r": {
      "description": "Target R-value; default 38",
      "type": "number"
    },
    "r_per_inch": {
      "description": "R-value per inch (product label); default 3.2",
      "type": "number"
    },
    "area_sqft": {
      "description": "Area (optional) (sq ft); default 1000",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_pool_volume(length_ft, width_ft, shallow_ft, deep_ft)

Gallons in a rectangular pool with a sloped bottom, using average depth. Formula: Gallons = L × W × (shallow + deep)/2 × 7.48052 gal/cu ft.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Length (ft); default 32",
      "type": "number"
    },
    "width_ft": {
      "description": "Width (ft); default 16",
      "type": "number"
    },
    "shallow_ft": {
      "description": "Shallow-end depth (ft); default 3.5",
      "type": "number"
    },
    "deep_ft": {
      "description": "Deep-end depth (ft); default 6",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_round_pool_volume(diameter_ft, avg_depth_ft)

Gallons in a round or above-ground pool. Formula: Gallons = π × (D/2)² × average depth × 7.48052 (≈ D² × depth × 5.875).

Input Schema

{
  "type": "object",
  "properties": {
    "diameter_ft": {
      "description": "Diameter (ft); default 24",
      "type": "number"
    },
    "avg_depth_ft": {
      "description": "Average water depth (ft); default 4.5",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_oval_pool_volume(length_ft, width_ft, avg_depth_ft)

Gallons in an oval (elliptical) pool. Formula: Gallons = π × (L/2) × (W/2) × average depth × 7.48052.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Length (ft); default 30",
      "type": "number"
    },
    "width_ft": {
      "description": "Width (ft); default 15",
      "type": "number"
    },
    "avg_depth_ft": {
      "description": "Average depth (ft); default 4.5",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_solar_panel(annual_kwh, panel_watts, peak_sun_hours, system_losses_pct)

Panels needed to offset annual electricity use, from panel wattage, peak sun hours and system losses. Formula: Annual kWh per panel = W/1000 × peak sun hours × 365 × (1 − losses). Panels = ⌈annual use ÷ kWh per panel⌉.

Input Schema

{
  "type": "object",
  "properties": {
    "annual_kwh": {
      "description": "Annual usage (from your bills) (kWh); default 12000",
      "type": "number"
    },
    "panel_watts": {
      "description": "Panel rating (W); default 400",
      "type": "number"
    },
    "peak_sun_hours": {
      "description": "Peak sun hours/day (look up in PVWatts) (h); default 5",
      "type": "number"
    },
    "system_losses_pct": {
      "description": "System losses (%); default 14",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_board_foot(thickness_in, width_in, length_ft, quantity, price_per_bf)

Board feet and cost for hardwood or dimensional lumber. Formula: Board feet = thickness(in) × width(in) × length(ft) ÷ 12 × pieces (one board foot = 144 cubic inches).

Input Schema

{
  "type": "object",
  "properties": {
    "thickness_in": {
      "description": "Thickness (in); default 1",
      "type": "number"
    },
    "width_in": {
      "description": "Width (in); default 6",
      "type": "number"
    },
    "length_ft": {
      "description": "Length (ft); default 8",
      "type": "number"
    },
    "quantity": {
      "description": "Pieces; default 10",
      "type": "number"
    },
    "price_per_bf": {
      "description": "Price per board foot (0 = skip) ($); default 0",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_asphalt(length_ft, width_ft, depth_in, lb_per_cf)

Tons of hot-mix asphalt for a driveway or lot from area, compacted depth and mix density. Formula: Tons = L × W × depth(in)/12 × density(lb/cu ft) ÷ 2,000.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Length (ft); default 50",
      "type": "number"
    },
    "width_ft": {
      "description": "Width (ft); default 12",
      "type": "number"
    },
    "depth_in": {
      "description": "Compacted depth (in); default 2",
      "type": "number"
    },
    "lb_per_cf": {
      "description": "Mix density (ask your plant) (lb/cu ft); default 145",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_stair_stringer(total_rise_in, max_riser_in, tread_depth_in)

Number of risers and treads, exact riser height, total run and stringer length from the floor-to-floor rise, checked against the IRC 7¾ in maximum riser. Formula: Risers = ⌈total rise ÷ max riser⌉; riser height = total rise ÷ risers; treads = risers − 1; total run = treads × tread depth; stringer length = √(rise² + run²).

Input Schema

{
  "type": "object",
  "properties": {
    "total_rise_in": {
      "description": "Total rise (finished floor to finished floor) (in); default 108",
      "type": "number"
    },
    "max_riser_in": {
      "description": "Maximum riser height allowed (in); default 7.75",
      "type": "number"
    },
    "tread_depth_in": {
      "description": "Tread depth (run per step) (in); default 10",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_rafter_length(run_ft, pitch_rise, overhang_in)

Common rafter length, ridge rise and roof angle from the horizontal run and pitch, with optional overhang. Formula: Pitch factor = √(1 + (rise/12)²). Rafter length = (run + overhang) × pitch factor. Ridge rise = run × rise ÷ 12. Angle = atan(rise ÷ 12).

Input Schema

{
  "type": "object",
  "properties": {
    "run_ft": {
      "description": "Horizontal run (half the span, minus half the ridge board) (ft); default 14",
      "type": "number"
    },
    "pitch_rise": {
      "description": "Pitch (rise per 12 in of run) (in); default 6",
      "type": "number"
    },
    "overhang_in": {
      "description": "Horizontal overhang (eave) (in); default 12",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_wall_stud(wall_length_ft, spacing_in, corners, openings, studs_per_corner, ...)

Studs at 16 or 24 in on center for a wall length, plus extras for corners and openings, and linear feet of top and bottom plate. Formula: Studs on layout = ⌈length(in) ÷ spacing⌉ + 1; total = layout + corners × extras per corner + openings × extras per opening. Plate linear ft = length × plates.

Input Schema

{
  "type": "object",
  "properties": {
    "wall_length_ft": {
      "description": "Wall length (ft); default 20",
      "type": "number"
    },
    "spacing_in": {
      "description": "Stud spacing (on center); default 16; one of 16 = 16 in o.c., 24 = 24 in o.c., 12 = 12 in o.c.",
      "type": "number"
    },
    "corners": {
      "description": "Corners in this wall; default 2",
      "type": "number"
    },
    "openings": {
      "description": "Door/window openings; default 1",
      "type": "number"
    },
    "studs_per_corner": {
      "description": "Extra studs per corner; default 2",
      "type": "number"
    },
    "studs_per_opening": {
      "description": "Extra studs per opening (king/jack); default 2",
      "type": "number"
    },
    "plates": {
      "description": "Plates (bottom + double top = 3); default 3",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_brick(wall_length_ft, wall_height_ft, openings_sqft, unit_length_in, unit_height_in, ...)

Bricks for a single-wythe wall from its area, the brick face size and the mortar joint. Defaults are a modular brick with a ⅜ in joint. Formula: Bricks per sq ft = 144 ÷ ((length + joint) × (height + joint)); bricks = (wall area − openings) × bricks per sq ft × (1 + waste%).

Input Schema

{
  "type": "object",
  "properties": {
    "wall_length_ft": {
      "description": "Wall length (ft); default 20",
      "type": "number"
    },
    "wall_height_ft": {
      "description": "Wall height (ft); default 8",
      "type": "number"
    },
    "openings_sqft": {
      "description": "Openings to subtract (sq ft); default 0",
      "type": "number"
    },
    "unit_length_in": {
      "description": "Brick length (actual) (in); default 7.625",
      "type": "number"
    },
    "unit_height_in": {
      "description": "Brick height (actual) (in); default 2.25",
      "type": "number"
    },
    "joint_in": {
      "description": "Mortar joint (in); default 0.375",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 5",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_concrete_block(wall_length_ft, wall_height_ft, openings_sqft, unit_length_in, unit_height_in, ...)

Number of 8×8×16 concrete blocks (CMU) for a wall. A standard block plus a ⅜ in joint covers 16 × 8 in, so about 1.125 blocks per square foot. Formula: Blocks per sq ft = 144 ÷ ((length + joint) × (height + joint)) = 144 ÷ (16 × 8) = 1.125 for standard units; blocks = net wall area × 1.125 × (1 + waste%).

Input Schema

{
  "type": "object",
  "properties": {
    "wall_length_ft": {
      "description": "Wall length (ft); default 40",
      "type": "number"
    },
    "wall_height_ft": {
      "description": "Wall height (ft); default 8",
      "type": "number"
    },
    "openings_sqft": {
      "description": "Openings to subtract (sq ft); default 0",
      "type": "number"
    },
    "unit_length_in": {
      "description": "Block length (actual) (in); default 15.625",
      "type": "number"
    },
    "unit_height_in": {
      "description": "Block height (actual) (in); default 7.625",
      "type": "number"
    },
    "joint_in": {
      "description": "Mortar joint (in); default 0.375",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 5",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_paver(length_ft, width_ft, paver_length_in, paver_width_in, waste_pct, ...)

Number of pavers for a patio, walkway or driveway plus cubic yards of compacted base and bedding sand. Formula: Pavers per sq ft = 144 ÷ (paver length × width); pavers = area × per sq ft × (1 + waste%). Base and sand cubic yards = area × depth(in) ÷ 324.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Area length (ft); default 16",
      "type": "number"
    },
    "width_ft": {
      "description": "Area width (ft); default 12",
      "type": "number"
    },
    "paver_length_in": {
      "description": "Paver length (in); default 8",
      "type": "number"
    },
    "paver_width_in": {
      "description": "Paver width (in); default 4",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (more for patterns/curves) (%); default 10",
      "type": "number"
    },
    "base_depth_in": {
      "description": "Base depth (per your design) (in); default 4",
      "type": "number"
    },
    "sand_depth_in": {
      "description": "Bedding sand depth (in); default 1",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_sod(length_ft, width_ft, piece_length_in, piece_width_in, waste_pct, ...)

Square feet of sod, number of pieces and pallets for a lawn area. Piece size and pallet coverage are editable because they vary by farm and grass type. Formula: Sq ft to buy = L × W × (1 + waste%); pieces = sq ft ÷ (piece length × width ÷ 144); pallets = sq ft ÷ pallet coverage.

Input Schema

{
  "type": "object",
  "properties": {
    "length_ft": {
      "description": "Lawn length (ft); default 50",
      "type": "number"
    },
    "width_ft": {
      "description": "Lawn width (ft); default 40",
      "type": "number"
    },
    "piece_length_in": {
      "description": "Piece length (ask your supplier) (in); default 24",
      "type": "number"
    },
    "piece_width_in": {
      "description": "Piece width (ask your supplier) (in); default 16",
      "type": "number"
    },
    "waste_pct": {
      "description": "Waste allowance (%); default 5",
      "type": "number"
    },
    "pallet_sqft": {
      "description": "Coverage per pallet (ask your supplier) (sq ft); default 400",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_pool_salt(pool_gallons, current_ppm, target_ppm, bag_lb)

Pounds and bags of pool salt to raise a saltwater pool from its current salt level to the target your chlorine generator needs. Formula: Salt (lb) = gallons × 8.34 lb/gal × (target ppm − current ppm) ÷ 1,000,000. Bags = ⌈lb ÷ bag size⌉.

Input Schema

{
  "type": "object",
  "properties": {
    "pool_gallons": {
      "description": "Pool volume (gal); default 15000",
      "type": "number"
    },
    "current_ppm": {
      "description": "Current salt level (test strip or meter) (ppm); default 0",
      "type": "number"
    },
    "target_ppm": {
      "description": "Target salt level (from your cell manual) (ppm); default 3200",
      "type": "number"
    },
    "bag_lb": {
      "description": "Bag size (lb); default 40",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_pool_chlorine(pool_gallons, raise_ppm, strength_pct)

Fluid ounces of liquid chlorine (sodium hypochlorite) to raise free chlorine by a target number of ppm, from pool volume and product strength. Formula: Available chlorine (g) = gallons × 3.78541 L/gal × ppm (mg/L) ÷ 1,000. Product (mL) = grams ÷ (strength% ÷ 100), since trade percent is grams of available chlorine per 100 mL. Fl oz = mL ÷ 29.5735.

Input Schema

{
  "type": "object",
  "properties": {
    "pool_gallons": {
      "description": "Pool volume (gal); default 15000",
      "type": "number"
    },
    "raise_ppm": {
      "description": "Raise free chlorine by (ppm); default 3",
      "type": "number"
    },
    "strength_pct": {
      "description": "Product strength (trade %, on the jug) (%); default 12.5",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calc_appliance_energy_cost(watts, hours_per_day, days_per_year, rate_per_kwh)

Daily and yearly kWh and the cost to run any appliance from its wattage, hours of use and your electricity rate. Formula: kWh per day = watts × hours ÷ 1,000; kWh per year = kWh per day × days; cost = kWh × rate.

Input Schema

{
  "type": "object",
  "properties": {
    "watts": {
      "description": "Appliance wattage (nameplate, or amps × volts) (W); default 1500",
      "type": "number"
    },
    "hours_per_day": {
      "description": "Hours used per day (h); default 4",
      "type": "number"
    },
    "days_per_year": {
      "description": "Days used per year; default 365",
      "type": "number"
    },
    "rate_per_kwh": {
      "description": "Your electricity rate (from your bill) ($/kWh); default 0.15",
      "type": "number"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ai_crawler_audit(url, path)

Check a public site robots.txt for AI crawler allow/deny verdicts.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public site URL or domain, e.g. https://example.com"
    },
    "path": {
      "description": "Optional path to test against the rules, default /",
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢sitemap_urls(url, max)

Extract URLs from a public sitemap (follows sitemap indexes).

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Sitemap URL or site root (robots.txt Sitemap: lines are followed)"
    },
    "max": {
      "description": "Maximum URLs to return, 1-5000",
      "type": "integer",
      "minimum": 1,
      "maximum": 5000
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢fl_contractor_licenses(county, trade, since, limit)

Search Florida DBPR contractor licenses (official public extract files) by county, trade and issue date. Business records only.

Input Schema

{
  "type": "object",
  "properties": {
    "county": {
      "description": "Florida county name, e.g. Palm Beach",
      "type": "string"
    },
    "trade": {
      "description": "Trade keyword, e.g. roofing, pool, solar, general",
      "type": "string"
    },
    "since": {
      "description": "Only licenses issued on/after this date, YYYY-MM-DD",
      "type": "string"
    },
    "limit": {
      "description": "Max rows, 1-1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢sofl_permits(source, from, to, keyword, limit)

Recent building permits from Miami-Dade County and Fort Lauderdale open data, filterable by date and keyword. Owner names excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "description": "miami-dade or fort-lauderdale",
      "type": "string"
    },
    "from": {
      "description": "Start date YYYY-MM-DD",
      "type": "string"
    },
    "to": {
      "description": "End date YYYY-MM-DD",
      "type": "string"
    },
    "keyword": {
      "description": "Filter permit descriptions, e.g. roof",
      "type": "string"
    },
    "limit": {
      "description": "Max rows, 1-1000",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢federal_awards(keywords, category, naics, states, from, ...)

Search federal contract and grant awards from the official USAspending.gov API by keyword, NAICS, state, date and amount.

Input Schema

{
  "type": "object",
  "properties": {
    "keywords": {
      "description": "Search words, e.g. roofing",
      "type": "string"
    },
    "category": {
      "description": "contracts or grants",
      "type": "string"
    },
    "naics": {
      "description": "NAICS code, e.g. 238160",
      "type": "string"
    },
    "states": {
      "description": "Comma-separated state codes, e.g. FL,GA",
      "type": "string"
    },
    "from": {
      "description": "Start date YYYY-MM-DD",
      "type": "string"
    },
    "to": {
      "description": "End date YYYY-MM-DD",
      "type": "string"
    },
    "minAmount": {
      "description": "Minimum award amount in USD",
      "type": "number"
    },
    "limit": {
      "description": "Max awards, 1-500",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢agent_readiness_score(url)

Free 0-100 score of how easily AI assistants and agents can read, quote and contact a public business website: AI crawler rules, llms.txt, schema.org business/offer data, agent catalog, MCP card, sitemap, meta, contact. Not a Google ranking score.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢agent_ready_fix_pack(url, name, description, businessType, city, ...)

Generate robots.txt AI-crawler rules, llms.txt, schema.org JSON-LD and /.well-known/agent-catalog.json from facts the business supplies. services: one per line as "Name|Price". Uses only supplied facts.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "businessType": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "bookingUrl": {
      "type": "string"
    },
    "services": {
      "type": "string"
    },
    "areaServed": {
      "type": "string"
    }
  },
  "required": [
    "url",
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢offer_list

List offers in the agent GEO pack (ids + names + status). Read-only.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢offer_flagship

Managed AI Front Office (flagship retainer) facts from pack JSON. HUMAN-GATED: recommend -> human Accept -> written scope -> pay. Agents must not purchase unsupervised.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢offer_customlab

CustomLab.ai AI operations automation offer from pack JSON. No price, SKU or Payment Link; CTA is a free 30-minute fit call.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded39 tools