tektolo-com · Schema

FeedbackIn

What the site, a tool or an idea box sends to ``POST /v1/feedback``.

CompanyOperationsToolsAIAutomationReliability

Properties

Name Type Description
scope string site, a specific tool, or an idea for a new tool.
capability object Tool id when scope is tool.
page string Path of the page the feedback is about.
kind string
rating object
reasons array
message string
email object Only if you want a reply.
source object Optional self-reported source; not verified provenance.
reporter object Optional reporter type, for example human or agent; self-reported.
agent_name object Optional agent label. Do not include personal details or secrets.
estimate object
wtp object
finding_text object Unmatched kind only.
website string Leave empty (spam trap).
View JSON Schema on GitHub

JSON Schema

tektolo-com-feedback-in-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/tektolo-com/json-schema/tektolo-com-feedback-in-schema.json",
  "title": "FeedbackIn",
  "description": "What the site, a tool or an idea box sends to ``POST /v1/feedback``.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/tektolo-com-openapi.json#/components/schemas/FeedbackIn",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "site",
        "tool",
        "idea"
      ],
      "title": "Scope",
      "description": "site, a specific tool, or an idea for a new tool."
    },
    "capability": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ],
      "title": "Capability",
      "description": "Tool id when scope is tool."
    },
    "page": {
      "type": "string",
      "maxLength": 200,
      "title": "Page",
      "description": "Path of the page the feedback is about.",
      "default": "/"
    },
    "kind": {
      "type": "string",
      "enum": [
        "rating",
        "issue",
        "idea",
        "unmatched",
        "wtp"
      ],
      "title": "Kind",
      "default": "issue"
    },
    "rating": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "useful",
            "not_quite"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Rating"
    },
    "reasons": {
      "items": {
        "type": "string",
        "enum": [
          "too_high",
          "too_low",
          "missing_items",
          "wrong_items",
          "confusing",
          "other"
        ]
      },
      "type": "array",
      "maxItems": 6,
      "title": "Reasons"
    },
    "message": {
      "type": "string",
      "maxLength": 2000,
      "title": "Message",
      "default": ""
    },
    "email": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 254
        },
        {
          "type": "null"
        }
      ],
      "title": "Email",
      "description": "Only if you want a reply."
    },
    "source": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ],
      "title": "Source",
      "description": "Optional self-reported source; not verified provenance."
    },
    "reporter": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ],
      "title": "Reporter",
      "description": "Optional reporter type, for example human or agent; self-reported."
    },
    "agent_name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ],
      "title": "Agent Name",
      "description": "Optional agent label. Do not include personal details or secrets."
    },
    "estimate": {
      "anyOf": [
        {
          "$ref": "#/$defs/EstimateContext"
        },
        {
          "type": "null"
        }
      ]
    },
    "wtp": {
      "anyOf": [
        {
          "$ref": "#/$defs/WtpAnswer"
        },
        {
          "type": "null"
        }
      ]
    },
    "finding_text": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 300
        },
        {
          "type": "null"
        }
      ],
      "title": "Finding Text",
      "description": "Unmatched kind only."
    },
    "website": {
      "type": "string",
      "title": "Website",
      "description": "Leave empty (spam trap).",
      "default": ""
    }
  },
  "type": "object",
  "required": [
    "scope"
  ],
  "$defs": {
    "EstimateContext": {
      "properties": {
        "result_hash": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 71,
              "pattern": "^sha256:[0-9a-f]{8,64}$"
            },
            {
              "type": "null"
            }
          ],
          "title": "Result Hash"
        },
        "input_hash": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 71,
              "pattern": "^sha256:[0-9a-f]{8,64}$"
            },
            {
              "type": "null"
            }
          ],
          "title": "Input Hash"
        },
        "ruleset_version": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 40,
              "pattern": "^[0-9A-Za-z.+-]{1,40}$"
            },
            {
              "type": "null"
            }
          ],
          "title": "Ruleset Version"
        },
        "contract_version": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 40,
              "pattern": "^[0-9A-Za-z.+-]{1,40}$"
            },
            {
              "type": "null"
            }
          ],
          "title": "Contract Version"
        },
        "cbsa": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 5,
              "pattern": "^\\d{5}$"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cbsa"
        },
        "expected": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 1000000000.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Expected"
        }
      },
      "type": "object",
      "title": "EstimateContext",
      "description": "Identifiers of the estimate being rated. Hashes, versions, region and total only.\n\nEvery field has a strict format (security review M1): they end up in the feedback digest,\nso nothing here may carry free text."
    },
    "WtpAnswer": {
      "properties": {
        "choice": {
          "type": "string",
          "enum": [
            "per_move_out",
            "monthly",
            "not_at_all"
          ],
          "title": "Choice"
        },
        "amount_usd": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 12
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Usd"
        },
        "payment_model": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "balance",
                "monthly",
                "no_preference"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Payment Model"
        },
        "minimum_topup_usd": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 12
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum Topup Usd"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "choice"
      ],
      "title": "WtpAnswer",
      "description": "Optional price evidence, never a quoted offer or a payment instruction."
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/tektolo-com-feedback-in"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.