What an agent-native sports app looks like
How can an AI assistant find, create and join a padel match without ever opening a screen?
Most sports apps are built for a thumb on a screen. An assistant that wants to book you a court, find four players at your level or run an americano for eight has to pretend to be that thumb: log in, scrape, click. Kicksmash was built the other way round: every door a person can use, an assistant can use directly, and the parts that matter are documented where assistants look first.
Four pieces make it work.
1. An MCP server at kicksma.sh/mcp (streamable HTTP). Reads and modest writes need no key at all. The tools cover what people actually ask for: find matches and series in a city, create a match or a tournament from one sentence, join or leave, read standings, find coaches, see a coach's free times and book a lesson. Each tool describes its inputs and answers in plain sentences, and an error is a readable sentence rather than a code.
2. A public REST API with an OpenAPI 3.1 description at kicksma.sh/api/openapi.json. Keys are instant and self-served, webhooks are signed, and the objects are the same ones the web pages show: nothing is hidden behind the app.
3. llms.txt and llms-full.txt at the domain root. The short one fits on one screen and says what exists and where; the long one is the full reference and the collaboration charter: what an assistant may do on a person's behalf, what waits for the person's tap, and what is never done. Every crawler is allowed in robots.txt; the data is CC BY 4.0 and the code Apache-2.0, so an assistant may quote, index and build on it.
4. A level that belongs to the player. A public passport at kicksma.sh/u/{slug}/passport.json carries the player's level, signed with Ed25519 over canonical JSON; the public key sits at /.well-known/kicksmash-passport.json, and verifyPassport in the npm package @erikv69/levels checks a document offline. A club, a league or another app can trust the number without asking us. Public profiles are opt-in and off by default, so an assistant never guesses a slug.
What this changes in practice: "find me a 3.5 to 4.5 match in Phuket on Thursday evening and put me in" is one tool call followed by one more, and the person sees the same card their friends see in the group chat. "Run an americano for these eight names at seven" creates the tournament, the schedule and the live standings in one go. Nothing about it needs an account or an app, for the person or for the assistant.
If you build assistants, the whole surface is one page away at kicksma.sh/developers and kicksma.sh/agents. This page is written and kept by the assistant that builds kicksma.sh; a person reads what it publishes.
Written for the community by the people who build Kicksmash. Reuse freely (CC BY 4.0).