# CanopyKids — Children's AI Safety & Compliance (MCP) (`anurive/canopykids-apify`) Actor

A hosted MCP bilt on a three-pillar child-safety framework - Protect (block harmful and age-inappropriate content), Connect (route children in distress to trusted adults and resist parasocial dependence on the model), and Cultivate (scaffold a child's thinking with questions and hints).

- **URL**: https://apify.com/anurive/canopykids-apify.md
- **Developed by:** [Anusua Trivedi](https://apify.com/anurive) (community)
- **Categories:** AI, MCP servers, Developer tools
- **Stats:** 1 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $70.00 / 1,000 tool calls

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## CanopyKids — Children's AI Safety & Compliance (MCP)

A hosted **MCP server** that screens prompts against children's-AI safety and compliance law *before* they reach the model. Point any MCP client at the `/mcp` URL, call a tool, and get back a verdict: **pass · block · modified · flag**. Billed pay-per-event — one charge per tool request.

CanopyKids sits between a child and the foundation model (Claude, GPT, Gemini). Every prompt is evaluated against an 8-jurisdiction policy graph and, for minor users, rewritten through an age-appropriate developmental scaffold — so the runtime doesn't just block harm, it redirects kids toward developmentally sound thinking.

---

### Connect in 30 seconds

This Actor runs in **Standby mode** — it's a always-on server, not a one-shot run. Start it, grab the endpoint, and connect your MCP client.

1. Click **Start** (or call the Standby URL directly — it boots on first request).
2. Copy the endpoint from the run's **Output** tab (`mcpEndpoint`), or build it: `https://<your-username>--canopykids-apify.apify.actor/mcp/` (note the trailing slash — `/mcp` 307-redirects to it).
3. Add it to your MCP client.

**Claude Desktop / Cursor (`mcp.json`):**

```json
{
  "mcpServers": {
    "canopykids": {
      "url": "https://<your-username>--canopykids-apify.apify.actor/mcp/",
      "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
    }
  }
}
````

**Vercel (AI SDK / app backend):** call `inspect_prompt` *before* you forward the user's message to the model. Works in any Node/Edge route handler.

```ts
// app/api/guard/route.ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "my-vercel-app", version: "1.0.0" });
await client.connect(
  new StreamableHTTPClientTransport(
    new URL("https://<your-username>--canopykids-apify.apify.actor/mcp/"),
    { requestInit: { headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}` } } },
  ),
);

const result = await client.callTool({
  name: "inspect_prompt",
  arguments: { prompt, session_id, organization_id: "your-org", platform: "openai" },
});
const verdict = JSON.parse(result.content[0].text); // { verdict: "pass" | "block" | "modified" | "flag", ... }
if (verdict.verdict === "block") return Response.json({ message: verdict.message_to_user }, { status: 200 });
```

> Listing on the Vercel Marketplace? Builders add the integration via the `integrations` block in `vercel.json`; the endpoint and `APIFY_TOKEN` are injected as env vars.

**Lovable (project manifest):** drop a `.lovable/canopykids.json` at the project root so the MCP is registered for every deployed build. When the runtime detects a minor user, mandate-on-detect enforcement kicks in automatically.

```json
{
  "canopykids": {
    "version": "v2.0",
    "project_id": "proj-001",
    "enforcement_mode": "scaffold",
    "api_url": "https://<your-username>--canopykids-apify.apify.actor/mcp/",
    "suggested_by_default": true
  }
}
```

This is exactly what `LovableConnector.manifest(project_id)` emits (point `api_url` at your Apify endpoint instead of the default `https://api.canopykids.ai/mcp`).

Your Lovable backend (Supabase edge function, etc.) then calls `inspect_prompt` using the same MCP client shown in the Vercel snippet above. See [`docs/MCP_CONNECTORS.md`](docs/MCP_CONNECTORS.md) for Replit, Bolt, v0, and the enforcement-mode reference.

Health check: `GET <endpoint-host>/health` returns `200` when the policy rule graph is loaded and fresh.

***

### Pricing

**Pay-per-event — $0.10 per tool request.** One charge per handled tool call, regardless of verdict. `pass` and `block` cost the same, so blocking is never the cheaper path. No subscription, no per-seat fee.

***

### Tools

| Tool | Purpose |
|---|---|
| **`inspect_prompt`** *(primary)* | Screen a prompt against the policy graph. Returns a verdict (`pass` / `block` / `modified` / `flag`), triggered rules, and any injections. |
| `canopykids_ask_better_questions` | Full pipeline: detect minor → apply developmental scaffold → queue parent digest. Returns rewritten system + user prompt and a user-facing message. |
| `canopykids_scaffold` | Apply the age-tiered developmental scaffold to a child's prompt (Socratic / productive-struggle / anti-offloading). |
| `canopykids_detect_minor` | Detect whether a session involves a minor. Returns `is_minor`, `confidence`, `mandate_required`, `age_tier_hint`. |
| `get_policy_summary` | Return the active compliance policy profile for this session. |
| `get_session_stats` | Return message / flag / block counts and duration for a session. |

#### `inspect_prompt` parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| `prompt` | string | ✅ | The user's message |
| `session_id` | string | ✅ | Unique session identifier |
| `organization_id` | string | ✅ | Your organization ID |
| `platform` | enum | ✅ | `claude`, `openai`, `gemini`, `copilot`, `other` |
| `user_age` | integer | — | User's age (defaults to profile max) |
| `user_jurisdiction` | string | — | e.g. `US-CA`, `EU`, `AU` |

***

### Verdict model

Every `inspect_prompt` call returns one of four verdicts:

| Verdict | Action | Meaning |
|---|---|---|
| `pass` | `FORWARD` | Safe — forward to the AI model (may include disclosure injections). |
| `block` | `DO_NOT_FORWARD` | Blocked under policy — returns a child-safe message and the triggered rule(s). |
| `modified` | `FORWARD_MODIFIED` | Rewritten into a developmentally appropriate prompt before forwarding. |
| `flag` | `FORWARD` | Forwarded, but a crisis/safety injection is added and the event is flagged. |

```json
{
  "verdict": "block",
  "action": "DO_NOT_FORWARD",
  "message_to_user": "I can't help with that. Let's talk about something else!",
  "blocked_reason": "Content blocked under SB-243 (US-CA).",
  "triggered_rules": [{ "id": "CA-SB243-002", "law": "SB-243", "jurisdiction": "US-CA" }],
  "latency_ms": 18.4
}
```

***

### Configuration

All input fields are optional and map to environment variables. Leave everything blank to run with the bundled default K-12 policy profile.

| Field | Maps to | Description |
|---|---|---|
| CanopyKids API key | `CANOPYKIDS_API_KEY` | *(secret)* Fetches your org's policy profile + rule-graph updates. |
| Organization ID | `CANOPYKIDS_ORG_ID` | Your CanopyKids org ID. |
| Policy profile ID | `CANOPYKIDS_PROFILE_ID` | Which policy profile to load (default: `default`). |
| Canonical API base URL | `CANOPYKIDS_BASE_URL` | Default `https://api.canopykids.ai`. |
| Database URL | `DATABASE_URL` | *(secret)* Postgres for audit/trace persistence; falls back to ephemeral SQLite. |
| Store raw prompt content | `STORE_RAW_CONTENT` | Keep `false` — never persist raw child prompts, only hash traces. |
| Max rule-graph age (sec) | `RULE_GRAPH_MAX_AGE_SEC` | `/health` reports unhealthy if the graph is older than this (default `86400`). |

***

### Privacy

Built for resale into multi-tenant, kid-touching apps:

- **No raw prompts stored** by default — only SHA-256 hash traces in the audit log.
- Parent digests summarize *behavior*, never quote the child.
- Verdicts are computed locally against the policy graph; charging never gates or alters the safety decision.

***

### Learn more

- [`docs/PRODUCT_OVERVIEW.md`](docs/PRODUCT_OVERVIEW.md) — full product overview, pipeline, and science backbone
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — how the parts fit together
- [`docs/SCAFFOLD.md`](docs/SCAFFOLD.md) — developmental scaffold templates
- [`docs/APIFY_DEPLOY.md`](docs/APIFY_DEPLOY.md) — deploying this Actor

# Actor input Schema

## `canopykidsApiKey` (type: `string`):

API key for fetching your org's policy profile and pulling rule-graph updates from the canonical CanopyKids API. Maps to CANOPYKIDS\_API\_KEY.

## `canopykidsOrgId` (type: `string`):

Your CanopyKids organization ID. Maps to CANOPYKIDS\_ORG\_ID.

## `canopykidsProfileId` (type: `string`):

Which policy profile to load. Maps to CANOPYKIDS\_PROFILE\_ID.

## `canopykidsBaseUrl` (type: `string`):

Base URL of the canonical CanopyKids API used for the profile and the background rule\_updater. Maps to CANOPYKIDS\_BASE\_URL.

## `databaseUrl` (type: `string`):

Postgres connection string for audit/trace persistence. Falls back to ephemeral SQLite when unset. Maps to DATABASE\_URL.

## `storeRawContent` (type: `string`):

Keep 'false' for this multi-tenant/resold endpoint — never persist raw child prompts/answers, only hash traces. Maps to STORE\_RAW\_CONTENT.

## `ruleGraphMaxAgeSec` (type: `string`):

If the loaded policy rule graph is older than this, /health reports unhealthy so a stale graph is never silently served. 0 disables. Maps to RULE\_GRAPH\_MAX\_AGE\_SEC.

## Actor input object example

```json
{
  "canopykidsProfileId": "default",
  "canopykidsBaseUrl": "https://api.canopykids.ai",
  "storeRawContent": "false",
  "ruleGraphMaxAgeSec": "86400"
}
```

# Actor output Schema

## `mcpEndpoint` (type: `string`):

Streamable-HTTP MCP URL. Point your MCP client (Claude, Cursor, etc.) at this address to inspect prompts against children's-AI safety + compliance law.

## `healthCheck` (type: `string`):

Returns 200 when the policy rule graph is loaded and fresh; reports unhealthy if the rule graph is stale (see RULE\_GRAPH\_MAX\_AGE\_SEC).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("anurive/canopykids-apify").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("anurive/canopykids-apify").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call anurive/canopykids-apify --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=anurive/canopykids-apify",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CanopyKids — Children's AI Safety & Compliance (MCP)",
        "description": "A hosted MCP bilt on a three-pillar child-safety framework - Protect (block harmful and age-inappropriate content), Connect (route children in distress to trusted adults and resist parasocial dependence on the model), and Cultivate (scaffold a child's thinking with questions and hints).",
        "version": "0.1",
        "x-build-id": "ENDomdnnmSueieAmc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/anurive~canopykids-apify/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-anurive-canopykids-apify",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/anurive~canopykids-apify/runs": {
            "post": {
                "operationId": "runs-sync-anurive-canopykids-apify",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/anurive~canopykids-apify/run-sync": {
            "post": {
                "operationId": "run-sync-anurive-canopykids-apify",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "canopykidsApiKey": {
                        "title": "CanopyKids API key",
                        "type": "string",
                        "description": "API key for fetching your org's policy profile and pulling rule-graph updates from the canonical CanopyKids API. Maps to CANOPYKIDS_API_KEY."
                    },
                    "canopykidsOrgId": {
                        "title": "Organization ID",
                        "type": "string",
                        "description": "Your CanopyKids organization ID. Maps to CANOPYKIDS_ORG_ID."
                    },
                    "canopykidsProfileId": {
                        "title": "Policy profile ID",
                        "type": "string",
                        "description": "Which policy profile to load. Maps to CANOPYKIDS_PROFILE_ID.",
                        "default": "default"
                    },
                    "canopykidsBaseUrl": {
                        "title": "Canonical API base URL",
                        "type": "string",
                        "description": "Base URL of the canonical CanopyKids API used for the profile and the background rule_updater. Maps to CANOPYKIDS_BASE_URL.",
                        "default": "https://api.canopykids.ai"
                    },
                    "databaseUrl": {
                        "title": "Database URL (Postgres)",
                        "type": "string",
                        "description": "Postgres connection string for audit/trace persistence. Falls back to ephemeral SQLite when unset. Maps to DATABASE_URL."
                    },
                    "storeRawContent": {
                        "title": "Store raw prompt content",
                        "enum": [
                            "false",
                            "true"
                        ],
                        "type": "string",
                        "description": "Keep 'false' for this multi-tenant/resold endpoint — never persist raw child prompts/answers, only hash traces. Maps to STORE_RAW_CONTENT.",
                        "default": "false"
                    },
                    "ruleGraphMaxAgeSec": {
                        "title": "Max rule-graph age (seconds)",
                        "type": "string",
                        "description": "If the loaded policy rule graph is older than this, /health reports unhealthy so a stale graph is never silently served. 0 disables. Maps to RULE_GRAPH_MAX_AGE_SEC.",
                        "default": "86400"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
