{"name":"csv-answers-studio-v1","description":"CSVAnswers: upload or paste a bounded CSV, ask which row has the highest numeric value, persist the grounded answer in user-scoped managed Postgres, and reopen it from a polished one-page app.","version":"0.1.2","skills":[{"id":"analyze_csv","name":"analyze_csv","description":"Analyze bounded pasted CSV text, answer the highest numeric row question, save the result, and persist a receipt.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":30.0,"idempotent":false,"max_retries":0,"cost_class":"cheap","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":{"analysis_id":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","type":"string"},"csv_text":{"maxLength":65536,"minLength":1,"type":"string"},"question":{"maxLength":500,"minLength":1,"type":"string"}},"required":["analysis_id","csv_text","question"],"additionalProperties":false},"output_schema":{"properties":{"ok":{"title":"Ok","type":"boolean"},"analysis_id":{"title":"Analysis Id","type":"string"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Answer"},"row_count":{"default":0,"title":"Row Count","type":"integer"},"column_count":{"default":0,"title":"Column Count","type":"integer"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Question"},"source_rows":{"items":{"additionalProperties":true,"type":"object"},"title":"Source Rows","type":"array"},"chart_data":{"items":{"additionalProperties":true,"type":"object"},"title":"Chart Data","type":"array"},"numeric_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Numeric Column"},"row_label_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Row Label Column"},"saved":{"default":false,"title":"Saved","type":"boolean"},"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Receipt Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Message"},"warnings":{"items":{"type":"string"},"title":"Warnings","type":"array"}},"required":["ok","analysis_id"],"title":"CsvAnalysisResult","type":"object"}},{"id":"analyze_csv_upload_base64","name":"analyze_csv_upload_base64","description":"Analyze a bounded browser CSV upload encoded as base64 JSON, then save the result and receipt.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":30.0,"idempotent":false,"max_retries":0,"cost_class":"cheap","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":{"analysis_id":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","type":"string"},"upload":{"properties":{"filename":{"maxLength":180,"minLength":1,"title":"Filename","type":"string"},"media_type":{"maxLength":120,"minLength":1,"title":"Media Type","type":"string"},"data_base64":{"maxLength":87397,"minLength":1,"title":"Data Base64","type":"string"}},"required":["filename","media_type","data_base64"],"title":"BrowserCsvUpload","type":"object"},"question":{"maxLength":500,"minLength":1,"type":"string"}},"required":["analysis_id","upload","question"],"additionalProperties":false},"output_schema":{"properties":{"ok":{"title":"Ok","type":"boolean"},"analysis_id":{"title":"Analysis Id","type":"string"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Answer"},"row_count":{"default":0,"title":"Row Count","type":"integer"},"column_count":{"default":0,"title":"Column Count","type":"integer"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Question"},"source_rows":{"items":{"additionalProperties":true,"type":"object"},"title":"Source Rows","type":"array"},"chart_data":{"items":{"additionalProperties":true,"type":"object"},"title":"Chart Data","type":"array"},"numeric_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Numeric Column"},"row_label_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Row Label Column"},"saved":{"default":false,"title":"Saved","type":"boolean"},"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Receipt Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Message"},"warnings":{"items":{"type":"string"},"title":"Warnings","type":"array"}},"required":["ok","analysis_id"],"title":"CsvAnalysisResult","type":"object"}},{"id":"analyze_csv_file","name":"analyze_csv_file","description":"Analyze a typed external FileUpload CSV, then save the result and receipt.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":30.0,"idempotent":false,"max_retries":0,"cost_class":"cheap","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":{"analysis_id":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","type":"string"},"file":{"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/vnd.ms-excel"],"max_bytes":65536,"description":"Bounded CSV file for CSVAnswers analysis."}},"question":{"maxLength":500,"minLength":1,"type":"string"}},"required":["analysis_id","file","question"],"additionalProperties":false},"output_schema":{"properties":{"ok":{"title":"Ok","type":"boolean"},"analysis_id":{"title":"Analysis Id","type":"string"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Answer"},"row_count":{"default":0,"title":"Row Count","type":"integer"},"column_count":{"default":0,"title":"Column Count","type":"integer"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Question"},"source_rows":{"items":{"additionalProperties":true,"type":"object"},"title":"Source Rows","type":"array"},"chart_data":{"items":{"additionalProperties":true,"type":"object"},"title":"Chart Data","type":"array"},"numeric_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Numeric Column"},"row_label_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Row Label Column"},"saved":{"default":false,"title":"Saved","type":"boolean"},"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Receipt Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Message"},"warnings":{"items":{"type":"string"},"title":"Warnings","type":"array"}},"required":["ok","analysis_id"],"title":"CsvAnalysisResult","type":"object"}},{"id":"get_analysis","name":"get_analysis","description":"Reopen a saved user-scoped CSV analysis by id.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":15.0,"idempotent":true,"max_retries":0,"cost_class":"cheap","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":{"analysis_id":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$","type":"string"}},"required":["analysis_id"],"additionalProperties":false},"output_schema":{"properties":{"ok":{"title":"Ok","type":"boolean"},"analysis_id":{"title":"Analysis Id","type":"string"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Answer"},"row_count":{"default":0,"title":"Row Count","type":"integer"},"column_count":{"default":0,"title":"Column Count","type":"integer"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Question"},"source_rows":{"items":{"additionalProperties":true,"type":"object"},"title":"Source Rows","type":"array"},"chart_data":{"items":{"additionalProperties":true,"type":"object"},"title":"Chart Data","type":"array"},"numeric_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Numeric Column"},"row_label_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Row Label Column"},"saved":{"default":false,"title":"Saved","type":"boolean"},"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Receipt Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Message"},"warnings":{"items":{"type":"string"},"title":"Warnings","type":"array"}},"required":["ok","analysis_id"],"title":"CsvAnalysisResult","type":"object"}},{"id":"list_analyses","name":"list_analyses","description":"List recent saved CSV analyses for the signed-in user.","tags":[],"scopes":[],"stream":false,"policy":{"timeout_seconds":15.0,"idempotent":true,"max_retries":0,"cost_class":"cheap","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":{"limit":{"type":"integer"}},"required":[],"additionalProperties":false},"output_schema":{"properties":{"ok":{"title":"Ok","type":"boolean"},"analyses":{"items":{"additionalProperties":true,"type":"object"},"title":"Analyses","type":"array"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Message"}},"required":["ok"],"title":"CsvAnalysisListResult","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://csv-answers-studio-v1.a2acloud.io/app","type":"static-spa","framework":null,"entry":"/app/index.html","config":"https://csv-answers-studio-v1.a2acloud.io/app/config.json","client":"https://csv-answers-studio-v1.a2acloud.io/app/a2a-client.js","requiresAuth":false,"auth":{"mode":"inherit","flow":"public","sessionTransport":"cookie","sessionCookieName":"__Host-a2a_agent_session","sessionUrl":"https://csv-answers-studio-v1.a2acloud.io/auth/session","loginUrl":"https://app.a2acloud.io","authorizeUrl":"https://app.a2acloud.io/v1/auth/agent-session/authorize?agent=csv-answers-studio-v1","callbackUrl":"https://csv-answers-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":"500m","memory":"512Mi","gpu":0,"max_runtime_seconds":120},"concurrency":1,"egress":{"allow_hosts":[],"allow_internal_services":[],"deny_internet_by_default":true},"tools_used":["python-csv","managed-postgres"],"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 CSV parsing and managed Postgres persistence. No LLM credential required."},"wants_cp_jwt":false,"platform_resources":{"memory":null,"databases":[{"name":"csv-answers-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":false,"max_files":0,"allowed_modes":[],"require_reason":true,"deny_patterns":[],"require_human_approval":false,"max_total_size_bytes":104857600},"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://csv-answers-studio-v1.a2acloud.io/app","type":"static-spa","framework":null,"entry":"/app/index.html","config":"https://csv-answers-studio-v1.a2acloud.io/app/config.json","client":"https://csv-answers-studio-v1.a2acloud.io/app/a2a-client.js","requiresAuth":false,"auth":{"mode":"inherit","flow":"public","sessionTransport":"cookie","sessionCookieName":"__Host-a2a_agent_session","sessionUrl":"https://csv-answers-studio-v1.a2acloud.io/auth/session","loginUrl":"https://app.a2acloud.io","authorizeUrl":"https://app.a2acloud.io/v1/auth/agent-session/authorize?agent=csv-answers-studio-v1","callbackUrl":"https://csv-answers-studio-v1.a2acloud.io/auth/callback","requiresSession":false}}}