Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Certificate recorded, valid to 2027-01-02
Authorization not required
Changed the definition of "extend_session", "get_lot", "get_session" and 3 more
{"destructiveHint":falsetrue,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true}
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":falsetrue,"readOnlyHint":false}
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true}
Changed the definition of "reserve"
{"additionalProperties":false,"properties":{"agent_platform":{"description":"The assistant you are (recorded on the booking)","enum":["chatgpt","claude","gemini","grok","perplexity","copilot","custom"],"type":"string"},"duration_hours":{"description":"Hours to book. The result's booking_url opens the lot's pay page on this length","enum":[1,2,4,8],"type":"integer"},"end":{"description":"When the driver leaves ⟨47 unchanged words⟩ Lot id from search_lots","format":"uuid","type":"string"},"plate":{"description":"Plate to pre-fill on the pay page, if the driver said","maxLength":20,"minLength":1,"type":"string"},"space_count":{" ⟨89 unchanged words⟩
Changed the definition of "extend_session", "get_lot", "get_session" and 3 more
Add time to an active hourly parkingsessionsession. No API key needed: ask the driver for the phone code onyourtheiraccount.receiptNeedsor pass, the last 3 characters of their plate, and how many hours to add (0.5 to 8, in half-hour steps). The answer is the price, the new end time and a pay_url to the driver's session page: send the driver there to pay. Nothing is charged and the end time doesn't move until they pay. Any mismatch gets one answer, SESSION_NOT_FOUND. With an API keywith(sessions:write.write), session_id and session_code extend the session through the API.
Unknown → Live
First tool surface recorded: 6 tools (server version 2.1.0)
npm:parkgraph-mcp (package_npm) — from mcp_registry, with the record
https://parkgraph.com/api/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 9 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨4 unchanged words⟩ {"default":1,"description":"Hours toaddadd. Ask the driver. Without an API key: 0.5 to 8, in half-hour steps.","maximum":24,"minimum":0.5,"type":"number"},"session_codephone_code":{"description":"Thesession's6-character phone code,printed on the driver's receipt or pass. Ask the driver forverificationit.","type":"string"},"session_idplate_last3":{"description":"SessionTheidlast 3 letters or numbers of the license plate parked on the session. Ask the driver for it.","type":"string"}},"requiredsession_code":[{"session_iddescription":"The session's code (sess_…), for verification","type":"string"},"session_id":{"description":"Session id. Without an API key, send it with session_code instead of the phone code."],"type":"string"}},"type":"object"}
⟨6 unchanged words⟩ address, coordinates, spaces, features, hours,defaultpricing andcurrentspacesoccupancy.left right now. No API key needed.
StatusCheck a parking session: lot, status, start and end times, rate, amount so far andchargesextensions,forwith aparkinglink to the driver's session page. No API key needed: ask the driver for the 6-character phone code onyourtheiraccount.receiptNeedsor pass and the last 3 characters of their plate (session_id with session_code also works). Any mismatch gets one answer, SESSION_NOT_FOUND: ask the driver to check both. With an API keywith(sessions:read.read), session_id alone reads a session on your account.
{"additionalProperties":false,"properties":{"session_idphone_code":{"description":"SessionTheid6-character phone code printed on the driver's receipt or pass. Ask the driver for it.","formattype":"uuidstring"},"plate_last3":{"description":"The last 3 letters or numbers of the license plate parked on the session. Ask the driver for it.","type":"string"}},"requiredsession_code":[{"description":"The session's code (sess_…), sent with session_id when there's no API key"],"type":"string"},"session_id":{"description":"Session id, from the driver's session page link. Without an API key, send it with session_code.","format":"uuid","type":"string"}},"type":"object"}
⟨13 unchanged words⟩ lot's current rate (daily max applied).AlsoNo API key needed. booking.mode sayshowwhattocomesbooknext: reservehere,(call reserve to hold a space) orsendpay_at_qr_page (give the driverto thebooking.pay_url,lot'swhereQRthey paypage.and park).
⟨4 unchanged words⟩ "description":"How long the driver will park, in hours. Ask them if they haven't said.","maximum":24,"minimum":0.25,"type ⟨16 unchanged words⟩
PlaceHold space at ashortlotholdforonthespacedriveratfor alotfew minutes (POST /api/v1/reserve rules).LotsNoonAPI key needed. Ask theStarterdriverplantodon'tconfirm before calling it. Lots that takeagentpaymentbookingsat their QR page place no hold: you get status pay_at_qr_page and a pay_url to give the driver.Confirm aA hold is confirmed with POST /api/v1/reserve/confirm before it expires.
{"additionalProperties":false,"properties":{"end":{"description":"When the driver leaves (ISO 8601), if they said","format":"date-time","type":"string"}, ⟨45 unchanged words⟩ string"},"space_count":{"default":1,"description":"How many spaces the driver needs","maximum":20,"minimum":1,"type":"integer"},"start":{"description":"When the driver arrives (ISO 8601), if they said","format":"date-time","type":"string"}, ⟨2 unchanged words⟩ 180,"description":"How long the hold lasts, in seconds","maximum":900,"minimum":30,"type":"integer"},"vehicle":{"description":"The driver's vehicle, if they said","properties":{"length_meters":{"exclusiveMinimum":0, ⟨30 unchanged words⟩
Find Park Graph parking lots near apointplace, nearestfirst.first,Withoutwithanspaces left and the current rate. No API key:name,needed.address,Askspacesthe driver where they're going and work out its latitude and longitude first. Each lot's id is what quote,coordinatesget_lot andbookingreservepage.take.WithThe top-level summary is akeyone-line(answer you can quote. An empty list means Park Graph has no lots:read)near that point:livesayavailabilityso, andpricingnevertoo.make up lots.
⟨3 unchanged words⟩ :{"lat":{"description":"Latitude of where thesearchdrivercenteris going, worked out from the place or address they give","maximum":90,"minimum":-90,"type":"number"},"limit":{"default":10,"description":"MaxMostresultslots to return","maximum":50,"minimum":1,"type":"integer"},"lng":{"description":"Longitude of where thesearchdrivercenteris going","maximum":180,"minimum":-180,"type":"number"},"radius_km":{"default":5,"description":"SearchHowradiusfar from that point to look, in km","maximum":100,"minimum": ⟨8 unchanged words⟩