{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=rajkaria/reply-debt@0.1.0","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/reply-debt@0.1.0","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/reply-debt@0.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/rajkaria/reply-debt@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"An unread badge counts messages. It does not know the difference between a newsletter and somebody who asked you a direct question eleven days ago and is still waiting. That difference is what this counts: threads where the last word is not yours, somebody asked for something, and nothing went back. The Play is two programs on purpose, and the seam between them is a file. One step reads a window of your mailbox and writes a normalised JSON file into \u0060out_dir\u0060; that step is the only part of this package that opens a connection, it is one short file you can read before you run it, and it asks for message *headers* — from, to, cc, date, subject, list headers — plus the mailbox's own one-line snippet. It does not ask for message bodies or attachments. The second half — the ageing, the card and the report — is \u0060daily_core\u0060, which imports no networking module at all and only ever reads that file. If the file is not there, that is a labelled absence and the run still completes. Debt is graded rather than counted. A","distribution":{"digest":"sha256:e190ed41368b6ae580910b5e4d504fe184e1c72c00aa78022b5439dffc40aaf6","mediaType":"application/vnd.modiqo.rote-flow","size":1027542,"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/reply-debt@0.1.0","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/reply-debt@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/rajkaria/reply-debt@0.1.0.json"},"name":"reply-debt","owner":{"kind":"user","slug":"rajkaria"},"parameters":[{"default":"~/daily","description":"Created if missing. Everything this Play writes goes here and nowhere else.","example":"~/daily","input":{"allowCustom":true,"choices":[],"label":"Out dir"},"name":"out_dir","required":false,"type":"string"},{"default":"false","description":"true runs the whole Play against a bundled synthetic mailbox of 52 threads, so a first run needs nothing installed and no account.","example":"false","input":{"allowCustom":true,"choices":[],"label":"Demo"},"name":"demo","required":false,"type":"string"},{"default":120,"description":"How many days of threads to fetch. A thread older than this is not read at all.","example":120,"input":{"allowCustom":true,"choices":[],"label":"Days"},"name":"days","required":false,"type":"integer"},{"default":400,"description":"The most threads to read. The card says when the bound was reached, so a partial answer never reads like a complete one.","example":400,"input":{"allowCustom":true,"choices":[],"label":"Max threads"},"name":"max_threads","required":false,"type":"integer"},{"default":"-in:chats","description":"Added to the mailbox search alongside the window. The default leaves chat messages out.","example":"-in:chats","input":{"allowCustom":true,"choices":[],"label":"Query"},"name":"query","required":false,"type":"string"},{"default":"GMAIL_OAUTH_TOKEN","description":"The environment variable holding a Gmail OAuth access token with the gmail.metadata scope. No file is read for it, and if the variable is unset the Play says so and still runs.","example":"GMAIL_OAUTH_TOKEN","input":{"allowCustom":true,"choices":[],"label":"Token env"},"name":"token_env","required":false,"type":"string"},{"default":3,"description":"A thread younger than this is not debt yet. Three days is the difference between a backlog and an inbox.","example":3,"input":{"allowCustom":true,"choices":[],"label":"Min age days"},"name":"min_age_days","required":false,"type":"integer"},{"default":30,"description":"A thread waiting longer than this is reported as cold, because the honest answer there is usually to say so rather than to reply.","example":30,"input":{"allowCustom":true,"choices":[],"label":"Cold days"},"name":"cold_days","required":false,"type":"integer"},{"default":"","description":"Comma separated. The mailbox already names one; add the others so a message you sent from a second address is not read as somebody writing to you.","example":"you@example.com,you@work.example","input":{"allowCustom":true,"choices":[],"label":"Me"},"name":"me","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/reply-debt@0.1.0 --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/reply-debt@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/rajkaria/reply-debt@0.1.0 <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.79.0"},"publishedAt":"2026-09-05T20:40:40.798559+00:00","reference":"rajkaria/reply-debt@0.1.0","requested":"rajkaria/reply-debt","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":1,"installs":0},"steps":{"count":3,"names":["fetch_mail","read_mail","report"]},"title":"reply-debt","type":"play","version":"0.1.0","visibility":"public"}