server.json
1 field changed
- version
-
0.2.00.3.0
io.github.cyanheads/transitland-mcp-server
5 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.
https://raw.githubusercontent.com/cyanheads/transitland-mcp-server/HEAD/AGENTS.md
− **Version:** 0.1.3− **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.13`− **MCP SDK:** `@modelcontextprotocol/server` ^2.2.0− throw new McpError(JsonRpcErrorCode.DatabaseError, 'Connection failed', { pool: 'primary' });+ **Version:** 0.2.0+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.15`+ **MCP SDK:** `@modelcontextprotocol/server` ^2.3.1+ throw new McpError(JsonRpcErrorCode.InitializationFailed, 'Connection failed', { pool: 'primary' });
https://raw.githubusercontent.com/cyanheads/transitland-mcp-server/HEAD/AGENTS.md
− **Version:** 0.1.2− **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.6`− **MCP SDK:** `@modelcontextprotocol/server` ^2.0.0− | `ctx.state` | Tenant-scoped KV — `.get(key)`, `.set(key, value, { ttl? })`, `.delete(key)`, `.getMany(keys)`, `.list(prefix, { cursor, limit })`. Unused by current tools (read-mostly registry, per-call) — available if session caching is added later. |− | `ctx.inputs` | Reader over a retried request's responses — `.accepted(key, schema)`, `.view(key)`, `.state()`, `.dropped`. Empty on the first round. |− | `ctx.fail` | Throw a typed contract error — `ctx.fail(reason, message?, data?)`, with `ctx.recoveryFor(reason)` to spread the declared recovery hint. |− | `ctx.requestId` | Unique request ID. |− **Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable?, severity?, thrownBy? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reaso− Error `content[]` closes with `(reason <reason> · not retryable)` whenever `data.reason` is a non-empty string or `data.retryable` a boolean, and an argument rejection the framework raises before the handler runs classifies `InvalidParams` (`-32602`) with `data.reason: "invalid_arguments"`. Assert containment, never a byte-exact error string, in tests.− if (!item) throw ctx.fail('no_match', `No item ${input.id}`, ctx.recoveryFor('no_match'));− **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the changelog entry plus a gates section); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the branch, and publishes. A caller's bri+ **Version:** 0.1.3+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.13`+ **MCP SDK:** `@modelcontextprotocol/server` ^2.2.0+ | `ctx.state` | Tenant-scoped KV — `.get(key)`, `.set(key, value, { ttl? })`, `.delete(key)`, `.getMany(keys)`, `.list(prefix, { cursor, limit })`. Values round-trip as JSON (a Date reads back as an ISO string). Unused by current tools (read-mostly registry, per-call). |+ | `ctx.inputs` | Reader over a retried request's responses — `.accepted(key, schema)`, `.view(key)`, `.state()`, `.dropped`; limited to the capabilities and modes the client declared. Empty on the first round. |+ | `ctx.clientCapabilities` | What the client declared for this request; undefined when no view exists. Decides whether to ask for optional context, never whether to skip consent. |+ | `ctx.fail` | Throw a typed contract error — `ctx.fail(reason, message?, data?)`. The framework fills a declared recovery hint when the thrown error names its reason and has no hint. |+ | `ctx.requestId` | Framework-generated request ID; shared by the call's log records and error envelope. The client's JSON-RPC ID is logged as jsonRpcId. |+ **Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable?, severity?, thrownBy? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. The framework fills it when + Error envelopes carry `data.requestId`, and `content[]` closes with `(reason <reason> · not retryable · request <id>)` whenever those fields are present, and an argument rejection the framework raises before the handler runs classifies `InvalidParams` (`-32602`) with `data.reason: "invalid_arguments"`. Assert containment, never a byte-exact error string, in tests.+ if (!item) throw ctx.fail('no_match', `No item ${input.id}`);+ **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the release digest: theme line, `## Changes`, `## Gates`, changelog link last); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the
We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect