{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_f94r5fvfpayr","handle":"org-lunenburgbudgetproject-archive","url":"https://wellknown.network/agents/org-lunenburgbudgetproject-archive","links":{"self":"https://wellknown.network/agents/org-lunenburgbudgetproject-archive/record.json","html":"https://wellknown.network/agents/org-lunenburgbudgetproject-archive","markdown":"https://wellknown.network/agents/org-lunenburgbudgetproject-archive/record.md","api":"https://wellknown.network/api/v1/agents/org-lunenburgbudgetproject-archive","status":"https://wellknown.network/api/v1/agents/org-lunenburgbudgetproject-archive/status","claim":"https://wellknown.network/agents/org-lunenburgbudgetproject-archive/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/org-lunenburgbudgetproject-archive/claim.json","badge":"https://wellknown.network/agents/org-lunenburgbudgetproject-archive/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/org-lunenburgbudgetproject-archive/history","tools":"https://wellknown.network/api/v1/agents/org-lunenburgbudgetproject-archive/tools"},"ard":{"identifier":"urn:air:lunenburgbudgetproject.org:server:org-lunenburgbudgetproject-archive","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"archive","summary":"The Lunenburg, Massachusetts town and school budget, every figure traced to its source document.","description":"The Lunenburg, Massachusetts town and school budget, every figure traced to its source document.","publisher":{"name":"org.lunenburgbudgetproject","url":null},"homepage":"https://lunenburgbudgetproject.org","repository":"https://github.com/tjloughlin16/lunenburgbudgetapp","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://lunenburgbudgetproject.org/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-06T01:28:00.185668Z","publishedAt":"2026-09-06T01:28:00.185668Z","registryName":"org.lunenburgbudgetproject/archive"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.database","name":"Databases","confidence":1,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.51,"provenance":"derived"}],"categories":["data","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-10T00:28:31.419Z","lastProbedAt":"2026-10-10T00:28:31.419Z","statusComputedAt":"2026-10-10T00:29:57.741Z","reliability30d":{"probes":109,"successRate":1,"p50Ms":231,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":109,"ok":109,"authBoundaryOk":0,"serviceOk":109,"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-10T00:28:31.419Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":208,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T18:26:58.463Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":100,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T12:28:45.528Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":204,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T06:21:02.642Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":319,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T23:22:29.311Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":149,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T16:28:34.613Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":602,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T10:24:54.047Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":264,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:26:09.458Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":148,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T21:28:42.682Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":330,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T15:32:13.682Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":289,"error":null,"detail":{"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"toolCount":8,"toolsHash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","serverName":"lunenburg-budget","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_datasets","description":"Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the "},{"name":"read_first","description":"The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, t"},{"name":"worked_examples","description":"107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim."},{"name":"search_meetings","description":"Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY "},{"name":"budget_history","description":"What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three d"},{"name":"staff","description":"How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself"},{"name":"document","description":"Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything."},{"name":"query","description":"Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Ca"}],"package":null,"toolSurface":{"id":"ts_7r9t92kxbgkx","endpointId":"ep_8w6c8mkdtqw3","hash":"fafece41b0374915a313cc0643b2b6c747d1c9487226843a97e3e8808fdff939","toolCount":8,"serverName":"lunenburg-budget","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T16:25:48.348Z","lastSeenAt":"2026-10-10T00:28:31.426Z","observations":101,"toolNames":["list_datasets","read_first","worked_examples","search_meetings","budget_history","staff","document","query"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_8w6c8mkdtqw3","url":"https://lunenburgbudgetproject.org/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T06:21:02.651Z","auth":{"observedAt":"2026-10-09T06:21:02.736Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-09T06:21:02.749Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"lunenburgbudgetproject.org","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-08-26T16:47:13.000Z","validTo":"2026-11-24T17:47:09.000Z","daysToExpiry":45,"sanCount":1,"fingerprint256":"5B:7B:AF:F7:02:6C:E9:76:25:31:4B:E7:22:9E:C3:D8:6F:4F:BB:4F:8A:22:68:C1:23:8D:2C:F4:F7:41:46:7B"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"org.lunenburgbudgetproject/archive","url":"https://registry.modelcontextprotocol.io/v0/servers/org.lunenburgbudgetproject%2Farchive","firstSeenAt":"2026-09-07T08:20:20.258Z","fetchedAt":"2026-10-08T19:19:57.789Z","normalizedAt":"2026-10-08T19:19:57.789Z"}]},"firstSeenAt":"2026-09-07T08:20:20.258Z","updatedAt":"2026-10-10T00:30:56.667Z"}