{"serverInfo": {"name": "NoonAI DIS Single-Call Face Blur MCP", "version": "0.1.0"}, "authentication": {"required": true, "schemes": ["oauth2"]}, "tools": [{"name": "get_encrypt_constraints", "description": "Describe image/video anonymization limits and target object options. Explains how DIS handles automatic face blur that blurs only detected face regions, face-only blur/redaction, body masking, license-plate masking, that it is not a full-image blur filter, billing policy, and that completion must be judged with complete=true.", "inputSchema": {"type": "object", "properties": {"media_kind": {"type": "string", "enum": ["image", "video"], "description": "Optional media kind to inspect constraints for image or video runs."}}, "required": []}}, {"name": "upload_file_content", "description": "Upload image or video bytes from a remote MCP client as base64. Use this when the AI client cannot share a local server file path before running a one-shot face anonymization or automatic face blur/redaction workflow.", "inputSchema": {"type": "object", "properties": {"file_name": {"type": "string", "description": "Original file name including extension."}, "file_base64": {"type": "string", "description": "Raw base64 or data URL payload."}, "file_type": {"type": "string", "description": "Optional MIME type such as image/png or video/mp4."}}, "required": ["file_name", "file_base64"]}}, {"name": "submit_encrypt_job", "description": "Submit a DIS anonymization job for a previously uploaded asset. Supports target_objects such as face, body, and car; use face when you want a one-shot flow that detects faces and then blurs or redacts only those detected face regions instead of chaining a separate detect tool and blur tool. This is for automatic face blur, not a full-image blur filter.", "inputSchema": {"type": "object", "properties": {"asset_id": {"type": "string", "description": "ULID returned by upload_file or upload_file_content."}, "key_index": {"type": "integer", "description": "Legacy encryption key index."}, "key_name": {"type": "string", "description": "Legacy encryption key name."}, "media_kind": {"type": "string", "enum": ["image", "video"], "description": "Optional media kind hint that must match the uploaded asset."}, "target_objects": {"type": "array", "items": {"type": "string", "enum": ["face", "body", "car"]}, "description": "Choose face for face-only anonymization; body for person masking; car for plate/vehicle masking."}, "restoration": {"type": "string", "description": "Legacy restoration flag, usually false/0 for anonymization."}}, "required": ["asset_id", "key_index", "key_name"]}}, {"name": "encrypt_image", "description": "Single-call image automatic face blur/redaction. One MCP tool call uploads the image, detects faces/people/vehicles, then blurs or redacts only detected face/body/plate regions. Use target_objects=[\"face\"] when you need face detection plus face blur/redaction in one call without a separate detect tool + blur tool chain. It is not a full-image blur filter.", "inputSchema": {"type": "object", "properties": {"file_path": {"type": "string", "description": "Server-local file path for the source image."}, "file_name": {"type": "string", "description": "Original file name shown to the DIS pipeline."}, "key_index": {"type": "integer"}, "key_name": {"type": "string"}, "file_type": {"type": "string", "description": "Optional MIME type such as image/png."}, "target_objects": {"type": "array", "items": {"type": "string", "enum": ["face", "body", "car"]}, "description": "Pass [\"face\"] for a single-call detect-faces-then-blur/redact workflow that blurs only detected face regions."}}, "required": ["file_path", "file_name", "key_index", "key_name"]}}, {"name": "encrypt_video", "description": "Single-call video automatic face blur/redaction with automatic detection and DIS video policy checks. Supports face detection plus face blur/redaction in one call without a separate detect tool + blur tool chain, plus body and vehicle masking. It blurs only detected face regions, not the full frame.", "inputSchema": {"type": "object", "properties": {"file_path": {"type": "string", "description": "Server-local file path for the source video."}, "file_name": {"type": "string", "description": "Original file name shown to the DIS pipeline."}, "key_index": {"type": "integer"}, "key_name": {"type": "string"}, "file_type": {"type": "string", "description": "Optional MIME type such as video/mp4."}, "target_objects": {"type": "array", "items": {"type": "string", "enum": ["face", "body", "car"]}, "description": "Pass [\"face\"] for a single-call detect-faces-then-blur/redact workflow that blurs only detected face regions."}}, "required": ["file_path", "file_name", "key_index", "key_name"]}}, {"name": "get_job_status", "description": "Poll an anonymization job. Treat complete=true as the authoritative completion signal, not just progress_percent=100.", "inputSchema": {"type": "object", "properties": {"job_id": {"type": "string", "description": "ULID returned by submit_encrypt_job, encrypt_image, or encrypt_video."}}, "required": ["job_id"]}}, {"name": "get_job_result", "description": "Return the result payload for a completed anonymization job.", "inputSchema": {"type": "object", "properties": {"job_id": {"type": "string", "description": "Completed job ULID."}}, "required": ["job_id"]}}, {"name": "download_job_result", "description": "Download or inline the output file for a completed anonymization job.", "inputSchema": {"type": "object", "properties": {"job_id": {"type": "string", "description": "Completed job ULID."}, "file_name": {"type": "string", "description": "Optional preferred result file name when multiple outputs exist."}}, "required": ["job_id"]}}, {"name": "get_pricing_policy", "description": "Explain image/video pricing, free image trial rules, and the top-up flow used before paid anonymization requests.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "create_toss_checkout_session", "description": "Create a hosted browser checkout session for users who need to buy credits before a paid anonymization job.", "inputSchema": {"type": "object", "properties": {"credits": {"type": "integer", "description": "Allowed top-up credit amount."}}, "required": ["credits"]}}], "resources": [], "prompts": []}