{"ok":true,"site":{"host":"time-and-dime.netlify.app","url":"https://time-and-dime.netlify.app/","type":"live","desc":"Time&Dime is a local-first, WebMCP-enabled timed scenario calculator.","tools":[{"name":"list_projects","kind":"answer","impl":"imperative","description":"List locally stored Time&Dime projects newest-first. Returns summaries and stable project IDs, not full node data.","title":"List projects","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_project","kind":"act","impl":"imperative","description":"Open one stored Time&Dime project by exact UUID or unique exact name. This navigates the shared page but does not modify project data.","title":"Open project","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":200,"description":"Exact project UUID. Use this instead of projectName."},"projectName":{"type":"string","minLength":1,"maxLength":200,"description":"Exact unique project name. Use this instead of projectId."}},"oneOf":[{"required":["projectId"]},{"required":["projectName"]}],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"calculate_project","kind":"act","impl":"imperative","description":"Calculate a Time&Dime project on an in-memory clone without changing localStorage. Uses virtual time, exact decimal-string arithmetic, immediate-node propagation, and workload safety limits. Omit the selector when a project is already open.","title":"Calculate project","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":200,"description":"Exact project UUID. Use this instead of projectName."},"projectName":{"type":"string","minLength":1,"maxLength":200,"description":"Exact unique project name. Use this instead of projectId."}},"not":{"required":["projectId","projectName"]},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_calculation_result","kind":"answer","impl":"imperative","description":"Return the latest detailed in-memory calculation result for a project, including every node’s name, description, meaning, initial/final calculation value, schedule, and run/update counts. Call calculate_project first. Omit the selector when a project is open.","title":"Get calculation result","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":200,"description":"Exact project UUID. Use this instead of projectName."},"projectName":{"type":"string","minLength":1,"maxLength":200,"description":"Exact unique project name. Use this instead of projectId."}},"not":{"required":["projectId","projectName"]},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"clone_project","kind":"act","impl":"imperative","description":"Clone a complete Time&Dime project with a new project UUID and new UUIDs for every node while preserving and remapping the graph. The clone is stored locally and opens by default.","title":"Clone project","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"sourceProjectId":{"type":"string","minLength":1,"maxLength":200,"description":"Exact source project UUID. Use instead of sourceProjectName."},"sourceProjectName":{"type":"string","minLength":1,"maxLength":200,"description":"Exact unique source project name. Use instead of sourceProjectId."},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":5000},"openAfterClone":{"type":"boolean","default":true}},"oneOf":[{"required":["sourceProjectId"]},{"required":["sourceProjectName"]}],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_scenarios","kind":"act","impl":"imperative","description":"Calculate and compare nodes from two to five Time&Dime projects without changing stored data. The first project is the baseline; finalValueDifference is scenario minus baseline. Each scenario may select nodes by UUID or unique exact name. When both sides omit selectors, nodes pair by stable node.index; otherwise they pair by selected/stored order. Exact differences are returned only for nodes with matching types and calculation fields.","title":"Compare scenarios","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"scenarios":{"type":"array","minItems":2,"maxItems":5,"items":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":200,"description":"Exact project UUID. Use this instead of projectName."},"projectName":{"type":"string","minLength":1,"maxLength":200,"description":"Exact unique project name. Use this instead of projectId."},"nodeSelectors":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","properties":{"nodeId":{"type":"string","minLength":1,"maxLength":200},"nodeName":{"type":"string","minLength":1,"maxLength":200}},"oneOf":[{"required":["nodeId"]},{"required":["nodeName"]}],"additionalProperties":false}}},"oneOf":[{"required":["projectId"]},{"required":["projectName"]}],"additionalProperties":false}}},"required":["scenarios"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_create_project","kind":"act","impl":"imperative","description":"Open the Create Project page to configure a new Time&Dime project.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"go_to_home","kind":"act","impl":"imperative","description":"Leave the Create Project page and return to the Time&Dime home page.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_project","kind":"act","impl":"imperative","description":"Create a Time&Dime project, store it locally, and open its project page. Duration projects need an end duration. Date-time projects need exact start and end dates with 24-hour times.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the project."},"description":{"type":"string","maxLength":5000,"description":"Optional description of the project."},"endTimeMode":{"type":"string","enum":["duration","dateTime"],"description":"Whether the project ends after a duration or at an exact date and time."},"startDate":{"type":"string","format":"date","maxLength":10,"description":"Start date in YYYY-MM-DD format. Used when endTimeMode is dateTime."},"startHours":{"type":"integer","minimum":0,"maximum":23,"description":"Start hour in 24-hour time. Used when endTimeMode is dateTime."},"startMinutes":{"type":"integer","minimum":0,"maximum":59,"description":"Start minute. Used when endTimeMode is dateTime."},"startSeconds":{"type":"integer","minimum":0,"maximum":59,"description":"Start second. Used when endTimeMode is dateTime."},"endDuration":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Non-negative safe-integer duration value. Used when endTimeMode is duration."},"endDurationUnit":{"type":"string","enum":["Milliseconds","Seconds","Minutes","Hours","Days","Months","Years"],"description":"Unit for endDuration. Used when endTimeMode is duration."},"endDurationParts":{"type":"object","description":"Composite duration parts. The smallest non-zero supplied unit becomes the stored unit and larger parts are converted into it. Years equal 12 months; for days or smaller, years equal 365 days and months equal 30 days.","properties":{"years":{"type":"integer","minimum":0,"maximum":9007199254740991},"months":{"type":"integer","minimum":0,"maximum":9007199254740991},"days":{"type":"integer","minimum":0,"maximum":9007199254740991},"hours":{"type":"integer","minimum":0,"maximum":9007199254740991},"minutes":{"type":"integer","minimum":0,"maximum":9007199254740991},"seconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"milliseconds":{"type":"integer","minimum":0,"maximum":9007199254740991}},"minProperties":1,"additionalProperties":false},"endDate":{"type":"string","format":"date","maxLength":10,"description":"End date in YYYY-MM-DD format. Used when endTimeMode is dateTime."},"endHours":{"type":"integer","minimum":0,"maximum":23,"description":"End hour in 24-hour time. Used when endTimeMode is dateTime."},"endMinutes":{"type":"integer","minimum":0,"maximum":59,"description":"End minute. Used when endTimeMode is dateTime."},"endSeconds":{"type":"integer","minimum":0,"maximum":59,"description":"End second. Used when endTimeMode is dateTime."}},"required":["name","endTimeMode"],"oneOf":[{"properties":{"endTimeMode":{"const":"duration"}},"anyOf":[{"required":["endDuration","endDurationUnit"]},{"required":["endDurationParts"]}]},{"properties":{"endTimeMode":{"const":"dateTime"}},"required":["startDate","startHours","startMinutes","startSeconds","endDate","endHours","endMinutes","endSeconds"]}],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Finance & Crypto","favicon":"/favicons/time-and-dime.netlify.app.ico","apiSurface":"spec","toolCount":9}}