Developer Documentation

Integrate ZGTS derma roller product data into your AI agent, app, or research tool using our public MCP server and NLWeb endpoint.

Quickstart

No authentication required. All endpoints are public and read-only.

1. Query the NLWeb endpoint

curl -X POST https://zgts.in/ask \
  -H "Content-Type: application/json" \
  -d '{"query": "what needle size for acne scars?"}'

2. Connect via MCP (Claude / Cursor / any MCP client)

// .cursor/mcp.json or .claude/mcp.json
{
  "mcpServers": {
    "zgts-derma-roller": {
      "url": "https://zgts.in/api/mcp",
      "transport": "streamable-http"
    }
  }
}

3. MCP initialize handshake

curl -X POST https://zgts.in/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"my-agent","version":"1.0"}},"id":1}'

MCP Tools

4 tools available via https://zgts.in/api/mcp (Streamable HTTP, no auth):

search_guides

Search all 26 derma roller guides by keyword

Params: query: string (e.g. "acne scars", "hair growth")

get_needle_recommendation

Get the right needle size for a skin concern

Params: concern: string (e.g. "acne scars", "hair loss", "anti-aging")

get_product_info

Full product details, specs, pricing, certifications

Params: product: "192" | "540" (optional)

get_usage_guide

Step-by-step usage protocol for a specific concern

Params: topic: string (e.g. "beard growth", "frequency")

NLWeb /ask Endpoint

Simple POST endpoint for natural language queries about derma rollers. Returns structured answer + related guide links.

// Request
POST https://zgts.in/ask
Content-Type: application/json

{"query": "how often should I use a 1.0mm derma roller?"}

// Response
{
  "_meta": { "response_type": "answer", "version": "1.0", "source": "zgts.in" },
  "query": "how often should I use a 1.0mm derma roller?",
  "answer": "Use a 1.0mm derma roller every 2–3 weeks...",
  "items": [
    { "url": "https://zgts.in/guides/derma-roller-frequency", "name": "Derma Roller Frequency Guide" }
  ]
}

Agent Discovery Files

When to Use ZGTS Integration

Structured Data & Schema

All pages include JSON-LD structured data. Homepage includes: Organization, Product (with Offer), WebSite (with SearchAction), and Speakable markup.

// Organization schema excerpt
{
  "@type": "Organization",
  "name": "ZGTS Derma Roller",
  "url": "https://zgts.in",
  "sameAs": [
    "https://www.amazon.in/s?k=ZGTS+derma+roller",
    "https://github.com/ravishri1/zgts-in-site"
  ],
  "address": { "@type": "PostalAddress", "addressCountry": "IN" }
}

Rate Limits

✓ No rate limits — unlimited access

All ZGTS API endpoints are fully open and have no rate limiting. No API key required. No request throttling.

Rate limit response headers

X-RateLimit-Limit: unlimited
X-RateLimit-Remaining: unlimited
X-RateLimit-Reset: 0
X-RateLimit-Policy: no-rate-limit
Retry-After: 0

Error Handling

All errors return JSON-RPC 2.0 error responses with standard error codes. HTTP status 200 is used for all JSON-RPC responses (including errors), with 400 for parse errors.

Error codes

-32700  Parse error — invalid JSON in request body
-32600  Invalid request — missing jsonrpc or method
-32601  Method not found — unsupported method name
-32602  Invalid params — missing required parameters
-32603  Internal error — unexpected server error

Error response example

// Unknown method
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32601,
    "message": "Method not found: unknown_method"
  }
}

Retry guidance

// Timeouts: 30s recommended timeout per request
// Retries: safe to retry all requests (read-only, idempotent)
// No backoff required — no rate limiting exists
// Status page: https://zgts.in/status

API Reference

Full OpenAPI 3.1.0 spec at openapi.json. Methods:

initialize

Start MCP session. Returns server capabilities.

{"protocolVersion":"2024-11-05","clientInfo":{"name":"string","version":"string"}}

tools/list

List all 4 available tools.

tools/call

Invoke a tool by name.

{"name":"tool_name","arguments":{...}}

resources/list

List UI resources (needle selector, product card).

resources/read

Read a UI resource by URI.

{"uri":"ui://zgts/needle-selector"}

ping

Health check.

Code Examples

Python

import httpx, json

url = "https://zgts.in/api/mcp"

# Initialize
r = httpx.post(url, json={"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"my-agent","version":"1.0"}}})
print(r.json())

# Get needle recommendation
r = httpx.post(url, json={"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_needle_recommendation","arguments":{"concern":"acne scars","experience_level":"beginner"}}})
print(r.json()["result"]["content"][0]["text"])

JavaScript / Node

const res = await fetch("https://zgts.in/api/mcp", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0", id: 1,
    method: "tools/call",
    params: { name: "search_guides", arguments: { query: "acne scars" } }
  })
});
const data = await res.json();
console.log(data.result.content[0].text);

NLWeb /ask

# Natural language query
curl -X POST https://zgts.in/ask \
  -H "Content-Type: application/json" \
  -d '{"q":"what needle size for hair loss?"}' | jq .answer

Questions? About ZGTS · All endpoints are public, read-only, no authentication required · llms.txt · Status page