Serveur MCP

HourProof — volunteer/service hour ledger (no AI)

app.rowb.hourproof/hours
Productivité Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Maintains student volunteer-hour ledgers and deterministically checks dates, totals, duplicates, missing organizations, and unusually long service days.

add_entries
Append logged hours to an existing record. Requires a bearer key.
Schéma d’entrée
{'type': 'object', 'required': ['record_id', 'entries'], 'properties': {'entries': {'type': 'array', 'items': {'type': 'object'}}, 'record_id': {'type': 'string'}}}
check_hours
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.
Schéma d’entrée
{'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?}.'}}}
create_record
Open an hour ledger for one student (returns a record id). Requires a bearer key.
Schéma d’entrée
{'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'}}}
get_record_summary
Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key.
Schéma d’entrée
{'type': 'object', 'required': ['record_id'], 'properties': {'record_id': {'type': 'string'}}}
get_rules
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.
Schéma d’entrée
{'type': 'object', 'properties': {}}
request_signoff
Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use.
Schéma d’entrée
{'type': 'object', 'required': ['record_id'], 'properties': {'record_id': {'type': 'string'}, 'supervisor_name': {'type': 'string'}, 'supervisor_email': {'type': 'string'}}}
Ajouté
request_signoff
2 October 2026 02:40
Ajouté
get_record_summary
2 October 2026 02:40
Ajouté
add_entries
2 October 2026 02:40
Ajouté
create_record
2 October 2026 02:40
Ajouté
get_rules
2 October 2026 02:40
Ajouté
check_hours
2 October 2026 02:40