# Text Similarity Fuzzy Rank

> Text Similarity Fuzzy Rank is a paid API for AI agents from text-similarity.x402tookit.com, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-21).

Ranks up to 50 candidate strings against a query using Jaro-Winkler, Levenshtein, Dice, or cosine similarity, returning results sorted best-first with scores.

## Facts

- Endpoint: GET https://text-similarity.x402tookit.com/fuzzy-rank?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/text-similarity-fuzzy-rank-09dc7e7d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_3EJH4kKwpj6n69eNT2wAR

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability text-similarity-fuzzy-rank-09dc7e7d
```

Example prompt: I have a query 'Jonathan Smith' and a list of 10 name candidates — can you rank them by similarity using Jaro-Winkler and only return the top 3 results with scores above 0.6?

## When to prefer this

Use this endpoint when you need to rank multiple candidate strings against a single query in one call, rather than comparing pairs one at a time. It is ideal for autocomplete ranking, fuzzy search result sorting, deduplication pipelines, and name matching tasks where you want to quickly identify the best matches from a list. Prefer Jaro-Winkler for short names and typos, Levenshtein for edit-distance-based matching, Dice for character n-gram overlap, and cosine for longer multi-word texts. Choose this over individual pairwise comparison endpoints when you have a batch of candidates to evaluate simultaneously.

## Known failure modes

- Missing required 'query' or 'candidates' parameter returns a validation error
- More than 50 candidates submitted causes rejection or truncation
- Candidate or query strings exceeding 200 characters may be rejected
- Invalid scorer enum value returns an error
- minScore outside 0–1 range causes a validation error
- Malformed candidates string (not pipe-separated, newline-separated, or JSON array) causes parse failure
- Network timeout if candidates list is very large near the 50-item limit

## How this service works

Rank up to 50 candidates against a query by Jaro-Winkler, Levenshtein, Dice or cosine, best first, with scores.

## Output

A JSON object containing the original query, the scorer used, and a ranked array of candidates each with their rank number, original index, similarity score, and the candidate text — sorted best-first. Also includes metadata like total candidate count, how many were returned, and whether the response was degraded.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "query",
      "candidates"
     ],
     "properties": {
      "limit": {
       "type": "integer",
       "description": "Return only the top N, 1 to 50 (default all)"
      },
      "query": {
       "type": "string",
       "description": "The text to match, up to 200 characters"
      },
      "scorer": {
       "enum": [
        "jaro-winkler",
        "levenshtein",
        "dice",
        "cosine"
       ],
       "type": "string",
       "description": "jaro-winkler (default), levenshtein, dice (character bigram set) or cosine (word counts)"
      },
      "minScore": {
       "type": "number",
       "description": "Drop candidates scoring below this, 0 to 1 (default 0)"
      },
      "candidates": {
       "type": "string",
       "description": "Up to 50 candidates separated by | or newlines, or a JSON array of strings; 200 characters each"
      },
      "ignoreCase": {
       "type": "boolean",
       "description": "true (default) lowercases query and candidates"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "asOf": {
       "type": [
        "null",
        "string"
       ]
      },
      "query": {
       "type": [
        "null",
        "string"
       ]
      },
      "ranked": {
       "type": [
        "array",
        "null"
       ],
       "items": {
        "type": "object",
        "properties": {
         "rank": {
          "type": [
           "null",
           "number"
          ]
         },
         "index": {
          "type": [
           "null",
           "number"
          ]
         },
         "score": {
          "type": [
           "null",
           "number"
          ]
         },
         "candidate": {
          "type": [
           "null",
           "string"
          ]
         }
        }
       }
      },
      "scorer": {
       "type": [
        "null",
 
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/text-similarity-fuzzy-rank-09dc7e7d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from text-similarity.x402tookit.com](https://www.zero.xyz/host/text-similarity.x402tookit.com/llms.txt)
