Tektolo

Use Tektolo from your AI assistant

Every tool is also an MCP tool and a REST endpoint, run by the same engine as the web pages. No account or API key; 20 calls a day free.

The connector URL

https://tektolo.com/mcp

Streamable HTTP, no authentication, no headers.

Your own connector URL

Claude and ChatGPT call tools from their own servers, so everyone using the shared URL through them shares one allowance of 20 calls a day. Your own URL keeps 20 free calls a day for you alone. No account, and nothing about you is stored.

Pricing

  • Web tools: free to try.
  • AI assistants and API: 20 calls a day free per client, counted together, then $0.02 a call (the paid lane is in testing; the free tier applies meanwhile).
  • Volume and integrations: contact us.

Pricing

Claude

  1. Open Settings, then Connectors.
  2. Choose Add custom connector.
  3. Name it Tektolo and paste your own connector URL (get one) or the shared URL above.
  4. Start a chat and describe a turnover. Claude will call the tools and show you the totals, refer-outs and assumptions.

Menu names change; on Team and Enterprise plans an owner may need to add the connector first.

ChatGPT

  1. Turn on developer mode in Settings, under Connectors (Advanced).
  2. Create a connector, choose a remote MCP server, and paste your own connector URL (get one) or the shared URL above. Authentication: none.
  3. Enable the connector in a chat from the tools menu.

Developer mode availability depends on your plan and OpenAI changes the menus often; see OpenAI's connector documentation.

Claude Code

claude mcp add --transport http tektolo https://tektolo.com/mcp

Then run /mcp to confirm it is connected.

Other MCP clients

Point any client that supports remote servers at the URL above with the streamable HTTP transport. Connection metadata is published as an MCP server card, and the tool list comes from tools/list.

REST and curl

The same operations are plain JSON over HTTPS. Schemas are in OpenAPI and catalog.json.

Look up an issue code

curl -sS 'https://tektolo.com/v1/property-turnover/issue_codes' \
  -H 'content-type: application/json' \
  -d '{
  "query": "pet stain carpet",
  "limit": 5
}'

Scope a turnover

Request body from the bundled example one_bed_charlotte_light_turn. The response carries the totals, lines, refer-outs, assumptions and unknowns.

curl -sS 'https://tektolo.com/v1/property-turnover/scope' \
  -H 'content-type: application/json' \
  -d '{
  "property": {
    "zip": "28202",
    "unit_type": "apartment",
    "bedrooms": 1,
    "bathrooms": "1",
    "sq_ft": 700,
    "year_built": 2008
  },
  "standards": {
    "profile": "standard"
  },
  "findings": [
    {
      "id": "f1",
      "location": {
        "area": "bedroom",
        "label": "Bedroom"
      },
      "code": "walls.nail_holes",
      "extent": "partial"
    },
    {
      "id": "f2",
      "location": {
        "area": "living_room",
        "label": "Living room"
      },
      "code": "walls.scuffs",
      "extent": "spot"
    },
    {
      "id": "f3",
      "location": {
        "area": "living_room",
        "label": "Living room"
      },
      "code": "carpet.soiled",
      "extent": "partial",
      "quantity": {
        "value": 220,
        "uom": "sq_ft"
      }
    },
    {
      "id": "f4",
      "location": {
        "area": "bedroom",
        "label": "Bedroom"
      },
      "code": "carpet.soiled",
      "extent": "partial",
      "quantity": {
        "value": 140,
        "uom": "sq_ft"
      }
    },
    {
      "id": "f5",
      "location": {
        "area": "kitchen",
        "label": "Kitchen"
      },
      "code": "range.dirty"
    },
    {
      "id": "f6",
      "location": {
        "area": "kitchen",
        "label": "Kitchen"
      },
      "code": "refrigerator.dirty"
    },
    {
      "id": "f7",
      "location": {
        "area": "living_room",
        "label": "Living room"
      },
      "code": "blinds.bent_missing",
      "quantity": {
        "value": 1,
        "uom": "each"
      }
    }
  ],
  "client_refs": {
    "unit_id": "example-1bed-charlotte"
  }
}'

Download the Excel workbook

Same body, rendered on request. Other formats: html, csv, vendor_csv.

curl -sS 'https://tektolo.com/v1/property-turnover/scope/render/xlsx' \
  -H 'content-type: application/json' \
  -o turnover.xlsx \
  -d '{
  "property": {
    "zip": "28202",
    "unit_type": "apartment",
    "bedrooms": 1,
    "bathrooms": "1",
    "sq_ft": 700,
    "year_built": 2008
  },
  "standards": {
    "profile": "standard"
  },
  "findings": [
    {
      "id": "f1",
      "location": {
        "area": "bedroom",
        "label": "Bedroom"
      },
      "code": "walls.nail_holes",
      "extent": "partial"
    },
    {
      "id": "f2",
      "location": {
        "area": "living_room",
        "label": "Living room"
      },
      "code": "walls.scuffs",
      "extent": "spot"
    },
    {
      "id": "f3",
      "location": {
        "area": "living_room",
        "label": "Living room"
      },
      "code": "carpet.soiled",
      "extent": "partial",
      "quantity": {
        "value": 220,
        "uom": "sq_ft"
      }
    },
    {
      "id": "f4",
      "location": {
        "area": "bedroom",
        "label": "Bedroom"
      },
      "code": "carpet.soiled",
      "extent": "partial",
      "quantity": {
        "value": 140,
        "uom": "sq_ft"
      }
    },
    {
      "id": "f5",
      "location": {
        "area": "kitchen",
        "label": "Kitchen"
      },
      "code": "range.dirty"
    },
    {
      "id": "f6",
      "location": {
        "area": "kitchen",
        "label": "Kitchen"
      },
      "code": "refrigerator.dirty"
    },
    {
      "id": "f7",
      "location": {
        "area": "living_room",
        "label": "Living room"
      },
      "code": "blinds.bent_missing",
      "quantity": {
        "value": 1,
        "uom": "each"
      }
    }
  ],
  "client_refs": {
    "unit_id": "example-1bed-charlotte"
  }
}'

Pay per call (x402) (testnet)

For agents that need more than the daily free tier (20 calls a day per client), each operation also has a paid route with the same body and result, plus a payment block (network, transaction, payer). x402 is not offered over MCP.

Testnet: payments use test USDC on Base Sepolia, which has no value. Nothing real is charged while this note is here.

  • POST /v1/x402/deposit-settlement/settle: $0.02 per call
  • POST /v1/x402/property-turnover/quick_estimate: $0.02 per call
  • POST /v1/x402/property-turnover/scope: $0.02 per call
  • POST /v1/x402/property-turnover/scope/render/xlsx: $0.05 per call
  • POST /v1/x402/property-turnover/scope/render/html: $0.05 per call
  • POST /v1/x402/property-turnover/scope/render/csv: $0.05 per call
  • POST /v1/x402/property-turnover/scope/render/vendor_csv: $0.05 per call

An unpaid call gets HTTP 402 with a PAYMENT-REQUIRED header (x402 v2, exact scheme, USDC on Base Sepolia testnet). An x402 client signs the payment and retries with PAYMENT-SIGNATURE. Input is checked before payment, and only a successful result is charged; our own errors are never charged. Paid calls are covered by the Terms of Use (Paid calls).

Aggregate demand: /v1/x402/metrics.

The skill

If your assistant supports skills (Claude Code, Claude apps), the skill tells it when to use the property turnover estimate, how to build a good request from an inspection report, and what to relay back to you.

/skills/property-turnover/SKILL.md

mkdir -p ~/.claude/skills/property-turnover && \
  curl -sS https://tektolo.com/skills/property-turnover/SKILL.md \
  -o ~/.claude/skills/property-turnover/SKILL.md