diff --git a/PaperlessMCP.Tests/Client/PaperlessClientTests.cs b/PaperlessMCP.Tests/Client/PaperlessClientTests.cs
index db668b0..6b82617 100644
--- a/PaperlessMCP.Tests/Client/PaperlessClientTests.cs
+++ b/PaperlessMCP.Tests/Client/PaperlessClientTests.cs
@@ -31,14 +31,7 @@ public class PaperlessClientTests : IDisposable
public async Task PingAsync_WhenSuccessful_ReturnsSuccess()
{
// Arrange
- _factory.MockHandler
- .When(HttpMethod.Get, "https://paperless.example.com/api/")
- .Respond(req =>
- {
- var response = new HttpResponseMessage(HttpStatusCode.OK);
- response.Headers.Add("X-Version", "2.0.0");
- return response;
- });
+ _factory.SetupGet("api/status/", """{"pngx_version": "2.0.0", "server_os": "Linux"}""");
// Act
var (success, version, error) = await _factory.Client.PingAsync();
@@ -53,7 +46,7 @@ public class PaperlessClientTests : IDisposable
public async Task PingAsync_WhenUnauthorized_ReturnsFailure()
{
// Arrange
- _factory.SetupGetWithStatus("api/", HttpStatusCode.Unauthorized);
+ _factory.SetupGetWithStatus("api/status/", HttpStatusCode.Unauthorized);
// Act
var (success, version, error) = await _factory.Client.PingAsync();
diff --git a/PaperlessMCP.Tests/Tools/HealthToolsTests.cs b/PaperlessMCP.Tests/Tools/HealthToolsTests.cs
index f750065..d31d4f3 100644
--- a/PaperlessMCP.Tests/Tools/HealthToolsTests.cs
+++ b/PaperlessMCP.Tests/Tools/HealthToolsTests.cs
@@ -26,14 +26,7 @@ public class HealthToolsTests : IDisposable
public async Task Ping_WhenConnected_ReturnsSuccess()
{
// Arrange
- _factory.MockHandler
- .When(HttpMethod.Get, "https://paperless.example.com/api/")
- .Respond(req =>
- {
- var response = new HttpResponseMessage(HttpStatusCode.OK);
- response.Headers.Add("X-Version", "2.5.0");
- return response;
- });
+ _factory.SetupGet("api/status/", """{"pngx_version": "2.5.0", "server_os": "Linux"}""");
// Act
var result = await HealthTools.Ping(_factory.Client);
@@ -48,7 +41,7 @@ public class HealthToolsTests : IDisposable
public async Task Ping_WhenConnectionFails_ReturnsError()
{
// Arrange
- _factory.SetupGetWithStatus("api/", HttpStatusCode.Unauthorized);
+ _factory.SetupGetWithStatus("api/status/", HttpStatusCode.Unauthorized);
// Act
var result = await HealthTools.Ping(_factory.Client);
@@ -63,16 +56,7 @@ public class HealthToolsTests : IDisposable
public async Task GetCapabilities_ReturnsCapabilitiesInfo()
{
// Arrange
- _factory.MockHandler
- .When(HttpMethod.Get, "https://paperless.example.com/api/")
- .Respond(req =>
- {
- var response = new HttpResponseMessage(HttpStatusCode.OK);
- response.Headers.Add("X-Version", "2.5.0");
- return response;
- });
-
- _factory.SetupGet("api/status/", "{}");
+ _factory.SetupGet("api/status/", """{"pngx_version": "2.5.0", "server_os": "Linux"}""");
// Act
var result = await HealthTools.GetCapabilities(_factory.Client);
@@ -91,11 +75,7 @@ public class HealthToolsTests : IDisposable
public async Task GetCapabilities_IncludesAllEndpointCategories()
{
// Arrange
- _factory.MockHandler
- .When(HttpMethod.Get, "https://paperless.example.com/api/")
- .Respond(HttpStatusCode.OK);
-
- _factory.SetupGet("api/status/", "{}");
+ _factory.SetupGet("api/status/", """{"pngx_version": "2.5.0"}""");
// Act
var result = await HealthTools.GetCapabilities(_factory.Client);
diff --git a/PaperlessMCP/Client/PaperlessClient.cs b/PaperlessMCP/Client/PaperlessClient.cs
index 4d9f93b..30522b4 100644
--- a/PaperlessMCP/Client/PaperlessClient.cs
+++ b/PaperlessMCP/Client/PaperlessClient.cs
@@ -42,19 +42,21 @@ public class PaperlessClient
#region Health & Status
///
- /// Checks connectivity and returns API root information.
+ /// Checks connectivity and returns API status information.
///
public async Task<(bool Success, string? Version, string? Error)> PingAsync(CancellationToken cancellationToken = default)
{
try
{
- var response = await _httpClient.GetAsync("api/", cancellationToken);
+ var response = await _httpClient.GetAsync("api/status/", cancellationToken);
if (response.IsSuccessStatusCode)
{
- // Try to extract version from response headers or body
- var version = response.Headers.TryGetValues("X-Version", out var versions)
- ? versions.FirstOrDefault()
+ // Extract version from the status response
+ var content = await response.Content.ReadAsStringAsync(cancellationToken);
+ var json = JsonSerializer.Deserialize(content);
+ var version = json.TryGetProperty("pngx_version", out var versionProp)
+ ? versionProp.GetString()
: null;
return (true, version, null);