Skip to content
Back to EscortFox

Card snapshot

escortfox.com · 2026-10-31 09:09:39 UTC · 9c65b5401a2c5b7acd74295e533dc7421d688a379ee77d4f3df52dcdaf86d87f

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "EscortFox",
  "description": "Read-only search of the EscortFox directory of independent escorts, agencies and venues: countries, cities, districts, services and listing summaries, each with its escortfox.com link. Ask in plain text (\"escorts in Berlin\", \"venues in Prague\", \"agencies in Germany\") or call a skill with a data part {\"skill\": \"search_listings\", \"arguments\": {...}}. Contact details and photos are only on escortfox.com. Also available as an MCP server at https://escortfox.com/mcp.",
  "version": "1.0.0",
  "supportedInterfaces": [
    {
      "url": "https://escortfox.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://escortfox.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "protocolVersion": "0.3.0",
  "url": "https://escortfox.com/a2a",
  "preferredTransport": "JSONRPC",
  "provider": {
    "organization": "EscortFox",
    "url": "https://escortfox.com"
  },
  "iconUrl": "https://escortfox.com/static/icons/icon-192x192.png",
  "documentationUrl": "https://escortfox.com/developers",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "securitySchemes": {},
  "security": [],
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "ask",
      "name": "Ask in plain text",
      "description": "Answer a short plain-text request about the directory: listings of a type in a city (\"escorts in London\", \"venues in Prague\"), agencies in a country, the cities of a country, the countries covered or the service vocabulary. Replies list up to 20 summaries with their links.",
      "tags": [
        "directory",
        "escorts",
        "search"
      ],
      "examples": [
        "Escorts in London",
        "Verified escorts in Zurich",
        "Venues in Prague",
        "Agencies in Germany",
        "Cities in Spain"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "search_listings",
      "name": "Search listings",
      "description": "Search the EscortFox directory of independent escorts, agencies and venues in one place. Returns up to 20 listing summaries per page: name, location, age, starting rate, verification status, incall/outcall, venue type, a short teaser and the listing's escortfox.com link. Summaries have no contact details or photos: always give the user each listing's link, where both are shown. \"escort\" and \"venue\" searches need country + city (find them with list_countries and list_cities); \"agency\" searches need country only. Only pages 0-4 (100 results) exist \u2014 narrow the search with district, service or verified instead of paging further. Call it with a data part {\"skill\": \"search_listings\", \"arguments\": {...}}; the arguments follow this JSON Schema: {\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\",\"description\":\"What to search: \\\"escort\\\", \\\"venue\\\" or \\\"agency\\\".\",\"enum\":[\"escort\",\"venue\",\"agency\"]},\"country\":{\"type\":\"string\",\"description\":\"Required. ISO 3166-1 alpha-2 country code (e.g. \\\"DE\\\"), or a city's region code where the site splits a country by state (e.g. \\\"US-CA\\\"). Get valid values from list_countries / list_cities.\",\"pattern\":\"^[A-Za-z]{2}(-[A-Za-z0-9]{1,3})?$\",\"maxLength\":6},\"city\":{\"type\":\"string\",\"description\":\"City slug from list_cities (e.g. \\\"berlin\\\"). Required for escort and venue searches; not allowed for agency searches.\",\"pattern\":\"^[a-z0-9]+(-[a-z0-9]+)*$\",\"maxLength\":80},\"district\":{\"type\":\"string\",\"description\":\"Optional district slug from list_districts (escort and venue searches).\",\"pattern\":\"^[a-z0-9]+(-[a-z0-9]+)*$\",\"maxLength\":80},\"service\":{\"type\":\"string\",\"description\":\"Optional service slug from list_services (escort searches only).\",\"pattern\":\"^[a-z0-9]+(-[a-z0-9]+)*$\",\"maxLength\":80},\"verified\":{\"type\":\"boolean\",\"description\":\"true = only escorts whose photos and phone are verified (escort searches only).\"},\"lang\":{\"type\":\"string\",\"description\":\"Language of the teaser text and of the escortfox.com links. Default \\\"en\\\".\",\"enum\":[\"en\",\"de\",\"sk\",\"cs\",\"tr\",\"ru\",\"uk\",\"es\",\"pt\",\"ro\",\"hu\",\"ar\",\"ja\",\"fr\",\"it\",\"nl\",\"sv\",\"no\",\"pl\",\"el\",\"ko\"]},\"page\":{\"type\":\"integer\",\"description\":\"Zero-based results page, 0-4 (20 results each). Default 0.\",\"minimum\":0,\"maximum\":4}},\"required\":[\"type\",\"country\"],\"additionalProperties\":false}",
      "tags": [
        "directory",
        "escorts",
        "search"
      ],
      "examples": [
        "Escorts in Berlin",
        "{\"skill\":\"search_listings\",\"arguments\":{\"type\":\"escort\",\"country\":\"DE\",\"city\":\"berlin\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "get_listing",
      "name": "Get a listing",
      "description": "Get the summary of one EscortFox listing by its numeric id \u2014 the number at the end of a listing link (\u2026/anna-12345 \u2192 12345). Returns the same fields as search_listings and the listing's escortfox.com link; contact details and photos are only on that page. Call it with a data part {\"skill\": \"get_listing\", \"arguments\": {...}}; the arguments follow this JSON Schema: {\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"description\":\"The listing id.\",\"minimum\":1},\"lang\":{\"type\":\"string\",\"description\":\"Language of the teaser text and of the escortfox.com links. Default \\\"en\\\".\",\"enum\":[\"en\",\"de\",\"sk\",\"cs\",\"tr\",\"ru\",\"uk\",\"es\",\"pt\",\"ro\",\"hu\",\"ar\",\"ja\",\"fr\",\"it\",\"nl\",\"sv\",\"no\",\"pl\",\"el\",\"ko\"]}},\"required\":[\"id\"],\"additionalProperties\":false}",
      "tags": [
        "directory",
        "escorts",
        "search"
      ],
      "examples": [
        "{\"skill\":\"get_listing\",\"arguments\":{\"id\":13655}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_countries",
      "name": "List countries",
      "description": "List the countries that have active EscortFox listings, with the number of escort and venue listings in each. Use a country code as `country` in list_cities and search_listings. Call it with a data part {\"skill\": \"list_countries\", \"arguments\": {...}}; the arguments follow this JSON Schema: {\"type\":\"object\",\"properties\":{},\"additionalProperties\":false}",
      "tags": [
        "directory",
        "escorts",
        "reference data"
      ],
      "examples": [
        "Which countries do you cover?",
        "{\"skill\":\"list_countries\",\"arguments\":{}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_cities",
      "name": "List cities",
      "description": "List the cities of a country that have active listings, busiest first, with escort and venue counts and each city's escortfox.com link. Use the city slug as `city` in search_listings, and the city's region as `country` where it differs from the country code (US states, e.g. \"US-CA\"). Call it with a data part {\"skill\": \"list_cities\", \"arguments\": {...}}; the arguments follow this JSON Schema: {\"type\":\"object\",\"properties\":{\"country\":{\"type\":\"string\",\"description\":\"Required. ISO 3166-1 alpha-2 country code (e.g. \\\"DE\\\"), or a city's region code where the site splits a country by state (e.g. \\\"US-CA\\\"). Get valid values from list_countries / list_cities.\",\"pattern\":\"^[A-Za-z]{2}(-[A-Za-z0-9]{1,3})?$\",\"maxLength\":6}},\"required\":[\"country\"],\"additionalProperties\":false}",
      "tags": [
        "directory",
        "escorts",
        "reference data"
      ],
      "examples": [
        "Cities in Germany",
        "{\"skill\":\"list_cities\",\"arguments\":{\"country\":\"DE\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_districts",
      "name": "List districts",
      "description": "List the districts of a city that have active listings (most cities have none). Use a district slug as `district` in search_listings. Call it with a data part {\"skill\": \"list_districts\", \"arguments\": {...}}; the arguments follow this JSON Schema: {\"type\":\"object\",\"properties\":{\"country\":{\"type\":\"string\",\"description\":\"Required. The city's region from list_cities, or its ISO 3166-1 alpha-2 country code (e.g. \\\"DE\\\"), or a city's region code where the site splits a country by state (e.g. \\\"US-CA\\\"). Get valid values from list_countries / list_cities.\",\"pattern\":\"^[A-Za-z]{2}(-[A-Za-z0-9]{1,3})?$\",\"maxLength\":6},\"city\":{\"type\":\"string\",\"description\":\"Required. City slug from list_cities.\",\"pattern\":\"^[a-z0-9]+(-[a-z0-9]+)*$\",\"maxLength\":80}},\"required\":[\"country\",\"city\"],\"additionalProperties\":false}",
      "tags": [
        "directory",
        "escorts",
        "reference data"
      ],
      "examples": [
        "{\"skill\":\"list_districts\",\"arguments\":{\"country\":\"GB\",\"city\":\"london\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_services",
      "name": "List services",
      "description": "List the service vocabulary of escort listings (slug and English name). Use a slug as `service` in search_listings (escort searches only). Call it with a data part {\"skill\": \"list_services\", \"arguments\": {...}}; the arguments follow this JSON Schema: {\"type\":\"object\",\"properties\":{},\"additionalProperties\":false}",
      "tags": [
        "directory",
        "escorts",
        "reference data"
      ],
      "examples": [
        "Which services can I filter by?",
        "{\"skill\":\"list_services\",\"arguments\":{}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    }
  ]
}