{"schema_version":"verify.compare.v1","generated_at":"2026-09-29T15:50:00.993150+00:00","count":1,"missing_servers":[],"results":[{"server_id":"github-orristech/ccapi-mcp","display_name":"OrrisTech/ccapi-mcp","profile_url":"https://verify.sentinelsignal.io/servers/github-orristech/ccapi-mcp","compare_url":"https://verify.sentinelsignal.io/compare?server=github-orristech%2Fccapi-mcp","trust_summary_url":"https://verify.sentinelsignal.io/v1/servers/github-orristech/ccapi-mcp/trust-summary","claimed":false,"verified_publisher":false,"claim_status":"unclaimed","badge_url":"https://verify.sentinelsignal.io/badge/github-orristech/ccapi-mcp.svg","report_url":"https://verify.sentinelsignal.io/v1/servers/github-orristech/ccapi-mcp/report","policy_url":"https://verify.sentinelsignal.io/v1/servers/github-orristech/ccapi-mcp/policy","evidence_url":"https://verify.sentinelsignal.io/api/v1/servers/github-orristech/ccapi-mcp/evidence","commerce_signal":null,"payment_capable":null,"delegation_level":null,"risk_flags":[],"strengths":["report_available","policy_available","badge_available"],"limitations":["unclaimed_profile","publisher_not_verified"],"last_seen":null,"last_scored":"2026-09-29T09:44:30.691477+00:00","recommended_agent_action":"allow_with_policy_review","observed_attention":{"schema":"verify.observed_attention.v1","window_days":30,"level":"none","label":"No observed attention","summary":"No recent machine-readable trust or discovery activity observed for this server.","segments":{"useful_ai_user":{"level":"none","observed":false,"description":"AI-assisted user sessions such as ChatGPT/User or Claude/User."},"machine_trust_evaluator":{"level":"none","observed":false,"description":"Synthetic sessions inspecting multiple trust surfaces such as report, policy, ledger, badge, trust-summary, or compare."},"possible_agent_or_script":{"level":"none","observed":false,"description":"Structured direct sessions with rapid profile, compare, report, policy, badge, or trust-surface fan-out."},"isolated_machine_surface":{"level":"none","observed":false,"description":"Aged-out direct synthetic singleton sessions that touched a machine-readable trust surface without becoming a broader evaluator."},"ai_crawler":{"level":"none","observed":false,"description":"Known AI crawler activity such as ClaudeBot, GPTBot, or similar crawlers."},"search_crawler":{"level":"none","observed":false,"description":"Search and SEO crawler activity."},"browser_like_automation":{"level":"none","observed":false,"description":"Browser-like synthetic sessions with rapid structured endpoint activity."},"confirmed_human":{"level":"none","observed":false,"description":"Confirmed browser-session human activity."}},"surfaces_observed":{"server_profile":false,"compare":false,"compare_json":false,"compare_api":false,"report_json":false,"policy":false,"ledger":false,"badge_metadata":false,"badge_svg":false,"trust_summary":false,"mcp_tool":false},"claim_prompt":{"recommended":false,"reason":"No claim prompt is recommended from observed attention in the current window."},"notes":["Observed attention is based on segmented first-party telemetry.","Crawler and evaluator activity is not treated as confirmed human demand.","Public levels are bucketed to avoid exposing raw traffic counts."]},"owner_activation":{"claim_recommended":false,"reason":"no_observed_attention"}}],"servers":[{"namespace":"github-orristech","name":"ccapi-mcp","title":"OrrisTech/ccapi-mcp","description":"CCAPI MCP server — image, video, music and text generation across 100+ models through one endpoint","homepage_url":"https://ccapi.ai/mcp","docs_url":"https://ccapi.ai/mcp","icon_url":"https://avatars.githubusercontent.com/u/155151793?v=4","support_url":"https://github.com/OrrisTech/ccapi-mcp","remote_url":"https://ccapi.ai/mcp","server_card_url":null,"latest_version":null,"current_status":"healthy","current_score":60.42,"transport_type":"streamable-http","has_oauth":false,"has_dcr":false,"has_prompts":false,"tool_count":11,"current_validation_schema_version":"8058defc70ca932c","last_validated_at":"2026-09-29T09:44:30.691477+00:00","registry_source":"github_topic_registry","registry_identifier":"github_topic_registry:OrrisTech/ccapi-mcp","canonical_identifier":null,"current_score_components":{"auth_operability_score":2.0,"error_contract_score":0.0,"rate_limit_semantics_score":2.0,"schema_completeness_score":3.0,"backward_compatibility_score":4.0,"slo_health_score":4.0,"security_hygiene_score":3.0,"task_success_score":4.0,"trust_confidence_score":4.0,"abuse_noise_ratio_score":4.0,"prompt_contract_score":2.0,"resource_contract_score":2.0,"discovery_metadata_score":2.0,"registry_consistency_score":2.0,"installability_score":4.0,"session_semantics_score":4.0,"tool_surface_design_score":4.0,"result_shape_stability_score":4.0,"oauth_interop_score":0.0,"recovery_semantics_score":0.0,"maintenance_signal_score":3.0,"adoption_signal_score":2.0,"freshness_confidence_score":4.0,"transport_fidelity_score":4.0,"spec_recency_score":2.0,"session_resume_score":3.0,"step_up_auth_score":2.0,"transport_compliance_score":2.0,"utility_coverage_score":1.0,"advanced_capability_coverage_score":1.0,"connector_publishability_score":1.0,"tool_snapshot_churn_score":4.0,"connector_replay_score":4.0,"request_association_score":0.0,"interactive_flow_safety_score":0.0,"action_safety_score":1.0,"official_registry_presence_score":2.0,"safety_transparency_score":2.0,"tool_capability_clarity_score":4.0,"destructive_operation_safety_score":3.0,"egress_ssrf_resilience_score":1.0,"execution_sandbox_safety_score":4.0,"data_exfiltration_resilience_score":1.0,"least_privilege_scope_score":1.0,"secret_handling_hygiene_score":3.0,"dependency_supply_chain_signal_score":0.0,"input_sanitization_safety_score":3.0,"tool_namespace_clarity_score":4.0},"capability_taxonomy":[],"machine_summary":{},"taxonomy_tags":[],"score_decomposition":[],"validation_diff":null,"tool_snapshot_diff":null,"connector_replay":{},"request_association":{},"production_readiness":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use.","badge":"score-medium","critical_alerts":0,"high_or_critical_alerts":0,"degraded_by_active_alerts":false},"recommended_for":[],"history_summary":{},"validation_timeline":[],"evidence_confidence":{"score":100.0,"label":"high","reason":"Based on 20 recent validations, 14 captured checks, and validation age of 6.1 hours.","live_check_count":14,"validation_age_hours":6.09,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":14,"validation_age_hours":6.09,"freshness_threshold_hours":24}},"incident_feed":[],"disputes":[],"remediations":[],"client_remediation_modes":[],"client_profiles":[],"client_readiness_verdicts":[],"publishability_policy_profiles":[],"compatibility_fixtures":[],"install_snippets":{},"aliases":[],"raw_evidence":{"checks":{"probe_noise_resilience":{"status":"ok","latency_ms":95.57,"details":{"url":"https://ccapi.ai/robots.txt","http_status":200,"headers":{"content-type":"text/plain; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains"},"validation_disallowed":false,"consent_error":null}},"server_card":{"status":"error","latency_ms":9.92,"details":{"url":"https://ccapi.ai/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://ccapi.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"}},"oauth_protected_resource":{"status":"error","latency_ms":64.42,"details":{"url":"https://ccapi.ai/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://ccapi.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"}},"oauth_authorization_server":{"status":"missing","latency_ms":null,"details":{"reason":"no_authorization_server"}},"openid_configuration":{"status":"missing","latency_ms":null,"details":{"reason":"no_authorization_server"}},"initialize":{"status":"ok","latency_ms":33.4,"details":{"url":"https://ccapi.ai/mcp","payload":{"jsonrpc":"2.0","id":1,"result":{"capabilities":{"logging":{},"tools":{"listChanged":true}},"instructions":"CCAPI gives you access to image, video, music and text models through one API key.\n\nKey facts:\n- Every tool call consumes the account's balance. Prefer one good call over exploratory retries.\n- Call list_models first if you are unsure which model names are available; model availability\n  depends on the key's group and changes over time. Do not guess model names.\n- Image and text tools return results directly.\n- Video and music tools are asynchronous: they return a task_id and a platform, then you poll\n  get_task with that exact pair until status is \"completed\" or \"failed\" (the other states are\n  \"queued\" and \"in_progress\"). Generation typically takes 30-180 seconds for video and 30-120\n  seconds for music. Pass wait_seconds to have the server poll for you instead of looping yourself.\n- Result URLs are hosted by the upstream provider and may expire. Download anything worth keeping.","protocolVersion":"2025-03-26","serverInfo":{"name":"ccapi","title":"CCAPI","description":"Image, video, music and text generation through the CCAPI gateway.","version":"20260928-e2735ad","websiteUrl":"https://ccapi.ai"}}},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=31536000; includeSubDomains"}}},"protocol_version_probe":{"status":"warning","latency_ms":null,"details":{"claimed_version":"2025-03-26","validator_protocol_version":"2025-03-26","latest_known_version":"2025-11-25","releases_behind":2,"lag_days":244}},"tools_list":{"status":"ok","latency_ms":25.86,"details":{"url":"https://ccapi.ai/mcp","payload":{"jsonrpc":"2.0","id":2,"result":{"ttlMs":0,"cacheScope":"public","tools":[{"annotations":{"idempotentHint":false,"readOnlyHint":true},"description":"Send a conversation to any text model available through CCAPI (Claude, GPT, Gemini, DeepSeek, GLM, MiniMax, Kimi, Qwen…) and get the reply. Useful for consulting a second model for a different perspective, running a cheap model over bulk work, or reaching a model the current client does not have configured. Responses are non-streaming.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Exact model name, e.g. claude-sonnet-5 or deepseek-v4-pro. Call list_models with category 'text' if unsure."},"messages":{"type":["null","array"],"items":{"type":"object","properties":{"role":{"type":"string","description":"Message author: system, user or assistant."},"content":{"type":"string","description":"Message text."}},"required":["role","content"],"additionalProperties":false},"description":"Conversation so far, oldest first. Must contain at least one message."},"max_tokens":{"type":["null","integer"],"description":"Maximum tokens to generate. Omit for the model default."},"temperature":{"type":["null","number"],"description":"Sampling temperature, typically 0-2. Omit for the model default."},"top_p":{"type":["null","number"],"description":"Nucleus sampling probability mass, 0-1. Omit for the model default."},"stop":{"type":["null","array"],"items":{"type":"string"},"description":"Up to 4 sequences that stop generation."}},"required":["model","messages"],"additionalProperties":false},"name":"chat_completion","outputSchema":{"type":"object","properties":{"content":{"type":"string","description":"The model's reply text."},"model":{"type":"string","description":"Model that actually served the request."},"finish_reason":{"type":"string","description":"Why generation stopped, e.g. stop or length."},"usage":{"type":"object","properties":{"prompt_tokens":{"type":"integer","description":"Tokens consumed by the prompt."},"completion_tokens":{"type":"integer","description":"Tokens generated."},"total_tokens":{"type":"integer","description":"Prompt plus completion tokens."}},"description":"Token accounting for this call.","required":["prompt_tokens","completion_tokens","total_tokens"],"additionalProperties":false}},"required":["content","model","usage"],"additionalProperties":false},"title":"Call a text model"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Edit existing images according to an instruction, using the dedicated image edit endpoint. Provide at least one source image. For pure text-to-image, or for models that take references through the generation endpoint, use generate_image instead.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Exact model name, e.g. gpt-image-2 or nano-banana-pro. Call list_models with category 'image' if unsure."},"prompt":{"type":"string","description":"Description of the image to generate."},"images":{"type":["null","array"],"items":{"type":"string"},"description":"Optional reference images as HTTPS URLs or data URLs, for image-to-image generation. Not all models accept references."},"size":{"type":"string","description":"Output size, e.g. 1024x1024, 1536x1024, or 'auto'. Model-dependent; omit for the model default."},"n":{"type":["null","integer"],"description":"How many images to generate. Defaults to 1. Each one is billed."},"quality":{"type":"string","description":"Quality hint, e.g. low, medium, high or auto. Model-dependent."},"response_format":{"type":"string","description":"'url' (default) returns links; 'b64_json' returns base64 data, which is far larger and usually unnecessary."},"aspect_ratio":{"type":"string","description":"Z-Image only: required output aspect ratio. Supported values: 1:1, 4:3, 3:4, 16:9, 9:16."},"nsfw_checker":{"type":["null","boolean"],"description":"Z-Image only: enable or disable the upstream NSFW checker. Explicit false is preserved."},"async":{"type":"boolean","description":"Submit asynchronously and return a task_id instead of waiting. Use when the client times out on slow models; poll with get_task using platform 'image'."},"wait_seconds":{"type":["null","integer"],"description":"Only with async: poll server-side for up to this many seconds (max 240) and return the finished image if it completes in time."}},"required":["model","prompt"],"additionalProperties":false},"name":"edit_image","outputSchema":{"type":"object","properties":{"images":{"type":["null","array"],"items":{"type":"object","properties":{"url":{"type":"string","description":"Link to the generated image. May expire; download anything worth keeping."},"b64_json":{"type":"string","description":"Base64 image data, when response_format was b64_json."},"revised_prompt":{"type":"string","description":"The prompt the model actually used, when it rewrote the input."}},"additionalProperties":false},"description":"Generated images, when the call completed."},"model":{"type":"string","description":"Model that served the request."},"task_id":{"type":"string","description":"Task identifier, when submitted asynchronously and still running."},"platform":{"type":"string","description":"Pass this to get_task together with task_id."},"status":{"type":"string","description":"One of: completed, queued, in_progress, failed."},"note":{"type":"string","description":"What to do next."}},"required":["model","status"],"additionalProperties":false},"title":"Edit an image"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Continue an existing song from a given timestamp, producing a longer version. Requires the clip_id of a previously generated song, which appears in the 'raw' payload of a completed generate_music task. Asynchronous — poll with get_task.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"ID of the song to extend, taken from the 'raw' clip list of a completed generate_music task."},"continue_at":{"type":"number","description":"Timestamp in seconds within the original song to continue from."},"prompt":{"type":"string","description":"Lyrics for the extended section."},"title":{"type":"string","description":"New title for the extended song."},"tags":{"type":"string","description":"Style tags for the extension."},"provider":{"type":"string","description":"Music backend: 'suno' (default) or 'producer'."},"wait_seconds":{"type":["null","integer"],"description":"Poll server-side for up to this many seconds (max 240)."}},"required":["clip_id","continue_at"],"additionalProperties":false},"name":"extend_music","outputSchema":{"type":"object","properties":{"task_id":{"type":"string","description":"Pass this to get_task together with platform to check progress."},"platform":{"type":"string","description":"'suno' or 'producer'. Pass to get_task."},"status":{"type":"string","description":"One of: queued, in_progress, completed, failed."},"audio_urls":{"type":["null","array"],"items":{"type":"string"},"description":"Finished audio URLs, when the task completed within wait_seconds."},"note":{"type":"string","description":"What to do next."},"raw":{"description":"Full result payload when completed — clip IDs, lyrics text and per-clip metadata. Clip IDs from here are what extend_music takes."}},"required":["task_id","platform","status","note"],"additionalProperties":false},"title":"Extend a song"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Generate an image from a text prompt, optionally guided by reference images (image-to-image). Returns image URLs directly. Most models finish in 10-60 seconds; if your client times out, set async=true to get a task_id you can poll instead. This call costs money — do not retry speculatively.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Exact model name, e.g. gpt-image-2 or nano-banana-pro. Call list_models with category 'image' if unsure."},"prompt":{"type":"string","description":"Description of the image to generate."},"images":{"type":["null","array"],"items":{"type":"string"},"description":"Optional reference images as HTTPS URLs or data URLs, for image-to-image generation. Not all models accept references."},"size":{"type":"string","description":"Output size, e.g. 1024x1024, 1536x1024, or 'auto'. Model-dependent; omit for the model default."},"n":{"type":["null","integer"],"description":"How many images to generate. Defaults to 1. Each one is billed."},"quality":{"type":"string","description":"Quality hint, e.g. low, medium, high or auto. Model-dependent."},"response_format":{"type":"string","description":"'url' (default) returns links; 'b64_json' returns base64 data, which is far larger and usually unnecessary."},"aspect_ratio":{"type":"string","description":"Z-Image only: required output aspect ratio. Supported values: 1:1, 4:3, 3:4, 16:9, 9:16."},"nsfw_checker":{"type":["null","boolean"],"description":"Z-Image only: enable or disable the upstream NSFW checker. Explicit false is preserved."},"async":{"type":"boolean","description":"Submit asynchronously and return a task_id instead of waiting. Use when the client times out on slow models; poll with get_task using platform 'image'."},"wait_seconds":{"type":["null","integer"],"description":"Only with async: poll server-side for up to this many seconds (max 240) and return the finished image if it completes in time."}},"required":["model","prompt"],"additionalProperties":false},"name":"generate_image","outputSchema":{"type":"object","properties":{"images":{"type":["null","array"],"items":{"type":"object","properties":{"url":{"type":"string","description":"Link to the generated image. May expire; download anything worth keeping."},"b64_json":{"type":"string","description":"Base64 image data, when response_format was b64_json."},"revised_prompt":{"type":"string","description":"The prompt the model actually used, when it rewrote the input."}},"additionalProperties":false},"description":"Generated images, when the call completed."},"model":{"type":"string","description":"Model that served the request."},"task_id":{"type":"string","description":"Task identifier, when submitted asynchronously and still running."},"platform":{"type":"string","description":"Pass this to get_task together with task_id."},"status":{"type":"string","description":"One of: completed, queued, in_progress, failed."},"note":{"type":"string","description":"What to do next."}},"required":["model","status"],"additionalProperties":false},"title":"Generate an image"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Write song lyrics from a description, without generating audio. Useful as a first step before generate_music with custom=true, so the user can approve the words before paying for audio. Asynchronous — poll with get_task.","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","description":"Description of the lyrics to write, e.g. 'a love song about meeting someone at a coffee shop'."},"lyrics_model":{"type":"string","description":"Lyrics model: classic or remi."},"provider":{"type":"string","description":"Music backend: 'suno' (default) or 'producer'."},"wait_seconds":{"type":["null","integer"],"description":"Poll server-side for up to this many seconds (max 240). Lyrics usually finish in under 30 seconds."}},"required":["prompt"],"additionalProperties":false},"name":"generate_lyrics","outputSchema":{"type":"object","properties":{"task_id":{"type":"string","description":"Pass this to get_task together with platform to check progress."},"platform":{"type":"string","description":"'suno' or 'producer'. Pass to get_task."},"status":{"type":"string","description":"One of: queued, in_progress, completed, failed."},"audio_urls":{"type":["null","array"],"items":{"type":"string"},"description":"Finished audio URLs, when the task completed within wait_seconds."},"note":{"type":"string","description":"What to do next."},"raw":{"description":"Full result payload when completed — clip IDs, lyrics text and per-clip metadata. Clip IDs from here are what extend_music takes."}},"required":["task_id","platform","status","note"],"additionalProperties":false},"title":"Generate lyrics"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Generate a song with vocals or instrumental. Two modes: simple (custom=false) where you describe the song and the model writes the lyrics, or custom (custom=true) where you supply lyrics, title and style tags. Asynchronous — returns a task_id you poll with get_task; generation usually takes 30-120 seconds and normally yields two variations.","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","description":"In simple mode (custom=false) a description of the song, e.g. 'a dreamy lo-fi track about late-night trains'. In custom mode (custom=true) the actual lyrics, with section markers like [Verse] and [Chorus]."},"custom":{"type":"boolean","description":"false (default) lets the model write the lyrics from your description; true means prompt contains lyrics you wrote and you should also set title and tags."},"title":{"type":"string","description":"Song title. Used in custom mode."},"tags":{"type":"string","description":"Comma-separated style tags, e.g. 'pop, upbeat, guitar'. Max 200 characters."},"negative_tags":{"type":"string","description":"Styles to avoid, e.g. 'heavy metal, rap'."},"instrumental":{"type":"boolean","description":"Generate without vocals."},"model":{"type":"string","description":"Suno model version, e.g. chirp-v5 or chirp-v4-5-plus. Omit for the platform default."},"provider":{"type":"string","description":"Music backend: 'suno' (default) or 'producer'."},"wait_seconds":{"type":["null","integer"],"description":"Poll server-side for up to this many seconds (max 240) and return finished audio if it completes in time. Omit to return a task_id immediately."}},"required":["prompt"],"additionalProperties":false},"name":"generate_music","outputSchema":{"type":"object","properties":{"task_id":{"type":"string","description":"Pass this to get_task together with platform to check progress."},"platform":{"type":"string","description":"'suno' or 'producer'. Pass to get_task."},"status":{"type":"string","description":"One of: queued, in_progress, completed, failed."},"audio_urls":{"type":["null","array"],"items":{"type":"string"},"description":"Finished audio URLs, when the task completed within wait_seconds."},"note":{"type":"string","description":"What to do next."},"raw":{"description":"Full result payload when completed — clip IDs, lyrics text and per-clip metadata. Clip IDs from here are what extend_music takes."}},"required":["task_id","platform","status","note"],"additionalProperties":false},"title":"Generate a song"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Generate a video from a text prompt, optionally driven by reference images (image-to-video, first/last frame). This is asynchronous: it returns a task_id you poll with get_task(platform='video'). Generation usually takes 30-180 seconds. Pass wait_seconds to have the server poll for you. Video generation is the most expensive capability here — confirm the prompt with the user before spending on retries.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"Exact model name, e.g. doubao-seedance-2-0-260128, veo-3.1-quality or viduq3-pro. Call list_models with category 'video' if unsure."},"prompt":{"type":"string","description":"Description of the video to generate."},"images":{"type":["null","array"],"items":{"type":"string"},"description":"Optional reference image URLs. A single image is used as the first frame; use image_roles to control multiple."},"videos":{"type":["null","array"],"items":{"type":"string"},"description":"Optional Seedance reference video URLs or asset:// URIs returned by the trusted asset catalog."},"audios":{"type":["null","array"],"items":{"type":"string"},"description":"Optional Seedance reference audio URLs or asset:// URIs returned by the trusted asset catalog. Reference audio cannot be used alone."},"duration":{"type":["null","integer"],"description":"Clip length in seconds. Model-dependent, typically 4-15; an unsupported value is rejected with a message naming the supported ones. Omit for the model default."},"resolution":{"type":"string","description":"Output resolution: 480p, 720p (widest compatibility) or 1080p. Model-dependent."},"ratio":{"type":"string","description":"Aspect ratio, e.g. 16:9, 9:16, 1:1, 21:9 or adaptive. Which values a model accepts varies; an unsupported one is rejected with a message naming the valid ones."},"generate_audio":{"type":["null","boolean"],"description":"Generate a synchronised soundtrack. Only some models support this."},"image_roles":{"type":["null","array"],"items":{"type":"string"},"description":"Role of each entry in images, positionally: first_frame, last_frame or reference_image."},"wait_seconds":{"type":["null","integer"],"description":"Poll server-side for up to this many seconds (max 240) and return the finished video if it completes in time. Omit to return a task_id immediately."}},"required":["model","prompt"],"additionalProperties":false},"name":"generate_video","outputSchema":{"type":"object","properties":{"task_id":{"type":"string","description":"Pass this to get_task together with platform to check progress."},"platform":{"type":"string","description":"Always 'video'. Pass to get_task."},"status":{"type":"string","description":"One of: queued, in_progress, completed, failed."},"model":{"type":"string","description":"Model that accepted the request."},"video_urls":{"type":["null","array"],"items":{"type":"string"},"description":"Finished video URLs, when the task completed within wait_seconds."},"note":{"type":"string","description":"What to do next."}},"required":["task_id","platform","status","model","note"],"additionalProperties":false},"title":"Generate a video"},{"annotations":{"idempotentHint":false,"readOnlyHint":true},"description":"Report the remaining and used balance for this CCAPI key. Useful before starting an expensive batch of generations, or to explain a quota failure to the user.","inputSchema":{"type":"object","additionalProperties":false},"name":"get_balance","outputSchema":{"type":"object","properties":{"unlimited":{"type":"boolean","description":"True when this token has no spending cap, in which case the amount fields are not meaningful."},"remaining_amount":{"type":"number","description":"Remaining balance, in the account's display currency. Omitted when unlimited."},"used_amount":{"type":"number","description":"Balance consumed to date, in the same unit."},"total_amount":{"type":"number","description":"Remaining plus used. Omitted when unlimited."},"currency":{"type":"string","description":"Unit of the amounts above, e.g. USD."},"note":{"type":"string","description":"Guidance when the balance is low, unlimited, or scoped to a token."}},"required":["unlimited","used_amount","currency"],"additionalProperties":false},"title":"Get account balance"},{"annotations":{"idempotentHint":false,"readOnlyHint":true},"description":"Check the status of an asynchronous generation task submitted by generate_video, generate_music, generate_lyrics, extend_music, or generate_image with async=true. Pass the platform and task_id exactly as they were returned. Status is one of queued, in_progress, completed or failed; poll every few seconds until it settles, or pass wait_seconds to have the server wait for you.","inputSchema":{"type":"object","properties":{"platform":{"type":"string","description":"Platform the task belongs to, exactly as returned by the submit tool: image, video, suno or producer."},"task_id":{"type":"string","description":"Task identifier returned by the submit tool."},"wait_seconds":{"type":["null","integer"],"description":"Poll server-side for up to this many seconds (max 240) and return once the task finishes. Omit for a single immediate status check."}},"required":["platform","task_id"],"additionalProperties":false},"name":"get_task","outputSchema":{"type":"object","properties":{"task_id":{"type":"string","description":"The task this status refers to."},"platform":{"type":"string","description":"Platform the task belongs to."},"status":{"type":"string","description":"One of: queued, in_progress, completed, failed, unknown."},"progress":{"type":"string","description":"Progress indication, when the backend reports one."},"result_urls":{"type":["null","array"],"items":{"type":"string"},"description":"Finished asset URLs. May expire; download anything worth keeping."},"fail_reason":{"type":"string","description":"Why the task failed, when status is failed."},"note":{"type":"string","description":"What to do next."},"raw":{"description":"Backend payload, for details this summary does not cover (lyrics text, per-clip metadata, seeds)."}},"required":["task_id","platform","status"],"additionalProperties":false},"title":"Check an async task"},{"annotations":{"idempotentHint":false,"readOnlyHint":true},"description":"List the AI models this CCAPI key can actually call, with their capability category and the MCP tool that drives them. Call this before generating anything if you are unsure a model name is valid — availability depends on the key's group and changes over time. Never guess model names.","inputSchema":{"type":"object","properties":{"category":{"type":"string","description":"Filter by capability. One of: text, image, video, music, embedding, other. Omit to list every model this key can use."},"search":{"type":"string","description":"Case-insensitive substring match on the model name, e.g. 'claude' or 'seedance'."}},"additionalProperties":false},"name":"list_models","outputSchema":{"type":"object","properties":{"models":{"type":["null","array"],"items":{"type":"object","properties":{"name":{"type":"string","description":"The exact model name to pass to other tools."},"category":{"type":"string","description":"Capability category: text, image, video, music, embedding or other."},"description":{"type":"string","description":"Human-readable description, when the platform publishes one."},"vendor":{"type":"string","description":"Upstream vendor, e.g. Anthropic, Google, Suno."},"groups":{"type":["null","array"],"items":{"type":"string"},"description":"Token groups that can reach this model."},"endpoints":{"type":["null","array"],"items":{"type":"string"},"description":"API endpoint families this model supports."},"tool":{"type":"string","description":"Which MCP tool to call for this model. Absent means no MCP tool drives it — reach it through the REST API instead."}},"required":["name","category"],"additionalProperties":false},"description":"Models available to the calling key."},"total":{"type":"integer","description":"Number of models returned."},"note":{"type":"string","description":"Guidance about the result set."}},"required":["models","total"],"additionalProperties":false},"title":"List available models"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Increase the resolution of an existing image 2x with ccapi-upscale-v1. Input must be between 256x256 and 1024x1024 and under 5 MB; for larger inputs, regenerate with a high-resolution model instead.","inputSchema":{"type":"object","properties":{"image":{"type":"string","description":"The image to upscale, as an HTTPS URL, data URL, or raw base64. Width and height must each be 256-1024 px and the file at most 5 MB."},"model_quality":{"type":"string","description":"Upscale quality hint: HQ, MQ (default) or LQ."},"response_format":{"type":"string","description":"'url' (default) or 'b64_json'."}},"required":["image"],"additionalProperties":false},"name":"upscale_image","outputSchema":{"type":"object","properties":{"images":{"type":["null","array"],"items":{"type":"object","properties":{"url":{"type":"string","description":"Link to the generated image. May expire; download anything worth keeping."},"b64_json":{"type":"string","description":"Base64 image data, when response_format was b64_json."},"revised_prompt":{"type":"string","description":"The prompt the model actually used, when it rewrote the input."}},"additionalProperties":false},"description":"Generated images, when the call completed."},"model":{"type":"string","description":"Model that served the request."},"task_id":{"type":"string","description":"Task identifier, when submitted asynchronously and still running."},"platform":{"type":"string","description":"Pass this to get_task together with task_id."},"status":{"type":"string","description":"One of: completed, queued, in_progress, failed."},"note":{"type":"string","description":"What to do next."}},"required":["model","status"],"additionalProperties":false},"title":"Upscale an image"}]}},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=31536000; includeSubDomains"}}},"prompts_list":{"status":"auth_required","latency_ms":9.03,"details":{"url":"https://ccapi.ai/mcp","error":"Client error '401 Unauthorized' for url 'https://ccapi.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains"},"reason":"auth_required"}},"prompt_get":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"resources_list":{"status":"auth_required","latency_ms":31.22,"details":{"url":"https://ccapi.ai/mcp","error":"Client error '401 Unauthorized' for url 'https://ccapi.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains"},"reason":"auth_required"}},"resource_read":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"determinism_probe":{"status":"ok","latency_ms":38.79,"details":{"attempts":2,"successful":2,"matches":2,"stable_ratio":1.0,"baseline_signature":"889cf02ec0921130c78e21f2d84bc594ae856ca85544b401dffac9ba813caf19","errors":[]}},"instruction_tool_reference_probe":{"status":"warning","latency_ms":null,"details":{"referenced_tools":["consumes","list_models","looping","one","over"],"missing_tools":["consumes","looping","one","over"],"observed_tool_count":11}},"session_resume_probe":{"status":"warning","latency_ms":null,"details":{"reason":"no_session_id","transport":"streamable-http","resume_expected":true,"protocol_version":"2025-03-26"}},"step_up_auth_probe":{"status":"warning","latency_ms":null,"details":{"oauth_present":false,"auth_required_checks":["prompts_list","resources_list"],"supported_scopes":[],"scope_specificity_ratio":0.0,"broad_scopes":[],"challenge_headers":[],"step_up_signals":[],"minimal_scope_documented":false}},"transport_compliance_probe":{"status":"warning","latency_ms":10.84,"details":{"transport":"streamable-http","session_id_present":false,"protocol_header_present":false,"last_event_id_visible":false,"requested_protocol_version":"2025-03-26","bad_protocol_status_code":400,"bad_protocol_payload":{},"bad_protocol_headers":{"content-type":"text/plain; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains"},"bad_protocol_error":null,"delete_status_code":null,"delete_error":null,"expired_session_status_code":null,"expired_session_error":null,"issues":["missing_session_id","missing_protocol_header"]}},"utility_coverage_probe":{"status":"ok","latency_ms":9.4,"details":{"completions":{"advertised":false,"sample_target":null,"live_probe":"not_executed"},"pagination":{"supported":false,"next_cursor_methods":[],"metadata_signal":false},"tasks":{"advertised":false,"probe_status":"auth_required","http_status":401},"initialize_capability_keys":["logging","tools"]}},"advanced_capabilities_probe":{"status":"warning","latency_ms":null,"details":{"capabilities":{"prompts":true,"resources":true,"completions":false,"roots":false,"sampling":false,"elicitation":false,"structured_outputs":true,"resource_links":false},"enabled_count":3,"enabled":["prompts","resources","structured_outputs"],"initialize_capability_keys":["logging","tools"]}},"tool_snapshot_probe":{"status":"ok","latency_ms":null,"details":{"current_tool_count":11,"previous_tool_count":11,"similarity":1.0,"added":[],"removed":[],"changed_outputs":[]}},"connector_replay_probe":{"status":"ok","latency_ms":null,"details":{"backward_compatible":true,"would_break_after_refresh":false,"added_tools":[],"removed_tools":[],"required_arg_breaks":[],"output_breaks":[],"additive_output_changes":[]}},"request_association_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_request_association_capabilities_advertised"}},"interactive_flow_probe":{"status":"missing","latency_ms":null,"details":{"risk_hits":[],"safe_hits":[],"oauth_supported":false,"prompt_available":false}},"action_safety_probe":{"status":"error","latency_ms":null,"details":{"summary":{"tool_count":11,"high_risk_tools":3,"destructive_tools":0,"exec_tools":0,"egress_tools":7,"secret_tools":0,"bulk_access_tools":3,"declared_non_read_only_tools":7,"annotation_conflict_tools":0,"risk_distribution":{"low":4,"medium":4,"high":3,"critical":0},"capability_distribution":{"read":4,"write":4,"network":7,"export":3},"has_mutating_capability":true,"has_non_read_capability":true},"auth_present":false,"safeguard_count":1,"confirmation_signals":["generate_lyrics","generate_video"],"reason":null}},"official_registry_probe":{"status":"missing","latency_ms":null,"details":{"registry_source":"github_topic_registry","direct_match":false,"official_peer_count":0}},"provenance_divergence_probe":{"status":"not_assessed","latency_ms":null,"details":{"direct_official_match":false,"registry_title":null,"server_card_title":null,"registry_version":null,"server_card_version":null,"registry_homepage":null,"server_card_homepage":null,"registry_repository":null,"server_card_repository":null,"drift_fields":[],"metadata_document_count":1,"compared_fields":["title","version","homepage","repository"],"readable_sources":[],"comparable_field_count":0}},"schema_divergence_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_server_card_tools","compared_tool_count":0,"compared_dimensions":["server_name","server_version","declared_vs_observed_auth","tool_membership","parameter_names","required_parameters","parameter_types","output_schema_presence"],"server_name_mismatch":false,"card_server_name":null,"live_server_name":"ccapi","server_version_mismatch":false,"card_server_version":null,"live_server_version":"20260928-e2735ad","auth_scheme_mismatch":false}},"connector_publishability_probe":{"status":"warning","latency_ms":null,"details":{"transport":"streamable-http","tool_count":11,"high_risk_tools":3,"blockers":["protocol_version","session_resume","step_up_auth","transport_compliance","request_association","action_safety","server_card"],"criteria":{"remote_transport":true,"initialize":true,"tools_list":true,"protocol_version":false,"session_resume":false,"step_up_auth":false,"transport_compliance":false,"connector_replay":true,"request_association":false,"action_safety":false,"server_card":false,"tool_surface":true,"auth_flow":true}}}}},"active_alerts":[{"code":"instruction_tool_reference_mismatch","severity":"low","title":"Server instructions name unavailable tools","message":"Initialize instructions reference tools not present in tools/list: consumes, looping, one, over","addressee":"publisher"}],"maintainer_analytics":{},"public_server_reputation":{},"maintainer_response_quality":{},"maintainer_annotations":[],"maintainer_rebuttals":[],"security_posture_summary":{},"tool_security_inventory":[],"transport_compliance":{},"utility_coverage":{},"write_action_governance":{},"provenance_divergence":{},"alias_consolidation":{},"alert_routing":{},"authenticated_validation":{},"hosted_runtime":{},"action_controls_diff":null,"benchmark_tasks":[],"latest_capability_counts":{},"point_loss_breakdown":[],"verdict_traces":{},"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_4b599b8571ede4ab","generated_at":"2026-09-29T15:50:01.015514+00:00","trust_evaluated_at":"2026-09-29T15:50:01.015514+00:00","evidence_revision":"9c6b388adad54dd6ccae8791","source":"current_snapshot","server":"github-orristech/ccapi-mcp","last_validated_at":"2026-09-29T09:44:30.691477+00:00","validation_age_hours":6.09,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-09-29T09:44:30.691477+00:00","age_hours":6.09,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":60.42,"raw_score":60.42,"confidence_score":100.0,"confidence_weighted_score":60.4,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"healthy","current_score":60.42,"display_score":60.42,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"no blocking gaps found in current evidence","next_action":"export policy, require approval for writes, add authenticated validation","reason_count":1},"production_readiness_class":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use."},"evidence_confidence":{"score":100.0,"label":"high","validation_age_hours":6.09,"live_check_count":14,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":14,"validation_age_hours":6.09,"freshness_threshold_hours":24}},"active_alerts":[{"code":"instruction_tool_reference_mismatch","severity":"low","title":"Server instructions name unavailable tools"}],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":1,"high_or_critical":0,"total":1},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-29T15:50:01.015514+00:00"}},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_4b599b8571ede4ab","generated_at":"2026-09-29T15:50:01.015514+00:00","trust_evaluated_at":"2026-09-29T15:50:01.015514+00:00","evidence_revision":"9c6b388adad54dd6ccae8791","source":"current_snapshot","server":"github-orristech/ccapi-mcp","last_validated_at":"2026-09-29T09:44:30.691477+00:00","validation_age_hours":6.09,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-09-29T09:44:30.691477+00:00","age_hours":6.09,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":60.42,"raw_score":60.42,"confidence_score":100.0,"confidence_weighted_score":60.4,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"healthy","current_score":60.42,"display_score":60.42,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"no blocking gaps found in current evidence","next_action":"export policy, require approval for writes, add authenticated validation","reason_count":1},"production_readiness_class":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use."},"evidence_confidence":{"score":100.0,"label":"high","validation_age_hours":6.09,"live_check_count":14,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":14,"validation_age_hours":6.09,"freshness_threshold_hours":24}},"active_alerts":[{"code":"instruction_tool_reference_mismatch","severity":"low","title":"Server instructions name unavailable tools"}],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":1,"high_or_critical":0,"total":1},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-29T15:50:01.015514+00:00"}},"agent_commerce":{},"latest_claim":null,"maintainer_profile_slug":null,"watch_summary":{},"partial":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"trust_evaluated_at":"2026-09-29T15:50:01.015514+00:00","evidence_revision":"9c6b388adad54dd6ccae8791","active_alert_summary":{"critical":0,"high":0,"medium":0,"low":1,"high_or_critical":0,"total":1},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-29T15:50:01.015514+00:00"},"owner_opted_out":false,"observed_attention":{"schema":"verify.observed_attention.v1","window_days":30,"level":"none","label":"No observed attention","summary":"No recent machine-readable trust or discovery activity observed for this server.","segments":{"useful_ai_user":{"level":"none","observed":false,"description":"AI-assisted user sessions such as ChatGPT/User or Claude/User."},"machine_trust_evaluator":{"level":"none","observed":false,"description":"Synthetic sessions inspecting multiple trust surfaces such as report, policy, ledger, badge, trust-summary, or compare."},"possible_agent_or_script":{"level":"none","observed":false,"description":"Structured direct sessions with rapid profile, compare, report, policy, badge, or trust-surface fan-out."},"isolated_machine_surface":{"level":"none","observed":false,"description":"Aged-out direct synthetic singleton sessions that touched a machine-readable trust surface without becoming a broader evaluator."},"ai_crawler":{"level":"none","observed":false,"description":"Known AI crawler activity such as ClaudeBot, GPTBot, or similar crawlers."},"search_crawler":{"level":"none","observed":false,"description":"Search and SEO crawler activity."},"browser_like_automation":{"level":"none","observed":false,"description":"Browser-like synthetic sessions with rapid structured endpoint activity."},"confirmed_human":{"level":"none","observed":false,"description":"Confirmed browser-session human activity."}},"surfaces_observed":{"server_profile":false,"compare":false,"compare_json":false,"compare_api":false,"report_json":false,"policy":false,"ledger":false,"badge_metadata":false,"badge_svg":false,"trust_summary":false,"mcp_tool":false},"claim_prompt":{"recommended":false,"reason":"No claim prompt is recommended from observed attention in the current window."},"notes":["Observed attention is based on segmented first-party telemetry.","Crawler and evaluator activity is not treated as confirmed human demand.","Public levels are bucketed to avoid exposing raw traffic counts."]},"owner_activation":{"claim_recommended":false,"reason":"no_observed_attention"},"snapshot_id":"trustsnap_4b599b8571ede4ab"}],"rows":[{"label":"Snapshot ID","values":["trustsnap_4b599b8571ede4ab"]},{"label":"Status","values":["healthy"]},{"label":"Score","values":[60.42]},{"label":"Production readiness","values":["Safe for evaluation"]},{"label":"Production trust decision","values":["Allow with approval"]},{"label":"Recommended policy","values":["Block"]},{"label":"Observed Attention","values":["No observed attention"]},{"label":"Evidence confidence","values":[100.0]},{"label":"Freshness","values":["n/a"]},{"label":"Latency","values":["n/a"]},{"label":"Spec recency","values":[2.0]},{"label":"Session resume","values":[3.0]},{"label":"Step-up auth","values":[2.0]},{"label":"Transport compliance","values":[2.0]},{"label":"Utility coverage","values":[1.0]},{"label":"Publishability","values":[1.0]},{"label":"Connector replay","values":[4.0]},{"label":"Request association","values":[0.0]},{"label":"Action safety","values":[1.0]},{"label":"Registry presence","values":[2.0]},{"label":"Provenance divergence","values":[null]},{"label":"Client compatibility: ChatGPT","values":["unknown"]},{"label":"Client compatibility: Claude","values":["unknown"]},{"label":"Write-action publishing","values":["unknown"]},{"label":"Snapshot churn risk","values":["unknown"]},{"label":"Transport","values":["streamable-http"]},{"label":"Auth","values":["Unauthenticated / none"]},{"label":"Tools","values":[11]},{"label":"Prompts","values":[0]},{"label":"Resources","values":[0]},{"label":"OAuth","values":[false]},{"label":"DCR","values":[false]},{"label":"Taxonomy","values":[""]},{"label":"Recommended for","values":["none"]},{"label":"Top alerts","values":["Server instructions name unavailable tools"]}],"partial":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"cache_note":"Compact compare fallback response; deep compare evidence is deferred to protect web capacity.","trust_evaluated_at":"2026-09-29T15:50:01.015514+00:00","materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-29T15:50:01.057442+00:00"}}