{
  "name": "LookOlder",
  "description": "Free AI age progression: see yourself at 50, 70 and other ages from one selfie.",
  "url": "https://lookolder.online/",
  "version": "1",
  "webmcp": {
    "api": "document.modelContext",
    "spec": "https://github.com/webmachinelearning/webmcp",
    "note": "Tools register in the page when the browser exposes document.modelContext. Without it, use the HTTP equivalent listed on each tool."
  },
  "contact": {
    "privacy": "https://lookolder.online/privacy",
    "terms": "https://lookolder.online/terms"
  },
  "tools": [
    {
      "name": "list_age_tools",
      "title": "List age progression tools",
      "description": "List every age progression tool and guide on lookolder.online, with what each one generates (for example \"At 50\", \"At 70\", \"Salt & pepper\") and its URL. Read-only: returns the public catalogue and does not upload, generate or change anything.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "age-progression",
              "guide"
            ],
            "description": "Restrict to portrait-generating tools or to explanatory guides."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": false
      },
      "http": {
        "method": "GET",
        "path": "/api/tools",
        "url": "https://lookolder.online/api/tools"
      }
    },
    {
      "name": "get_age_tool",
      "title": "Get one age progression tool",
      "description": "Get the detail of a single tool or guide by its id: what it generates, its section outline, its frequently asked questions and its URL. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "toolId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "Tool id from list_age_tools, for example \"what-will-i-look-like-at-50\" or \"home\"."
          }
        },
        "required": [
          "toolId"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": false
      },
      "http": {
        "method": "GET",
        "path": "/api/tools/{toolId}",
        "url": "https://lookolder.online/api/tools/{toolId}"
      }
    },
    {
      "name": "search_site",
      "title": "Search the site",
      "description": "Find the tool or guide that matches a request such as \"see myself with gray hair\" or \"twenty years older\". Matches the query against titles, summaries and generated outputs. Read-only: returns catalogue entries, generates no images.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Case-insensitive text matched against tool titles, summaries and output labels."
          },
          "kind": {
            "type": "string",
            "enum": [
              "age-progression",
              "guide"
            ],
            "description": "Restrict to portrait-generating tools or to explanatory guides."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Maximum number of results (default 5)."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": false
      },
      "http": {
        "method": "GET",
        "path": "/api/tools",
        "note": "The `query`, `kind` and `limit` arguments filter the response client-side; they are not sent to the API.",
        "url": "https://lookolder.online/api/tools"
      }
    },
    {
      "name": "open_age_tool",
      "title": "Open an age progression tool",
      "description": "Navigate the current browser tab to one of the tools so the visitor can upload a photo there. This only opens the page: it does not upload anything, does not accept the 18+ consent and does not generate an image. The visitor completes those steps themselves.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "toolId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "Tool id from list_age_tools, for example \"gray-hair-filter\"."
          }
        },
        "required": [
          "toolId"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": false
      },
      "http": {
        "method": "GET",
        "path": "/{toolId}",
        "note": "Without WebMCP this is a plain page visit. The tool only navigates; the visitor uploads the photo and gives consent.",
        "url": "https://lookolder.online/{toolId}"
      }
    },
    {
      "name": "search_faq",
      "title": "Search the FAQ",
      "description": "Answer a question about lookolder.online from its published FAQ: accuracy, photo retention, supported faces, age limits, cost. Returns question and answer pairs with the page they come from. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Case-insensitive text matched against FAQ questions and answers."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Maximum number of entries to return (default 5)."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": true
      },
      "http": {
        "method": "GET",
        "path": "/api/faq",
        "note": "The `query` and `limit` arguments filter the response client-side; they are not sent to the API.",
        "url": "https://lookolder.online/api/faq"
      }
    },
    {
      "name": "get_photo_guidelines",
      "title": "Get photo guidelines",
      "description": "Get the rules for an input photo that produces a good age progression: framing, lighting, angle and what to avoid. Useful before telling someone which photo to use. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": false
      },
      "http": {
        "method": "GET",
        "path": "/api/info",
        "note": "Returns the photoGuidelines field of the info document.",
        "url": "https://lookolder.online/api/info"
      }
    },
    {
      "name": "get_usage_limits",
      "title": "Get usage limits and price",
      "description": "Get what the service costs and what it limits: free tier, generations allowed per visitor per day, maximum upload size, accepted formats and whether an account is needed. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": false
      },
      "http": {
        "method": "GET",
        "path": "/api/info",
        "note": "Returns the limits and service fields of the info document.",
        "url": "https://lookolder.online/api/info"
      }
    },
    {
      "name": "get_privacy_summary",
      "title": "Get the privacy summary",
      "description": "Get how uploaded photos are handled: retention period, whether they train models, whether face recognition runs, the minimum age and the own-photo-only rule. Read-only. Answers \"is it safe to upload my face here\" without reading the whole policy.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "untrustedContentHint": false
      },
      "http": {
        "method": "GET",
        "path": "/api/info",
        "note": "Returns the privacy field of the info document.",
        "url": "https://lookolder.online/api/info"
      }
    }
  ]
}