{
  "openapi": "3.1.0",
  "info": {
    "title": "IZT Blink website: machine-readable API",
    "version": "5.1",
    "summary": "Facts, search, the Ask Blink assistant and an MCP endpoint for IZT Blink, remote support and remote access by IZT Apps (available in the cloud or on-premises).",
    "description": "Read-only endpoints of the IZT Blink marketing website (https://blink.izt.app), generated from the same content registry as the pages. Facts verified against the product on 2026-11-13; content updated 2026-11-13. Also available: https://blink.izt.app/llms.txt, https://blink.izt.app/llms-full.txt and a Markdown twin of every page (append .md; home is /index.md)."
  },
  "servers": [
    {
      "url": "https://blink.izt.app"
    }
  ],
  "externalDocs": {
    "description": "For AI and machines",
    "url": "https://blink.izt.app/for-ai"
  },
  "tags": [
    {
      "name": "facts",
      "description": "The product content registry."
    },
    {
      "name": "assistant",
      "description": "Ask Blink, the site’s question-answering assistant."
    },
    {
      "name": "mcp",
      "description": "Model Context Protocol server for AI clients."
    }
  ],
  "paths": {
    "/api/facts.json": {
      "get": {
        "tags": [
          "facts"
        ],
        "operationId": "getFacts",
        "summary": "Get the full content registry",
        "description": "Product identity, availability, the two kinds of session (Support and Access), supported systems, quotable numbers, the flow of both modes, every feature (status, sessions, computers, plan), plans and pricing (USD per technician per month, annual and monthly billing, availability, on-premises terms, recording storage, unlimited Access devices), the MSP model, security statements, FAQ, customer documentation links, what Blink does not claim, trial and contact page URLs and the page list.",
        "responses": {
          "200": {
            "description": "The registry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Facts"
                }
              }
            }
          }
        }
      }
    },
    "/api/search.json": {
      "get": {
        "tags": [
          "facts"
        ],
        "operationId": "search",
        "summary": "Search features, FAQ, security facts, glossary and plans",
        "description": "Keyword search over the registry. Title hits score higher than body hits; results link to the exact section of the site.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Search words, e.g. “unattended access”.",
            "schema": {
              "type": "string",
              "maxLength": 200
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum results (1 to 50).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10
            }
          },
          {
            "name": "kinds",
            "in": "query",
            "required": false,
            "description": "Comma-separated filter: feature, faq, security, glossary, plan.",
            "schema": {
              "type": "string"
            },
            "example": "faq,feature"
          }
        ],
        "responses": {
          "200": {
            "description": "Matching entries, best first.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing query or unknown kind.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/ask": {
      "get": {
        "tags": [
          "assistant"
        ],
        "operationId": "askStatus",
        "summary": "Is the assistant available, and its limits",
        "responses": {
          "200": {
            "description": "Availability and input limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "available": {
                      "type": "boolean"
                    },
                    "limits": {
                      "type": "object",
                      "properties": {
                        "messages": {
                          "type": "integer"
                        },
                        "chars": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "assistant"
        ],
        "operationId": "ask",
        "summary": "Ask Blink a question",
        "description": "Send the conversation so far; the answer streams back as server-sent events grounded in the registry. Rate-limited per client. When the assistant is not configured, responds 503 with site-search results instead.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "messages"
                ],
                "properties": {
                  "messages": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "object",
                      "required": [
                        "role",
                        "content"
                      ],
                      "properties": {
                        "role": {
                          "type": "string",
                          "enum": [
                            "user",
                            "assistant"
                          ]
                        },
                        "content": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "context": {
                    "type": "string",
                    "description": "Optional page slug the question is about (e.g. \"security\" or \"features/session-recording\")."
                  }
                }
              },
              "example": {
                "messages": [
                  {
                    "role": "user",
                    "content": "Does the customer need to install anything?"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Server-sent events: `data: {\"type\":\"meta\"|\"text\"|\"done\"|\"error\", …}` lines.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "413": {
            "description": "Body too large.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limited.",
            "headers": {
              "retry-after": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "retryAfter": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Assistant not configured; `results` holds site-search hits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "const": "assistant_unavailable"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "tags": [
          "mcp"
        ],
        "operationId": "mcp",
        "summary": "Model Context Protocol endpoint (Streamable HTTP)",
        "description": "JSON-RPC 2.0 messages per the Model Context Protocol (Streamable HTTP transport). Use an MCP client rather than calling it by hand: initialize, then tools/list to see the available tools for searching and reading the Blink facts. Client configuration: {\"mcpServers\":{\"blink\":{\"type\":\"http\",\"url\":\"https://blink.izt.app/mcp\"}}}",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/JsonRpcRequest"
                  },
                  {
                    "type": "array",
                    "description": "JSON-RPC batch (accepted for older clients; batching was removed in MCP 2025-06-18).",
                    "items": {
                      "$ref": "#/components/schemas/JsonRpcRequest"
                    },
                    "minItems": 1
                  }
                ]
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/list"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC 2.0 response (or an array of them for a batch). The server is stateless and read-only; it does not open an SSE stream.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "202": {
            "description": "Accepted (the request held only notifications)."
          },
          "400": {
            "description": "Invalid JSON-RPC request or unsupported MCP-Protocol-Version header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "413": {
            "description": "Body too large.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "mcp"
        ],
        "operationId": "mcpGet",
        "summary": "Not supported (no SSE stream)",
        "responses": {
          "405": {
            "description": "The server is stateless and offers no SSE stream; use POST.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mcp"
        ],
        "operationId": "mcpDelete",
        "summary": "Not supported (no sessions)",
        "responses": {
          "405": {
            "description": "There is no MCP session to delete.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Facts": {
        "type": "object",
        "required": [
          "schema_version",
          "updated",
          "source",
          "product",
          "modes",
          "features",
          "plans",
          "faq"
        ],
        "properties": {
          "schema_version": {
            "type": "string",
            "example": "5.1"
          },
          "updated": {
            "type": "string",
            "format": "date"
          },
          "facts_verified": {
            "type": "string",
            "format": "date"
          },
          "source": {
            "type": "string"
          },
          "site": {
            "type": "string",
            "format": "uri"
          },
          "links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "uri"
            }
          },
          "product": {
            "type": "object"
          },
          "modes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "enum": [
                    "support",
                    "access"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "planName": {
                  "type": "string"
                },
                "oneLiner": {
                  "type": "string"
                },
                "platforms": {
                  "type": "string"
                },
                "points": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "supported_systems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "what": {
                  "type": "string"
                },
                "supported": {
                  "type": "string"
                }
              }
            }
          },
          "flow": {
            "type": "object",
            "properties": {
              "modes": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "access_install_methods": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "session_states": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              }
            }
          },
          "plans": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "example": "USD"
              },
              "unit": {
                "type": "string",
                "description": "What a plan or add-on price is counted per."
              },
              "default_billing": {
                "type": "string",
                "enum": [
                  "annual",
                  "monthly"
                ]
              },
              "billing_periods": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "billed": {
                      "type": "string"
                    }
                  }
                }
              },
              "annual_saving_percent": {
                "type": "integer",
                "description": "Whole percent saved with annual billing, rounded down."
              },
              "plans": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PlanPrice"
                }
              },
              "technician_seat": {
                "type": "object"
              },
              "access_devices": {
                "type": "object",
                "properties": {
                  "unlimited": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              "add_ons": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AddOnPrice"
                }
              },
              "on_premises": {
                "type": "object",
                "description": "Plans, billing, minimum technicians and one-time installation fee (USD)."
              },
              "recording_storage": {
                "type": "object",
                "description": "Cloud recording storage price, USD per GB per month."
              },
              "on_premises_server": {
                "type": "object"
              },
              "on_premises_docs_url": {
                "type": "string",
                "format": "uri"
              },
              "statements": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "comparison": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "licensing": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "body": {
                      "type": "string"
                    }
                  }
                }
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "msp": {
            "type": "object"
          },
          "docs": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "links": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "features": {
            "type": "object",
            "properties": {
              "status_labels": {
                "type": "object"
              },
              "session_labels": {
                "type": "object"
              },
              "platform_labels": {
                "type": "object"
              },
              "plan_labels": {
                "type": "object"
              },
              "groups": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Feature"
                }
              }
            }
          },
          "security": {
            "type": "object"
          },
          "faq": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "faqs": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string"
                      },
                      "a": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "not_claimed": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "topic": {
                  "type": "string"
                },
                "statement": {
                  "type": "string"
                }
              }
            }
          },
          "contact": {
            "type": "object",
            "properties": {
              "contact_url": {
                "type": "string",
                "format": "uri"
              },
              "trial_url": {
                "type": "string",
                "format": "uri"
              },
              "pricing_url": {
                "type": "string",
                "format": "uri"
              },
              "join_url": {
                "type": "string",
                "format": "uri"
              },
              "labels": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "trial_note": {
                "type": "string"
              },
              "self_serve_signup": {
                "type": "boolean"
              }
            }
          },
          "pages": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "Feature": {
        "type": "object",
        "required": [
          "id",
          "name",
          "summary",
          "detail",
          "status",
          "audience",
          "sessions",
          "platforms",
          "plan"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "shipping",
              "beta"
            ]
          },
          "audience": {
            "type": "string",
            "enum": [
              "technician",
              "customer",
              "team"
            ]
          },
          "sessions": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "support",
                "access"
              ]
            }
          },
          "platforms": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "windows",
                "mac"
              ]
            }
          },
          "plan": {
            "type": "string",
            "enum": [
              "core",
              "pro",
              "addon"
            ],
            "description": "core = Blink Core and Blink Pro; pro = Blink Pro only; addon = sold separately."
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "docs_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "PlanPrice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "core",
              "pro"
            ]
          },
          "name": {
            "type": "string"
          },
          "prices": {
            "type": "object",
            "description": "USD per technician per month.",
            "properties": {
              "annual": {
                "type": "number"
              },
              "monthly": {
                "type": "number"
              }
            }
          },
          "deployments": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "cloud",
                "on-premises"
              ]
            }
          },
          "availability": {
            "type": "string"
          },
          "annual_saving_percent": {
            "type": "integer"
          },
          "price_label": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "AddOnPrice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "price": {
            "type": "number",
            "description": "USD per technician per month."
          },
          "plans": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "price_label": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "SearchResponse": {
        "type": "object",
        "required": [
          "query",
          "count",
          "results"
        ],
        "properties": {
          "query": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "kind",
                "id",
                "title",
                "url",
                "score",
                "snippet"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "feature",
                    "faq",
                    "security",
                    "glossary",
                    "plan"
                  ]
                },
                "id": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "score": {
                  "type": "number"
                },
                "snippet": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "JsonRpcRequest": {
        "type": "object",
        "required": [
          "jsonrpc",
          "method"
        ],
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "method": {
            "type": "string",
            "examples": [
              "initialize",
              "tools/list",
              "tools/call"
            ]
          },
          "params": {
            "type": "object"
          }
        }
      }
    }
  }
}