{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=rajkaria/fits@0.1.1","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/fits@0.1.1","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/rajkaria/fits@0.1.1","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/rajkaria/fits@0.1.1 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Before you paste forty kilobytes into an agent: will it fit, and what will it cost. Point it at text or at a file and it answers both, plus the things nobody bothers to count — bytes, lines, words, and what the text actually looks like. The bytes, lines and words are facts. The token count is not, and this Play refuses to pretend otherwise. The standard library has no tokenizer, so the count comes from a stated character-class model — ASCII prose at roughly four characters per token, punctuation-dense code nearer three, CJK at about one token per character — and it is printed as a RANGE with a band of ±15%, widened to ±25% when the text is mostly non-ASCII. The method travels in the same output as the number, so nobody has to guess how much to trust it. A single confident figure would have been easier to read and worse to rely on. The money is real, though: the cost comes from the same maintained price table the \u0060comped\u0060 Play prices a month with, so the rates are the ones actually charged, and a model the tab","distribution":{"digest":"sha256:0d436cc08e98090c354aa43413860251d54a985db304930d0a1d259dc5f8e44a","mediaType":"application/vnd.modiqo.rote-flow","size":81617,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/rajkaria/fits@0.1.1","inputPolicy":{"omittedValues":"inspect_full_parameters_before_collecting_values_or_consent","optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/rajkaria/fits@0.1.1","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/rajkaria/fits@0.1.1.json"},"name":"fits","owner":{"kind":"user","slug":"rajkaria"},"parameters":[{"default":"","description":"The text to measure. Leave it empty and set path instead to measure a file or a folder.","example":"the text you are about to paste","input":{"allowCustom":true,"choices":[],"label":"Text"},"name":"text","required":false,"type":"string"},{"default":"","description":"Measured instead of text. A folder is read up to 200 files deep and totalled.","example":"./src/main.py","input":{"allowCustom":true,"choices":[],"label":"Path"},"name":"path","required":false,"type":"string"},{"default":200000,"description":"The window you are aiming at, in tokens. The percentage and the headroom are measured against this.","example":200000,"input":{"allowCustom":true,"choices":[],"label":"Window"},"name":"window","required":false,"type":"integer"},{"default":"claude-opus-5,claude-sonnet-5,claude-haiku-4-5","description":"Comma-separated. A model the price table does not know is named in the output rather than priced at zero.","example":"claude-opus-5,claude-sonnet-5","input":{"allowCustom":true,"choices":[],"label":"Models"},"name":"models","required":false,"type":"string"},{"default":"","description":"Empty uses the price table bundled with the Play. Point it at your own JSON to price with different rates.","example":"~/prices.json","input":{"allowCustom":true,"choices":[],"label":"Rates path"},"name":"rates_path","required":false,"type":"string"},{"default":"false","description":"true runs the whole Play against bundled synthetic input, so a first run needs nothing configured and touches nothing of yours.","example":"false","input":{"allowCustom":true,"choices":[],"label":"Demo"},"name":"demo","required":false,"type":"string"},{"default":"","description":"Empty reads the real clock. An ISO-8601 instant makes the run reproducible, which is how the tests and the demo produce the same bytes on every machine.","example":"2026-09-05T14:22:03Z","input":{"allowCustom":true,"choices":[],"label":"Now"},"name":"now","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/fits@0.1.1 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters","whenValuesOmitted":"Run step 1 before collecting inputs or showing defaults; omittedFields are unknown values, not absent defaults or exhaustive choices."},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/rajkaria/fits@0.1.1","headlessCommandTemplate":"rote play run https://play.modiqo.ai/rajkaria/fits@0.1.1 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.80.0"},"publishedAt":"2026-09-05T17:49:57.079075+00:00","reference":"rajkaria/fits@0.1.1","requested":"rajkaria/fits","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"hostToolRequirements":[{"command":"python3","required":true,"versionRequirement":null}],"localTools":["python3"],"roteCli":{"minimumVersion":"0.91.0"},"sessions":false},"resolution":"latest","schema":"rote.play.v1","stats":{"downloads":2,"installs":0},"steps":{"count":1,"names":["report"]},"title":"fits","type":"play","version":"0.1.1","visibility":"public"}