Deterministic check of logged service hours: bad dates, impossible totals, duplicates. No AI.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Append logged hours to an existing record. Requires a bearer key.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Append logged hours to an existing record. Requires a bearer key.
| Argument | Type | Description |
|---|---|---|
| entries* | array | |
| record_id* | string |
{
"type": "object",
"required": [
"record_id",
"entries"
],
"properties": {
"entries": {
"type": "array",
"items": {
"type": "object"
}
},
"record_id": {
"type": "string"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| as_of | string | Treat this date as "today" (YYYY-MM-DD) when rejecting future dates. Defaults to the server date. |
| entries* | array | Entries to check. Each: {date:"YYYY-MM-DD", hours:number, activity:"what was done", organization:"where", category?:"tutoring", notes?}. |
{
"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?}."
}
}
}Open an hour ledger for one student (returns a record id). Requires a bearer key.
| Argument | Type | Description |
|---|---|---|
| program | string | School, honor society, or program the hours are being collected for. |
| period_end | string | |
| period_start | string | |
| student_name* | string |
{
"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"
}
}
}Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key.
| Argument | Type | Description |
|---|---|---|
| record_id* | string |
{
"type": "object",
"required": [
"record_id"
],
"properties": {
"record_id": {
"type": "string"
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use.
| Argument | Type | Description |
|---|---|---|
| record_id* | string | |
| supervisor_name | string | |
| supervisor_email | string |
{
"type": "object",
"required": [
"record_id"
],
"properties": {
"record_id": {
"type": "string"
},
"supervisor_name": {
"type": "string"
},
"supervisor_email": {
"type": "string"
}
}
}