{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:57:27.487Z","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp","markdownUrl":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp.md","server":{"slug":"com-parkgraph-mcp","name":"Park Graph","registryName":"com.parkgraph/mcp","description":"Find, price and book parking at Park Graph lots: search, quote, hold and session tools.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"api-mcp","type":"remote","identifier":"https://parkgraph.com/api/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp","version":"2.2.0","transport":null,"scoredAt":"2026-11-05T02:14:21.377Z"},"score":{"total":77,"tier":"medium","status":"scored","weekDelta":5,"history":[{"date":"2026-11-05","total":77},{"date":"2026-11-04","total":77},{"date":"2026-11-03","total":76},{"date":"2026-11-02","total":74},{"date":"2026-11-01","total":74},{"date":"2026-10-31","total":73},{"date":"2026-10-30","total":73},{"date":"2026-10-29","total":72},{"date":"2026-10-28","total":72},{"date":"2026-10-27","total":71},{"date":"2026-10-26","total":71},{"date":"2026-10-25","total":70},{"date":"2026-10-24","total":70},{"date":"2026-10-23","total":69},{"date":"2026-10-22","total":69},{"date":"2026-10-21","total":68},{"date":"2026-10-20","total":68},{"date":"2026-10-19","total":74},{"date":"2026-10-18","total":74},{"date":"2026-10-17","total":73},{"date":"2026-10-16","total":73},{"date":"2026-10-15","total":73},{"date":"2026-10-14","total":72}]},"categories":[{"name":"Endpoint Security","score":63,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (reserve).","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_destructive","args":{"tool":"reserve"}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":77,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 1778 tokens (~197/item across 9 items; 8 tools + 1 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"197","items":"9","tools":"8","tokens":"1778","resources":"1"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":73,"verdict":"partial","reasons":["Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"22"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"8"}},{"code":"toolsafety.manipulation_clean","args":{"units":"10","judged":"10"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"api-mcp","type":"remote","identifier":"https://parkgraph.com/api/mcp","withdrawn":false,"score":77,"current":true,"url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp","markdownUrl":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp.md"}],"facts":[{"label":"Endpoint","value":"https://parkgraph.com/api/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"2.2.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"search_lots","title":"Search parking lots","description":"Finds Park Graph parking lots near a latitude and longitude, nearest first, with spaces left and the current rate. No API key needed. Each lot's id is the lot_id that get_lot, the quote tool and reserve take. The top-level summary is a one-line, plain-language answer. An empty lots list means Park Graph has no lots near that point. Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"lat","type":"number","required":true,"description":"Latitude of the driver's destination"},{"name":"limit","type":"integer","required":false,"description":"Maximum number of lots returned"},{"name":"lng","type":"number","required":true,"description":"Longitude of the driver's destination"},{"name":"radius_km","type":"number","required":false,"description":"Search radius around that point, in km"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":156},{"name":"get_lot","title":"Get lot details","description":"Full public details for one lot: address, coordinates, spaces, features, hours, pricing and spaces left right now. No API key needed. Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"lot_id","type":"string","required":true,"description":"Lot id from search_lots"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":72},{"name":"quote","title":"Quote a price","description":"Price to park at a lot for a number of hours, at the lot's current rate (daily max applied). No API key needed. booking.mode in the result is the next step: reserve (the reserve tool holds a space) or pay_at_qr_page (booking.pay_url is the lot's pay page, where the driver pays and parks). Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"duration_hours","type":"number","required":true,"description":"How long the driver will park, in hours"},{"name":"lot_id","type":"string","required":true,"description":"Lot id from search_lots"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"reserve","title":"Reserve a space","description":"Holds space at a lot for the driver for a few minutes and returns booking_url, the lot's pay page on parkgraph.com (opened on duration_hours when it is sent). No API key needed. A hold takes a real space until it expires or the driver pays. Lots that take payment at their QR page place no hold: the result is status pay_at_qr_page with a pay_url, the lot's pay page. Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"agent_platform","type":"string","required":false,"description":"The calling assistant's platform (recorded on the booking)"},{"name":"duration_hours","type":"integer","required":false,"description":"Hours to book. The result's booking_url opens the lot's pay page on this length"},{"name":"end","type":"string","required":false,"description":"Departure time (ISO 8601)"},{"name":"idempotency_key","type":"string","required":false,"description":"A repeated key retries safely. Generated when omitted and returned in the result."},{"name":"intent","type":"string","required":false,"description":"What the driver needs, in plain words (optional)"},{"name":"lot_id","type":"string","required":true,"description":"Lot id from search_lots"},{"name":"plate","type":"string","required":false,"description":"Plate to pre-fill on the pay page"},{"name":"space_count","type":"integer","required":false,"description":"Number of spaces"},{"name":"start","type":"string","required":false,"description":"Arrival time (ISO 8601)"},{"name":"ttl_seconds","type":"integer","required":false,"description":"How long the hold lasts, in seconds"},{"name":"vehicle","type":"object","required":false,"description":"The driver's vehicle"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":294},{"name":"get_session","title":"Get a parking session","description":"A parking session's lot, status, start and end times, rate, amount so far and extensions, with a link to the driver's session page. No API key needed. Requires phone_code (the 6-character code on the driver's receipt or pass) and plate_last3 (the last 3 characters of the plate), or session_id with session_code. Any mismatch returns the same answer, SESSION_NOT_FOUND. Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"phone_code","type":"string","required":false,"description":"The 6-character phone code printed on the driver's receipt or pass"},{"name":"plate_last3","type":"string","required":false,"description":"The last 3 letters or numbers of the license plate parked on the session"},{"name":"session_code","type":"string","required":false,"description":"The session's code (sess_…), sent with session_id"},{"name":"session_id","type":"string","required":false,"description":"Session id, from the driver's session page link. Sent with session_code."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":198},{"name":"extend_session","title":"Extend a parking session","description":"Prices more time on an active hourly parking session. No API key needed. Requires phone_code (the 6-character code on the driver's receipt or pass), plate_last3 (the last 3 characters of the plate) and extend_hours (0.5 to 8, in half-hour steps); session_id with session_code works in place of the two codes. Returns the price, the new end time once paid and a pay_url to the driver's session page, where the driver pays. Nothing is charged and the end time doesn't move until the driver pays there. Any mismatch returns the same answer, SESSION_NOT_FOUND. Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"extend_hours","type":"number","required":false,"description":"Hours to add: 0.5 to 8, in half-hour steps"},{"name":"phone_code","type":"string","required":false,"description":"The 6-character phone code printed on the driver's receipt or pass"},{"name":"plate_last3","type":"string","required":false,"description":"The last 3 letters or numbers of the license plate parked on the session"},{"name":"session_code","type":"string","required":false,"description":"The session's code (sess_…), for verification"},{"name":"session_id","type":"string","required":false,"description":"Session id, from the driver's session page link. Sent with session_code in place of the phone code."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":267},{"name":"my_sessions","title":"My parking","description":"The signed-in driver's own parking: recent sessions (newest first), spaces held through this connector, and monthly passes, each with a link to its page on parkgraph.com. Requires driver sign-in to Park Graph through this connector; without sign-in the call answers 401 with the sign-in details. Sessions are matched by the driver's verified sign-in email (the email on their receipts). get_session checks one session without sign-in, by phone code. Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"active_only","type":"boolean","required":false,"description":"Only sessions that are parked now and holds that haven't expired"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":138},{"name":"my_vehicles","title":"My vehicles","description":"The signed-in driver's saved vehicles (up to 5 plates, each with an optional label) and plates from their past parking that aren't saved yet. action list (the default) only reads; save adds a plate or sets its label, rename changes a label, remove deletes a saved plate. Saving or removing the same plate twice changes nothing. A saved plate works as reserve's plate. Requires driver sign-in to Park Graph through this connector; without sign-in the call answers 401 with the sign-in details. Every payment completes on parkgraph.com with the driver present; no tool charges money on its own.","inputs":[{"name":"action","type":"string","required":false,"description":"What to do"},{"name":"label","type":"string","required":false,"description":"A name for the vehicle, for save and rename (\"Work truck\")"},{"name":"plate","type":"string","required":false,"description":"The plate, for save, rename and remove (spaces and dashes are ignored)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":185}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T02:14:21.000Z","track":"remote","endpoint":"https://parkgraph.com/api/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=parkgraph.com","issuer":"CN=YE1,O=Let's Encrypt,C=US","notBefore":"2026-10-04T05:42:55Z","notAfter":"2027-01-02T05:42:54Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=YE1,O=Let's Encrypt,C=US","issuer":"CN=Root YE,O=ISRG,C=US","notBefore":"2025-09-03T00:00:00Z","notAfter":"2028-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=Root YE,O=ISRG,C=US","issuer":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","issuer":"CN=ISRG Root X1,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"parkgraph.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"parkgraph.com.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-14","recent":[{"id":"chg_01a1a615-5b41-7b04-9307-9b80904b1f3a","kind":"check.measure","summary":"Schema quality (1424 → 1778)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a615-5b41-7b04-9307-9b80904b1f3a"},{"id":"chg_01a1a615-5b42-73dd-a12b-2cb60aa1466c","kind":"tool.added","summary":"New tool “my_sessions”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a615-5b42-73dd-a12b-2cb60aa1466c"},{"id":"chg_01a1a615-5b43-7334-8109-47594278ef15","kind":"tool.added","summary":"New tool “my_vehicles”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a615-5b43-7334-8109-47594278ef15"},{"id":"chg_01a1a615-5b43-7d4a-8ff8-40b857c8302b","kind":"server.version_changed","summary":"Server version (2.1.1 → 2.2.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a615-5b43-7d4a-8ff8-40b857c8302b"},{"id":"chg_01a1a615-5b44-7b22-b141-98017809f640","kind":"server.instructions_changed","summary":"The server rewrote its instructions, which are the text every model session reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a615-5b44-7b22-b141-98017809f640"},{"id":"chg_01a1a457-07da-7f0f-aa46-33cd4e22b958","kind":"check.reverified","summary":"Authorization (unverified → fail)","materiality":"critical","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a457-07da-7f0f-aa46-33cd4e22b958"},{"id":"chg_01a1a457-07dc-7650-9495-8c34a293ba51","kind":"score.total_changed","summary":"Trust score (76 → 77)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a457-07dc-7650-9495-8c34a293ba51"},{"id":"chg_01a1a1b6-344a-787d-beed-4036c71e465e","kind":"check.unverifiable","summary":"Authorization (fail → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344a-787d-beed-4036c71e465e"},{"id":"chg_01a1a1b6-344d-7081-9a3b-0ea71c1572ee","kind":"check.verdict","summary":"MCP protocol (fail → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344d-7081-9a3b-0ea71c1572ee"},{"id":"chg_01a1a1b6-344d-7e5a-8838-845623bbbd37","kind":"tool.description_changed","summary":"Tool “extend_session” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344d-7e5a-8838-845623bbbd37"},{"id":"chg_01a1a1b6-344e-7470-97bb-53f4ba15d61a","kind":"param.description_changed","summary":"“extend_session” reworded the description of “extend_hours”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344e-7470-97bb-53f4ba15d61a"},{"id":"chg_01a1a1b6-344e-7a8d-b21f-16edb34e3306","kind":"param.description_changed","summary":"“extend_session” reworded the description of “phone_code”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344e-7a8d-b21f-16edb34e3306"},{"id":"chg_01a1a1b6-344f-7044-864c-30fc6df7f36b","kind":"param.description_changed","summary":"“extend_session” reworded the description of “plate_last3”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344f-7044-864c-30fc6df7f36b"},{"id":"chg_01a1a1b6-344f-74dd-841b-05fa7998ad5b","kind":"param.description_changed","summary":"“extend_session” reworded the description of “session_id”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344f-74dd-841b-05fa7998ad5b"},{"id":"chg_01a1a1b6-344f-79df-aee6-200a4b5c219e","kind":"tool.description_changed","summary":"Tool “get_lot” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344f-79df-aee6-200a4b5c219e"},{"id":"chg_01a1a1b6-344f-7e79-a2bd-001f5a19c129","kind":"tool.description_changed","summary":"Tool “get_session” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-344f-7e79-a2bd-001f5a19c129"},{"id":"chg_01a1a1b6-3450-73a3-b827-d7694ce8b179","kind":"param.description_changed","summary":"“get_session” reworded the description of “phone_code”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-3450-73a3-b827-d7694ce8b179"},{"id":"chg_01a1a1b6-3450-79ac-ac45-7e324c2afe44","kind":"param.description_changed","summary":"“get_session” reworded the description of “plate_last3”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-3450-79ac-ac45-7e324c2afe44"},{"id":"chg_01a1a1b6-3450-7ed7-b1b9-d9c211aa28e4","kind":"param.description_changed","summary":"“get_session” reworded the description of “session_code”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-3450-7ed7-b1b9-d9c211aa28e4"},{"id":"chg_01a1a1b6-3451-759a-80f8-c7ca40924b33","kind":"param.description_changed","summary":"“get_session” reworded the description of “session_id”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp#chg-chg_01a1a1b6-3451-759a-80f8-c7ca40924b33"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp","markdown":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp.md","changelogJson":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/com-parkgraph-mcp/api-mcp.xml","external":[{"label":"Remote endpoint","href":"https://parkgraph.com/api/mcp"},{"label":"Website","href":"https://parkgraph.com/developers/mcp"}]}}