{"name":"quote-judge-studio-v1","description":"Compare vendor quotes by price, delivery, and warranty; persist the winner per signed-in A2A Cloud user; reopen saved comparisons.","version":"0.1.4","skills":[{"id":"compare_quotes","name":"compare_quotes","description":"Compare two or more vendor quotes, persist the result for this platform user, and return the recommendation.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":30.0,"idempotent":true,"max_retries":0,"cost_class":"deterministic","allow_scope_expansion":false,"grant_mode":null,"grant_allow_patterns":[],"grant_deny_patterns":[],"grant_outputs_prefix":null,"grant_write_prefixes":[],"grant_ttl_seconds":null,"grant_run_timeout_seconds":null,"grant_approval_timeout_seconds":null,"grant_scope_approval_timeout_seconds":null},"input_schema":{"type":"object","properties":{"comparison_id":{"type":"string"},"quotes":{"$defs":{"QuoteInput":{"properties":{"vendor":{"maxLength":120,"minLength":1,"title":"Vendor","type":"string"},"unit_price":{"exclusiveMinimum":0,"maximum":1000000,"title":"Unit Price","type":"number"},"quantity":{"exclusiveMinimum":0,"maximum":10000000,"title":"Quantity","type":"integer"},"delivery_days":{"exclusiveMinimum":0,"maximum":3650,"title":"Delivery Days","type":"integer"},"warranty_months":{"maximum":600,"minimum":0,"title":"Warranty Months","type":"integer"}},"required":["vendor","unit_price","quantity","delivery_days","warranty_months"],"title":"QuoteInput","type":"object"}},"items":{"$ref":"#/$defs/QuoteInput"},"type":"array"},"weights":{"properties":{"price":{"maximum":100,"minimum":0,"title":"Price","type":"number"},"delivery":{"maximum":100,"minimum":0,"title":"Delivery","type":"number"},"warranty":{"maximum":100,"minimum":0,"title":"Warranty","type":"number"}},"required":["price","delivery","warranty"],"title":"QuoteWeights","type":"object"}},"required":["comparison_id","quotes","weights"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"get_comparison","name":"get_comparison","description":"Reload a saved quote comparison for the current signed-in platform user.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":20.0,"idempotent":true,"max_retries":0,"cost_class":"deterministic","allow_scope_expansion":false,"grant_mode":null,"grant_allow_patterns":[],"grant_deny_patterns":[],"grant_outputs_prefix":null,"grant_write_prefixes":[],"grant_ttl_seconds":null,"grant_run_timeout_seconds":null,"grant_approval_timeout_seconds":null,"grant_scope_approval_timeout_seconds":null},"input_schema":{"type":"object","properties":{"comparison_id":{"type":"string"}},"required":["comparison_id"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"compare_quotes_file","name":"compare_quotes_file","description":"Compare quotes from an external client FileUpload (CSV, JSON, or plain text) and persist the result.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":30.0,"idempotent":true,"max_retries":0,"cost_class":"deterministic","allow_scope_expansion":false,"grant_mode":null,"grant_allow_patterns":[],"grant_deny_patterns":[],"grant_outputs_prefix":null,"grant_write_prefixes":[],"grant_ttl_seconds":null,"grant_run_timeout_seconds":null,"grant_approval_timeout_seconds":null,"grant_scope_approval_timeout_seconds":null},"input_schema":{"type":"object","properties":{"comparison_id":{"type":"string"},"weights":{"properties":{"price":{"maximum":100,"minimum":0,"title":"Price","type":"number"},"delivery":{"maximum":100,"minimum":0,"title":"Delivery","type":"number"},"warranty":{"maximum":100,"minimum":0,"title":"Warranty","type":"number"}},"required":["price","delivery","warranty"],"title":"QuoteWeights","type":"object"},"document":{"additionalProperties":false,"description":"Workspace-backed file staged for a skill invocation.\n\nAgent API multipart uploads are persisted into the caller workspace before\nthe skill runs. The handler receives this metadata object and reads bytes\nthrough ``ctx.workspace`` using ``path``.","properties":{"path":{"title":"Path","type":"string"},"filename":{"title":"Filename","type":"string"},"media_type":{"title":"Media Type","type":"string"},"size_bytes":{"default":0,"minimum":0,"title":"Size Bytes","type":"integer"}},"required":["path","filename","media_type"],"title":"UploadedFile","type":"object","x-a2a-file-upload":{"required_upload":true,"accept":["text/csv","text/plain","application/json"],"max_bytes":64000,"description":"CSV/JSON/text quote file with vendor, unit_price, quantity, delivery_days, warranty_months."}}},"required":["comparison_id","weights","document"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"compare_quotes_upload","name":"compare_quotes_upload","description":"Browser JSON bridge: accept one bounded base64 quote file, parse it, compare quotes, and persist the result.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":30.0,"idempotent":true,"max_retries":0,"cost_class":"deterministic","allow_scope_expansion":false,"grant_mode":null,"grant_allow_patterns":[],"grant_deny_patterns":[],"grant_outputs_prefix":null,"grant_write_prefixes":[],"grant_ttl_seconds":null,"grant_run_timeout_seconds":null,"grant_approval_timeout_seconds":null,"grant_scope_approval_timeout_seconds":null},"input_schema":{"type":"object","properties":{"comparison_id":{"type":"string"},"upload":{"properties":{"filename":{"maxLength":160,"minLength":1,"title":"Filename","type":"string"},"media_type":{"maxLength":120,"minLength":1,"title":"Media Type","type":"string"},"data_base64":{"maxLength":128000,"minLength":1,"title":"Data Base64","type":"string"}},"required":["filename","media_type","data_base64"],"title":"BrowserQuoteDocument","type":"object"},"weights":{"properties":{"price":{"maximum":100,"minimum":0,"title":"Price","type":"number"},"delivery":{"maximum":100,"minimum":0,"title":"Delivery","type":"number"},"warranty":{"maximum":100,"minimum":0,"title":"Warranty","type":"number"}},"required":["price","delivery","warranty"],"title":"QuoteWeights","type":"object"}},"required":["comparison_id","upload","weights"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"compare_quotes_browser_upload","name":"compare_quotes_browser_upload","description":"Browser JSON bridge: accept bounded base64 quote files, parse them, compare quotes, and persist the result.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":30.0,"idempotent":true,"max_retries":0,"cost_class":"deterministic","allow_scope_expansion":false,"grant_mode":null,"grant_allow_patterns":[],"grant_deny_patterns":[],"grant_outputs_prefix":null,"grant_write_prefixes":[],"grant_ttl_seconds":null,"grant_run_timeout_seconds":null,"grant_approval_timeout_seconds":null,"grant_scope_approval_timeout_seconds":null},"input_schema":{"type":"object","properties":{"comparison_id":{"type":"string"},"weights":{"properties":{"price":{"maximum":100,"minimum":0,"title":"Price","type":"number"},"delivery":{"maximum":100,"minimum":0,"title":"Delivery","type":"number"},"warranty":{"maximum":100,"minimum":0,"title":"Warranty","type":"number"}},"required":["price","delivery","warranty"],"title":"QuoteWeights","type":"object"},"documents":{"$defs":{"BrowserQuoteDocument":{"properties":{"filename":{"maxLength":160,"minLength":1,"title":"Filename","type":"string"},"media_type":{"maxLength":120,"minLength":1,"title":"Media Type","type":"string"},"data_base64":{"maxLength":128000,"minLength":1,"title":"Data Base64","type":"string"}},"required":["filename","media_type","data_base64"],"title":"BrowserQuoteDocument","type":"object"}},"items":{"$ref":"#/$defs/BrowserQuoteDocument"},"type":"array"}},"required":["comparison_id","weights","documents"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}}],"capabilities":{"a2a_pack":{"package":"a2a-pack","version":"0.1.115"},"mcp":{"standard":{"path":"/mcp","intended_for":"code_sdk_clients"},"connector":{"path":"/connector-mcp","intended_for":["chatgpt","claude","hosted_connectors"],"supports_async_jobs":true,"supports_structured_interrupts":true,"poll_tool":"job_result","resume_tool":"submit_interaction","instructions":"Use this URL for hosted connector UIs. Use /mcp for normal code or SDK MCP clients."}},"ui":{"url":"https://quote-judge-studio-v1.a2acloud.io/app","type":"static-spa","framework":null,"entry":"/app/index.html","config":"https://quote-judge-studio-v1.a2acloud.io/app/config.json","client":"https://quote-judge-studio-v1.a2acloud.io/app/a2a-client.js","requiresAuth":false,"auth":{"mode":"inherit","flow":"public","sessionTransport":"cookie","sessionCookieName":"__Host-a2a_agent_session","sessionUrl":"https://quote-judge-studio-v1.a2acloud.io/auth/session","loginUrl":"https://app.a2acloud.io","authorizeUrl":"https://app.a2acloud.io/v1/auth/agent-session/authorize?agent=quote-judge-studio-v1","callbackUrl":"https://quote-judge-studio-v1.a2acloud.io/auth/callback","requiresSession":false}}},"input_modes":["application/json"],"output_modes":["application/json"],"required_secrets":[],"required_env":[],"consumer_setup":{"fields":[]},"runtime":{"lifecycle":"ephemeral","availability":"on_demand","state":"none","sandbox":"microsandbox","resources":{"cpu":"250m","memory":"512Mi","gpu":0,"max_runtime_seconds":600},"concurrency":1,"egress":{"allow_hosts":[],"allow_internal_services":[],"deny_internet_by_default":true},"tools_used":["postgres","managed-postgres","mcp","packed-frontend"],"llm_provisioning":"platform","account_access":{"required":false,"platform_skill_calls":0,"after_trial":"byok"},"pricing":{"price_per_call_usd":0.0,"caller_pays_llm":false,"notes":"Deterministic QuoteJudge comparison; no LLM is called."},"wants_cp_jwt":false,"platform_resources":{"memory":null,"databases":[{"name":"quote-judge-studio-v1-data","engine":"postgres","provider":"neon","scope":"user","branch":"main","access_mode":"read_write","env":{"url":"DATABASE_URL"},"migrations":{"path":"db/migrations"},"scale_to_zero":true}],"mailbox":null},"endpoints":[],"apt_packages":[]},"state_schema":null,"workspace_access":{"enabled":true,"max_files":8,"allowed_modes":["read_only"],"require_reason":false,"deny_patterns":[],"require_human_approval":false,"max_total_size_bytes":192000},"mcp_endpoint":"/mcp","connector_mcp_endpoint":"/connector-mcp","mcp_endpoints":{"standard":{"path":"/mcp","intended_for":"code_sdk_clients"},"connector":{"path":"/connector-mcp","intended_for":["chatgpt","claude","hosted_connectors"],"supports_async_jobs":true,"supports_structured_interrupts":true,"poll_tool":"job_result","resume_tool":"submit_interaction","instructions":"Use this URL for hosted connector UIs. Use /mcp for normal code or SDK MCP clients."}},"ui":{"url":"https://quote-judge-studio-v1.a2acloud.io/app","type":"static-spa","framework":null,"entry":"/app/index.html","config":"https://quote-judge-studio-v1.a2acloud.io/app/config.json","client":"https://quote-judge-studio-v1.a2acloud.io/app/a2a-client.js","requiresAuth":false,"auth":{"mode":"inherit","flow":"public","sessionTransport":"cookie","sessionCookieName":"__Host-a2a_agent_session","sessionUrl":"https://quote-judge-studio-v1.a2acloud.io/auth/session","loginUrl":"https://app.a2acloud.io","authorizeUrl":"https://app.a2acloud.io/v1/auth/agent-session/authorize?agent=quote-judge-studio-v1","callbackUrl":"https://quote-judge-studio-v1.a2acloud.io/auth/callback","requiresSession":false}}}