{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=jaylabs/meeting-prep@0.1.23","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/jaylabs/meeting-prep@0.1.23","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/jaylabs/meeting-prep@0.1.23","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/jaylabs/meeting-prep@0.1.23 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"authenticationPreflight":{"credentialValues":"local_only","enforcedBeforeAdapterCalls":true,"mode":"declared","readiness":"inspect_locally","steps":[{"endpoint":"adapter/calendar","name":"ensure_calendar","onExpired":"refresh","onMissing":"authorize","onUnreadable":"reauthorize"},{"endpoint":"adapter/gmail","name":"ensure_gmail","onExpired":"refresh","onMissing":"authorize","onUnreadable":"reauthorize"}]},"description":"Reads your Gmail and Calendar before a meeting and writes one page per meeting: the sentences you wrote that read like commitments, the ones they wrote that read like asks, and which asks you never replied to, each traced to a message id. Silence is provable; whether a reply answered is not, so it claims only what it shows. Connect GitHub, Linear or ClickUp and a commitment still open in mail can carry the merged pull request or completed task that suggests you did it, scoped to your own work and labelled a wording match. It writes the pages and their JSON, opens the first, and deletes only its own stale session folders.","distribution":{"digest":"sha256:5cea108d8f81b0b9ac578779880af79035f0dcf52982cd690ddea7284a52fb39","mediaType":"application/vnd.modiqo.rote-flow","size":120817,"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/jaylabs/meeting-prep@0.1.23","inputPolicy":{"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/jaylabs/meeting-prep@0.1.23","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/jaylabs/meeting-prep@0.1.23.json"},"name":"meeting-prep","owner":{"kind":"org","slug":"jaylabs"},"parameters":[{"default":"24","description":"How far ahead to read the calendar, in hours from now. Must be a whole number; clamped to 1..336. Run it the night before with the default and you get tomorrow.","example":"24","input":{"allowCustom":true,"choices":[],"label":"Hours"},"name":"hours","required":false,"type":"string"},{"default":"30","description":"How far back to read mail for each attendee, in days. Must be a whole number; clamped to 1..365. It is also the number quoted when a person has no recent mail, so the empty answer stays a measured statement rather than a bare no.","example":"30","input":{"allowCustom":true,"choices":[],"label":"Lookback days"},"name":"lookback_days","required":false,"type":"string"},{"description":"The address the pages are written for, excluded from attendee lookups. Left empty it is read from the gmail adapter. Set it when the mailbox and the calendar are different accounts. If the adapter disagrees with it, or cannot be checked, every page says so.","example":"you@example.com","input":{"allowCustom":true,"choices":[],"label":"Me"},"name":"me","required":false,"type":"string"},{"default":"primary","description":"Which calendar to read. primary is the one attached to the account the calendar credential belongs to.","example":"primary","input":{"allowCustom":true,"choices":[],"label":"Calendar id"},"name":"calendar_id","required":false,"type":"string"},{"default":"60","description":"A hard ceiling on the message reads one run may spend, so a busy week cannot turn into a very long run. Must be a whole number; clamped to 1..500. People beyond the budget are named on their page as skipped rather than quietly left out.","example":"60","input":{"allowCustom":true,"choices":[],"label":"Max gmail calls"},"name":"max_gmail_calls","required":false,"type":"string"},{"description":"Where the prep pages go. Empty means a folder inside the run workspace. Anything else must sit inside your home directory and outside this play package, because the pages quote private mail. Every run gets its own timestamped subfolder.","example":"meeting-prep-pages","input":{"allowCustom":true,"choices":[],"label":"Out dir"},"name":"out_dir","required":false,"type":"string"},{"default":"auto","description":"Optional sources used to check whether an open commitment was actually done. auto uses every one you have connected, none disables them, or name them - github, linear, clickup. Anything not connected is skipped and the page says which one and why. Connect one with rote powerpack credentials.","example":"auto","input":{"allowCustom":true,"choices":[{"label":"Every source you have connected","value":"auto"},{"label":"Skip the evidence check","value":"none"},{"label":"GitHub only - merged pull requests","value":"github"},{"label":"Linear only - completed issues","value":"linear"},{"label":"ClickUp only - closed tasks","value":"clickup"},{"label":"GitHub and Linear","value":"github,linear"}],"label":"Evidence sources"},"name":"tools","required":false,"type":"string"},{"default":"true","description":"Whether to open the first page when the run finishes. On macOS this spawns open, on Linux xdg-open, against the play's own page and nothing else. A missing or failing opener is reported on the receipt and never fails the run.","example":"true","input":{"allowCustom":false,"choices":[{"label":"true","value":"true"},{"label":"false","value":"false"}],"label":"Open page"},"name":"open_page","required":false,"type":"string","validValues":["true","false"]}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/jaylabs/meeting-prep@0.1.23 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters"},{"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/jaylabs/meeting-prep@0.1.23","headlessCommandTemplate":"rote play run https://play.modiqo.ai/jaylabs/meeting-prep@0.1.23 <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-04T13:01:21.020304+00:00","reference":"jaylabs/meeting-prep@0.1.23","requirements":{"adapters":[{"bindingStatus":"resolved","credentialDemand":{"requirements":[{"description":"Google OAuth 2.0 token","kind":"bearer","name":"CALENDAR_TOKEN","protocol":"google_discovery","protocolSource":"declared","setup":{"drivenBy":"rote","interaction":"browser_or_device","type":"oauth"}}],"status":"required"},"displayName":"Calendar API","fingerprint":"mcp_39UEoxu3DX9zayEgtzXN8HtJxnxy","id":"calendar","purpose":"Calendar and event scheduling - meetings, appointments, schedule management, event creation","requirement":"modiqo/calendar@0.0.4","version":"0.0.4"},{"bindingStatus":"resolved","credentialDemand":{"requirements":[{"description":"API authentication configuration","kind":"bearer","name":"GITHUB_TOKEN","protocol":"static","protocolSource":"inferred","setup":{"configure":{"command":"rote token set GITHUB_TOKEN","input":"hidden"},"href":"https://github.com/settings/tokens","source":"adapter_catalog","type":"vendor_token_page","verifiedHost":"github.com"}}],"status":"required"},"displayName":"GitHub","fingerprint":"mcp_kmcjZ2U5m8NQMM8491mGhVmZthZ","id":"github","purpose":"Code repository management and collaboration - issues, pull requests, commits, releases, code review","requirement":"modiqo/github@0.0.2","version":"0.0.2"},{"bindingStatus":"resolved","credentialDemand":{"requirements":[{"description":"Google OAuth 2.0 token","kind":"bearer","name":"GMAIL_TOKEN","protocol":"google_discovery","protocolSource":"declared","setup":{"drivenBy":"rote","interaction":"browser_or_device","type":"oauth"}}],"status":"required"},"displayName":"Gmail API","fingerprint":"mcp_2kLwgdDQH7fxkyDYysCHsbCXLooH","id":"gmail","purpose":"Email management for personal and professional communication - send, read, organize messages, manage inbox and filters","requirement":"modiqo/gmail@0.0.3","version":"0.0.3"},{"bindingStatus":"resolved","credentialDemand":{"requirements":[{"kind":"api_key_header","name":"LINEAR_API_TOKEN","placement":{"header":"Authorization"},"protocol":"static","protocolSource":"inferred","setup":{"configure":{"command":"rote token set LINEAR_API_TOKEN","input":"hidden"},"href":"https://linear.app/settings/api","source":"adapter_catalog","type":"vendor_token_page","verifiedHost":"linear.app"}}],"status":"required"},"displayName":"Linear","fingerprint":"mcp_STdJUB7Bsyj9kn4DvL5F5KZdoDk","id":"linear","purpose":"Linear GraphQL API for issue tracking, project management, and engineering workflow automation across teams, projects, cycles, initiatives, roadmaps, and releases. Manages issues, sub-issues, comments, attachments, labels, priorities, estimates, assignees, subscribers, reactions, and triage; cycles and milestones for sprint planning; initiatives, projects, project updates, and project templates; documents, document content, and roadmaps; users, teams, team memberships, workspaces, organizations, and customer records; workflows, workflow states, custom views, favorites, reminders, and notification subscriptions. Integrates with GitHub, GitLab, Jira, Slack, Discord, Zendesk, Front, Microsoft Teams, Figma, Sentry, Intercom, and email; supports webhooks, OAuth applications, API keys, audit logs, SAML SSO, SCIM provisioning, agent sessions, MCP, file uploads, CSV imports, issue-to-release linking, branch and commit references, git automation, schedules, emoji reactions, and natural-language prompts. Authenticated","requirement":"modiqo/linear@1.0.2","version":"1.0.2"}],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3","rote"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":10,"names":["extract","gather_evidence","list_mail_ids","list_meetings","live_reads","plan_lookups","read_full","render","resolve_me","validate_inputs"]},"title":"meeting-prep","type":"play","version":"0.1.23","visibility":"public"}