curl --request GET \
--url https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7 \
--header 'Authorization: Bearer gmcp_your_api_key'
import requests
response = requests.get(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown",
headers={"Authorization": "Bearer gmcp_your_api_key"},
params={"days": 30}
)
print(response.json())
const response = await fetch(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=90",
{
headers: { "Authorization": "Bearer gmcp_your_api_key" }
}
);
const data = await response.json();
$response = wp_remote_get(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7",
["headers" => ["Authorization" => "Bearer gmcp_your_api_key"]]
);
$data = json_decode(wp_remote_retrieve_body($response), true);
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7", nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7"))
.GET()
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri)
response = http.request(request)
puts JSON.parse(response.body)
[
{
"client_type": "claude-desktop",
"total_calls": 4820,
"successful_calls": 4751,
"failed_calls": 69,
"avg_response_time_ms": 312
},
{
"client_type": "cursor",
"total_calls": 2341,
"successful_calls": 2298,
"failed_calls": 43,
"avg_response_time_ms": 289
},
{
"client_type": "windsurf",
"total_calls": 891,
"successful_calls": 884,
"failed_calls": 7,
"avg_response_time_ms": 341
},
{
"client_type": "claude-code",
"total_calls": 432,
"successful_calls": 430,
"failed_calls": 2,
"avg_response_time_ms": 278
}
]
[]
Analytics
Client Breakdown
Retrieve call analytics grouped by AI client type.
GET
/
wp-json
/
getmcp
/
v1
/
analytics
/
client-breakdown
curl --request GET \
--url https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7 \
--header 'Authorization: Bearer gmcp_your_api_key'
import requests
response = requests.get(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown",
headers={"Authorization": "Bearer gmcp_your_api_key"},
params={"days": 30}
)
print(response.json())
const response = await fetch(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=90",
{
headers: { "Authorization": "Bearer gmcp_your_api_key" }
}
);
const data = await response.json();
$response = wp_remote_get(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7",
["headers" => ["Authorization" => "Bearer gmcp_your_api_key"]]
);
$data = json_decode(wp_remote_retrieve_body($response), true);
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7", nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7"))
.GET()
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri)
response = http.request(request)
puts JSON.parse(response.body)
[
{
"client_type": "claude-desktop",
"total_calls": 4820,
"successful_calls": 4751,
"failed_calls": 69,
"avg_response_time_ms": 312
},
{
"client_type": "cursor",
"total_calls": 2341,
"successful_calls": 2298,
"failed_calls": 43,
"avg_response_time_ms": 289
},
{
"client_type": "windsurf",
"total_calls": 891,
"successful_calls": 884,
"failed_calls": 7,
"avg_response_time_ms": 341
},
{
"client_type": "claude-code",
"total_calls": 432,
"successful_calls": 430,
"failed_calls": 2,
"avg_response_time_ms": 278
}
]
[]
Returns aggregated statistics grouped by the AI client type (Claude, Cursor, Windsurf, etc.) for a given date range.
Query Parameters
integer
default:"1"
Number of days to look back. Supported values: 7, 30, 90. Defaults to 1 (today). Use with
to for custom ranges.string
Start date for a custom range. Format:
YYYY-MM-DD. Overrides days if provided.string
End date for a custom range. Format:
YYYY-MM-DD.curl --request GET \
--url https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7 \
--header 'Authorization: Bearer gmcp_your_api_key'
import requests
response = requests.get(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown",
headers={"Authorization": "Bearer gmcp_your_api_key"},
params={"days": 30}
)
print(response.json())
const response = await fetch(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=90",
{
headers: { "Authorization": "Bearer gmcp_your_api_key" }
}
);
const data = await response.json();
$response = wp_remote_get(
"https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7",
["headers" => ["Authorization" => "Bearer gmcp_your_api_key"]]
);
$data = json_decode(wp_remote_retrieve_body($response), true);
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7", nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7"))
.GET()
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://yoursite.com/wp-json/getmcp/v1/analytics/client-breakdown?days=7')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri)
response = http.request(request)
puts JSON.parse(response.body)
[
{
"client_type": "claude-desktop",
"total_calls": 4820,
"successful_calls": 4751,
"failed_calls": 69,
"avg_response_time_ms": 312
},
{
"client_type": "cursor",
"total_calls": 2341,
"successful_calls": 2298,
"failed_calls": 43,
"avg_response_time_ms": 289
},
{
"client_type": "windsurf",
"total_calls": 891,
"successful_calls": 884,
"failed_calls": 7,
"avg_response_time_ms": 341
},
{
"client_type": "claude-code",
"total_calls": 432,
"successful_calls": 430,
"failed_calls": 2,
"avg_response_time_ms": 278
}
]
[]
⌘I

