{"serverId":"mcp-registry/app.rowb.hourproof/hours","tools":[{"name":"add_entries","fixed":{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key.","inputSchema":{"type":"object","required":["record_id","entries"],"properties":{"entries":{"type":"array","items":{"type":"object"}},"record_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"check_hours","fixed":{"name":"check_hours","description":"Check a list of logged service/volunteer hours for internal consistency: bad dates, non-positive or impossible day totals, missing organization, and days above this service's 8-hour flag. Deterministic arithmetic only - no AI. It does NOT decide whether the hours satisfy any school or award requirement.","inputSchema":{"type":"object","required":["entries"],"properties":{"as_of":{"type":"string","description":"Treat this date as \"today\" (YYYY-MM-DD) when rejecting future dates. Defaults to the server date."},"entries":{"type":"array","items":{"type":"object"},"description":"Entries to check. Each: {date:\"YYYY-MM-DD\", hours:number, activity:\"what was done\", organization:\"where\", category?:\"tutoring\", notes?}."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"create_record","fixed":{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key.","inputSchema":{"type":"object","required":["student_name"],"properties":{"program":{"type":"string","description":"School, honor society, or program the hours are being collected for."},"period_end":{"type":"string"},"period_start":{"type":"string"},"student_name":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"get_record_summary","fixed":{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key.","inputSchema":{"type":"object","required":["record_id"],"properties":{"record_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"get_rules","fixed":{"name":"get_rules","description":"The exact rule table this service checks against, with the reason each rule is checkable, plus what it explicitly does not claim. Quote it if you need to explain a result.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":72,"tokensAfter":72}],"toolsChanged":5,"tokensSaved":0,"todo":[{"tool":"add_entries","params":["entries","record_id"]},{"tool":"create_record","params":["period_end","period_start","student_name"]},{"tool":"get_record_summary","params":["record_id"]},{"tool":"request_signoff","params":["record_id","supervisor_name","supervisor_email"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}