{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_kf47vr7hccf9","handle":"hourproof-volunteer-service-hour-ledger-no-ai","url":"https://wellknown.network/agents/hourproof-volunteer-service-hour-ledger-no-ai","links":{"self":"https://wellknown.network/agents/hourproof-volunteer-service-hour-ledger-no-ai/record.json","html":"https://wellknown.network/agents/hourproof-volunteer-service-hour-ledger-no-ai","markdown":"https://wellknown.network/agents/hourproof-volunteer-service-hour-ledger-no-ai/record.md","api":"https://wellknown.network/api/v1/agents/hourproof-volunteer-service-hour-ledger-no-ai","status":"https://wellknown.network/api/v1/agents/hourproof-volunteer-service-hour-ledger-no-ai/status","claim":"https://wellknown.network/agents/hourproof-volunteer-service-hour-ledger-no-ai/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/hourproof-volunteer-service-hour-ledger-no-ai/claim.json","badge":"https://wellknown.network/agents/hourproof-volunteer-service-hour-ledger-no-ai/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/hourproof-volunteer-service-hour-ledger-no-ai/history","tools":"https://wellknown.network/api/v1/agents/hourproof-volunteer-service-hour-ledger-no-ai/tools"},"ard":{"identifier":"urn:air:hourproof.rowb.app:server:hourproof-volunteer-service-hour-ledger-no-ai","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"HourProof — volunteer/service hour ledger (no AI)","summary":"Deterministic check of logged service hours: bad dates, impossible totals, duplicates. No AI.","description":"Deterministic check of logged service hours: bad dates, impossible totals, duplicates. No AI.","publisher":{"name":"app.rowb.hourproof","url":null},"homepage":"https://hourproof.rowb.app","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://hourproof.rowb.app/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-01T05:22:16.891115Z","publishedAt":"2026-10-01T05:22:16.891115Z","registryName":"app.rowb.hourproof/hours"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"finance.accounting","name":"Accounting","confidence":1,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["content","finance"],"language":"fr"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-10T01:24:53.625Z","lastProbedAt":"2026-10-10T01:24:53.625Z","statusComputedAt":"2026-10-10T01:26:07.542Z","reliability30d":{"probes":26,"successRate":1,"p50Ms":91,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":26,"ok":26,"authBoundaryOk":0,"serviceOk":26,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T01:24:53.625Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":12,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T19:27:20.405Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":14,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:30:38.793Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":44,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:25:36.357Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":70,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:24:33.632Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":15,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T18:27:27.883Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":58,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T11:24:17.339Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":607,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T05:21:00.042Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":21,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T22:23:47.186Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":21,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T15:32:11.651Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":632,"error":null,"detail":{"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"toolCount":6,"toolsHash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","serverName":"hourproof","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"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 "},{"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 explai"},{"name":"create_record","description":"Open an hour ledger for one student (returns a record id). Requires a bearer key."},{"name":"add_entries","description":"Append logged hours to an existing record. Requires a bearer key."},{"name":"get_record_summary","description":"Totals, per-category breakdown, and every issue found, for one record. Requires a bearer key."},{"name":"request_signoff","description":"Create a one-time URL a supervisor can open to confirm the recorded hours. Requires a bearer key. The token is single use."}],"package":null,"toolSurface":{"id":"ts_npamy7mg3u55","endpointId":"ep_6rkfbqxdqw4n","hash":"87aeb6541ab43239cbb8c439c0a87c2c439f4279b3363783021ab34d58eb2e1c","toolCount":6,"serverName":"hourproof","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-03T06:22:57.584Z","lastSeenAt":"2026-10-10T01:24:53.634Z","observations":26,"toolNames":["check_hours","get_rules","create_record","add_entries","get_record_summary","request_signoff"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_6rkfbqxdqw4n","url":"https://hourproof.rowb.app/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T05:21:00.058Z","auth":{"observedAt":"2026-10-08T05:21:00.079Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://hourproof.rowb.app/.well-known/oauth-protected-resource/mcp","resource":"https://hourproof.rowb.app/mcp","authorizationServers":[],"scopesSupported":[]},"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":true,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T05:21:00.094Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"rowb.app","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-28T15:45:35.000Z","validTo":"2026-12-27T16:45:30.000Z","daysToExpiry":78,"sanCount":3,"fingerprint256":"E6:B2:83:AA:DE:CC:6D:59:4A:6D:EA:25:57:E9:21:A4:81:EC:12:E6:CF:9A:BC:57:FD:9E:97:68:2C:0A:4A:62"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"app.rowb.hourproof/hours","url":"https://registry.modelcontextprotocol.io/v0/servers/app.rowb.hourproof%2Fhours","firstSeenAt":"2026-10-03T06:18:58.630Z","fetchedAt":"2026-10-09T01:21:49.372Z","normalizedAt":"2026-10-09T01:21:49.372Z"}]},"firstSeenAt":"2026-10-03T06:18:58.630Z","updatedAt":"2026-10-10T01:27:02.054Z"}