{"name":"dev.phpray/phpray","slug":"phpray","title":null,"description":"Ask an agent why a PHP site is slow: every request with its SQL, HTTP calls, errors and N+1.","url":"https://mcp.market/server/phpray","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"data","tags":["data","ai"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-24T08:38:06.000Z","license":"Apache-2.0"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T02:35:41.639Z","last_ok_at":"2026-11-04T02:35:41.639Z","latency_ms":957},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/stephen1137/phpray","website":"https://phpray.dev/mcp-server/","version":"0.15.6","remotes":[{"type":"streamable-http","url":"https://phpray.dev/mcp","headers":[{"description":"Bearer <console token>. Omit the header entirely to use the read-only public demo account.","isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"phpray_alerts","description":"Alerts currently firing across every site this token can see, worst overrun first.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"phpray_compare","description":"Two time ranges for one site side by side. Use it to check whether a deployment, a plugin update or a configuration change made things better or worse.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from_a":{"description":"Start of range A (the earlier one), unix seconds. Without any range: the day before yesterday's 24 h against the last 24 h.","type":"integer"},"from_b":{"description":"Start of range B, unix seconds.","type":"integer"},"site_id":{"description":"Site id from phpray_sites.","type":"string"},"to_a":{"description":"End of range A, unix seconds.","type":"integer"},"to_b":{"description":"End of range B, unix seconds.","type":"integer"}},"required":["site_id"]}},{"name":"phpray_components","description":"Time attributed to each plugin, theme or vendor package on profiled requests. Answers \"which plugin is slowing the site down\". Empty when function profiling is off.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"description":"How many components to return. Default 20.","type":"integer"},"site_id":{"description":"Site id from phpray_sites.","type":"string"},"window_minutes":{"description":"How far back to look. Default 1440.","type":"integer"}},"required":["site_id"]}},{"name":"phpray_errors","description":"Requests that failed on a site: PHP errors and warnings with file and line where PHP raised one, plus 5xx responses that carry no PHP error. Pass an id to phpray_trace to see what one of them did.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"description":"How many to return. Default 20.","type":"integer"},"site_id":{"description":"Site id from phpray_sites.","type":"string"},"window_minutes":{"description":"How far back to look. Default 1440.","type":"integer"}},"required":["site_id"]}},{"name":"phpray_overview","description":"Headline numbers for one site over a time window: requests, errors, p50/p95/p99 latency, database share and N+1 count. Use this before digging into anything else.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"site_id":{"description":"Site id from phpray_sites.","type":"string"},"window_minutes":{"description":"How far back to look, in minutes. Default 60.","type":"integer"}},"required":["site_id"]}},{"name":"phpray_sites","description":"List the PHP sites this token can see, with requests, p95 latency and error rate. Start here: every other tool needs a site_id from this list.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"phpray_slow_pages","description":"The slowest URLs on a site, with request counts and p95, from the request timeseries. Answers \"which page is slow\".","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"description":"How many URLs to return. Default 25.","type":"integer"},"site_id":{"description":"Site id from phpray_sites.","type":"string"},"window_minutes":{"description":"How far back to look. Default 1440.","type":"integer"}},"required":["site_id"]}},{"name":"phpray_slow_queries","description":"SQL fingerprints ordered by time spent, with call counts and the caller when known. Literals are already masked. Answers \"which query is slow\".","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"description":"How many queries to return. Default 20.","type":"integer"},"site_id":{"description":"Site id from phpray_sites.","type":"string"},"window_minutes":{"description":"How far back to look. Default 1440.","type":"integer"}},"required":["site_id"]}},{"name":"phpray_trace","description":"One request in full: wall time split into PHP, database and outbound HTTP, every query, every external call, errors, and the component breakdown when the request was profiled.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"trace_id":{"description":"Trace id from phpray_traces.","type":"string"}},"required":["trace_id"]}},{"name":"phpray_traces","description":"Recent requests for a site. Filter with min_ms and status to find the bad ones, then pass an id to phpray_trace.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"description":"How many to return. Default 50.","type":"integer"},"min_ms":{"description":"Only requests slower than this.","type":"integer"},"site_id":{"description":"Site id from phpray_sites.","type":"string"},"status":{"description":"Only this HTTP status, e.g. 500.","type":"integer"},"window_minutes":{"description":"How far back to look. Default 1440.","type":"integer"}},"required":["site_id"]}}],"scan":{"score":88,"grade":"A","scanned_at":"2026-10-12T16:01:56.556Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-12T16:01:56.519Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1412ms"]},"poisoning":{"score":15,"max":15,"notes":["10 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 18 days ago"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[],"inputs":{"probes":[{"url":"https://phpray.dev/mcp","reachable":true,"authRequired":false,"latencyMs":1412,"serverInfo":{"name":"phpray","version":"0.15.7"}}],"packages":[],"repo":{"found":true,"owner":"stephen1137","repo":"phpray","archived":false,"pushedAt":"2026-09-24T08:38:06Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/260206614?v=4","ownerCreatedAt":"2026-02-08T09:50:03Z","license":"Apache-2.0"},"icon":{"url":"https://phpray.dev/favicon.ico","source":"site","width":64,"height":64},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"Apache-2.0","lastPushAt":"2026-09-24T08:38:06.000Z","score":23}}}},"grade_history":[{"kind":"restore","fromGrade":"B","toGrade":"A","reason":"score 88","createdAt":"2026-10-12T16:01:57.871Z"}],"reviews":[]}