{"name":"io.github.kevinbett/sampuli","slug":"kevinbett-sampuli","title":"Sampuli","description":"Format-true synthetic test data for 90 countries — IBANs, SWIFT/BIC, IDs, cards, all certified.","url":"https://mcp.market/server/kevinbett-sampuli","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":14,"stars":null,"forks":null,"downloads_week":65,"last_push_at":null,"license":"MIT"},"uptime":{"percent":100,"checks":5,"ok":5,"last_checked_at":"2026-09-20T16:41:12.800Z","last_ok_at":"2026-09-20T16:41:12.800Z","latency_ms":208},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/kevinbett/sampuli","website":null,"version":"0.1.3","remotes":[{"type":"streamable-http","url":"https://sampuli.site/api/mcp"}],"packages":[{"registryType":"npm","identifier":"@sampuli/mcp","version":"0.1.2","transport":{"type":"stdio"}},{"registryType":"oci","identifier":"ghcr.io/kevinbett/sampuli-mcp:0.1.3","transport":{"type":"stdio"}}],"tools":[{"name":"sampuli_describe_country","description":"List a country's available fields (phone, national ID, tax number, IBAN, SWIFT/BIC, card, …) and preset scenarios.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"country":{"type":"string","description":"ISO code, e.g. \"ke\", \"de\", \"us\", \"ng\"."}},"required":["country"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampuli_fetch","description":"Fetch synthetic test data from a natural request when you don't know the exact spec — e.g. \"a SWIFT code for China\", \"Kenya phone number\", \"German passport\", \"a Nigerian BVN\". Sampuli resolves the country and field for you (China→cn, \"SWIFT code\"→swift) and generates a format-true value. Prefer sampuli_generate when you already have a spec like \"cn.swift\".","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Plain-language request, e.g. \"a SWIFT code for China\", \"UK IBAN\", \"India GSTIN\"."},"count":{"type":"integer","minimum":1,"maximum":10000,"description":"How many (omit for one)."},"format":{"type":"string","enum":["json","csv"],"description":"Output format (default json)."},"seed":{"type":"string","description":"Reproducible output."}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampuli_generate","description":"Generate format-true, entirely synthetic test data for a country. spec is \"<country>.<selector>\" where selector is a field key (\"phone\"), \"person\" (a full coherent record), or \"preset:<key>\" (a scenario). Values match each country's real formats and pass validators (IBAN mod-97, card Luhn, …) but are never real or registered.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spec":{"type":"string","description":"e.g. \"ke.person\" (core fields), \"ke.full\" (every field incl. card/passport/income), \"de.iban\", \"ng.phone\", \"ke.company\", \"ke.product\", \"ke.preset:kyc\"."},"count":{"type":"integer","minimum":1,"maximum":10000,"description":"How many rows (omit for one)."},"fields":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","const":"all"}],"description":"Which fields for a person record, or \"all\"."},"seed":{"type":"string","description":"Reproducible output — same seed, same data."},"format":{"type":"string","enum":["json","csv"],"description":"Output format (default json)."}},"required":["spec"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampuli_list_countries","description":"List every country Sampuli can generate synthetic test data for (90 countries), with the ISO code used as a spec prefix.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampuli_list_types","description":"List the country-agnostic generic types (uuid, enum, int, float, date, vin, isbn, imei, mac, email, …) usable in a custom schema or as \"any.<type>\".","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampuli_schema","description":"Generate rows from a custom schema, mixing generic types and country-accurate fields. Each field has a name and a type — a generic type (\"uuid\", \"int:0,500\", \"enum:free,pro,team\", \"date:2021,2025\") or a country field spec (\"ke.phone\", \"de.iban\"). Optional per-field \"blank\" (0–1) makes it null that often.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Column name."},"type":{"type":"string","description":"Generic type or country field spec, e.g. \"uuid\", \"int:0,500\", \"ke.phone\"."},"blank":{"type":"number","minimum":0,"maximum":1,"description":"Probability (0–1) the value is null."}},"required":["name","type"],"additionalProperties":false},"description":"The columns to generate."},"count":{"type":"integer","minimum":1,"maximum":10000,"description":"How many rows (default 1)."},"seed":{"type":"string","description":"Reproducible output."},"format":{"type":"string","enum":["json","csv"]}},"required":["fields"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":75,"grade":"B","scanned_at":"2026-09-19T20:14:32.065Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:14:32.084Z","components":{"code":{"score":25,"max":25,"notes":["4 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 453ms"]},"poisoning":{"score":15,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[],"inputs":{"probes":[{"url":"https://sampuli.site/api/mcp","reachable":true,"authRequired":false,"latencyMs":453,"serverInfo":{"name":"sampuli","version":"0.1.0"}}],"packages":[{"registryType":"npm","identifier":"@sampuli/mcp","version":"0.1.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-09-11T18:48:55.825Z","repositoryUrl":"git+https://github.com/kevinbett/sampuli.git","weeklyDownloads":65}],"repo":{"found":false,"owner":"kevinbett","repo":"sampuli","error":"repo not found"},"icon":{"url":"https://sampuli.site/icon-512.png","source":"registry","width":512,"height":512},"presence":{"stars":null,"forks":null,"downloadsWeek":65,"license":"MIT","lastPushAt":null,"score":14}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 75","createdAt":"2026-09-19T20:14:33.626Z"}],"reviews":[]}