{"contract":"read-api/1","base":"https://powers.now/book/api/","method":"GET","cors":"Every route answers GET, HEAD and OPTIONS with Access-Control-Allow-Origin: * and no credentials.","writes":"None. Nothing changes state over GET; holds, confirmations and edits need the page (deep link), the WebMCP page tools or the MCP connector.","sessions":"Routes read the visitor session named by ?session=<id> (or X-Power-Session); omitted, the shared default session.","routes":[{"path":"api","url":"https://powers.now/book/api/","kind":"index","description":"This route table as JSON."},{"path":"api/state","url":"https://powers.now/book/api/state","kind":"state","description":"The whole current snapshot as the embed reads it: revision, status, every record, runs and the enabled actions."},{"path":"api/lead","url":"https://powers.now/book/api/lead","kind":"entity","entity":"lead","description":"Your request: the current record. The visitor’s contact details and qualifying answers, with who filled each field. The CRM-ready lead record."},{"path":"api/slot","url":"https://powers.now/book/api/slot","kind":"entity","entity":"slot","description":"Openings: the current records (append /<id> for one record). Openings from powers.now’s calendar for the next 14 days, 30 minutes each. Patch status to \"held\" to reserve one for 10 minutes; patch it back to \"open\" to release."},{"path":"api/booking","url":"https://powers.now/book/api/booking","kind":"entity","entity":"booking","description":"Booking: the current record. The confirmed slot with its calendar event, the lead reference and the notification state. Written only by the confirm action."},{"path":"api/openings","url":"https://powers.now/book/api/openings","kind":"tool","tool":"find_openings","description":"Openings that match a preference, in the visitor’s zone and powers.now’s zone (America/New_York), each with the deep link that pre-selects it on the website.","params":{"from":{"type":"string","format":"date-time","description":"Earliest start (ISO 8601 with zone). Defaults to now."},"to":{"type":"string","format":"date-time","description":"Latest start. Defaults to the horizon."},"weekdays":{"type":"array","items":{"enum":["sun","mon","tue","wed","thu","fri","sat"]},"description":"Comma-separated weekdays to keep, in the visitor’s zone: mon,tue"},"part":{"type":"string","enum":["morning","afternoon","evening"],"description":"morning (before 12:00), afternoon (12:00 to 17:00) or evening (after 17:00) in the visitor’s zone.","aliases":["partOfDay"]},"timeZone":{"type":"string","description":"IANA zone to show times in. Defaults to the lead’s recorded zone, then the business zone."},"limit":{"type":"integer","minimum":1,"maximum":60,"description":"Most openings to return (default 8)."}}},{"path":"api/export","url":"https://powers.now/book/api/export","kind":"tool","tool":"export_lead","description":"The CRM-ready lead record of this session as a CSV line (with header) and as the webhook JSON body.","params":{}}],"power":{"id":"lead-scheduler","name":"Lead Scheduler","version":"0.1.0","business":"powers.now"},"deepLink":{"contract":"deep-link/1","base":"https://powers.now/book/","template":"https://powers.now/book/?slot={slot}&name={name}&email={email}&phone={phone}&timeZone={timeZone}&about={about}&interest={interest}&website={website}&source={source}&note={note}&interests={interests}","grammar":"https://powers.now/book/?slot=<record id>&name=<text>&email=<text>&phone=<text>&timeZone=<text>&about=<text>&interest=<Lead Scheduler|Booking|Listings|Skill Router|Champ Workspace|Not sure yet>&website=<text>&source=<website|chatgpt|claude|chat|unknown>&note=<text>&interests=<text>","params":{"slot":{"kind":"select","entity":"slot","type":"id","description":"Pre-select this opening: the page holds it for 10 minutes and lands on the confirm step."},"name":{"kind":"field","entity":"lead","field":"name","type":"text","label":"Name","max":120},"email":{"kind":"field","entity":"lead","field":"email","type":"text","label":"Email","max":254,"description":"Required to confirm."},"phone":{"kind":"field","entity":"lead","field":"phone","type":"text","label":"Phone","max":40},"timeZone":{"kind":"field","entity":"lead","field":"timeZone","type":"text","label":"Visitor time zone","max":64,"description":"IANA zone such as Europe/London; empty when unknown."},"about":{"kind":"field","entity":"lead","field":"about","type":"text","label":"What does your business do?","max":500,"description":"What does your business do? Free text in the visitor’s words; empty when unanswered. Required before confirming."},"interest":{"kind":"field","entity":"lead","field":"interest","type":"enum","label":"Which power interests you?","values":["Lead Scheduler","Booking","Listings","Skill Router","Champ Workspace","Not sure yet"],"description":"Which power interests you? One of the listed options; null when unanswered. Required before confirming."},"website":{"kind":"field","entity":"lead","field":"website","type":"text","label":"Your website","max":500,"description":"Your website Free text in the visitor’s words; empty when unanswered."},"source":{"kind":"field","entity":"lead","field":"source","type":"enum","label":"Lead source","values":["website","chatgpt","claude","chat","unknown"],"description":"Where this lead came from: website, chatgpt, claude, chat or unknown."},"note":{"kind":"field","entity":"lead","field":"note","type":"text","label":"Context","max":1000,"description":"Anything useful from the conversation, in the visitor’s words."},"interests":{"kind":"field","entity":"lead","field":"interests","type":"text","label":"Interests","max":200,"description":"Power pages the visitor viewed on powers.now, as comma-separated slugs (lead-scheduler, booking, listings, skill-router, champ-workspace). Carried by the site; empty when unknown."}},"reserved":["session","view","display","embed","utm_source","utm_medium","utm_campaign"],"rules":["Every parameter is optional and URL-encoded. Unknown parameters are ignored; invalid values are dropped and the page still opens.","Values are validated against the power’s schema (text length, listed options, numbers) before anything is pre-filled.","Pre-fills land in the user lane: the visitor reviews them on the page and confirms there. A deep link never completes an action by itself.","Selecting a record (slot) applies the same change the visitor would make by picking it, so the page lands on the confirm step."]}}