{"name":"blog-openapi-agent","description":"Publishing, read, comment, and reaction API for the a2a cloud blog. Published content and comments are public; publishing requires the blog API key; comment and reaction writes require an a2a Cloud browser session.","version":"0.1.0","skills":[{"id":"auto","name":"auto","description":"Use the OpenAPI service to complete a natural-language goal.","tags":["openapi","auto"],"scopes":[],"stream":false,"policy":{"timeout_seconds":900.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"goal":{"type":"string"}},"required":["goal"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"get_blog_health","name":"get_blog_health","description":"GET /api/healthz - Check blog service health","tags":["Health"],"scopes":[],"stream":false,"policy":{"timeout_seconds":60.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{},"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"list_blog_posts","name":"list_blog_posts","description":"GET /api/posts - List posts","tags":["Posts"],"scopes":[],"stream":false,"policy":{"timeout_seconds":60.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"status":{"type":"string","enum":["published","draft","all"],"default":"published","description":"Use `published` or omit the parameter for public published posts. `all` and `draft` require authentication."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"create_blog_post","name":"create_blog_post","description":"POST /api/posts - Create a blog post","tags":["Posts"],"scopes":[],"stream":false,"policy":{"timeout_seconds":120.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"body":{"type":"object","required":["title","content"],"properties":{"slug":{"type":"string","maxLength":120,"description":"Optional on create. The path slug is used for upserts. Slugs are normalized to lowercase kebab-case.","example":"shipping-agents-with-receipts"},"title":{"type":"string","minLength":1,"maxLength":180,"example":"Shipping agents with receipts"},"excerpt":{"type":"string","maxLength":420,"default":"","example":"Why agent infrastructure needs identity, authority, and proof."},"content":{"type":"string","minLength":1,"maxLength":120000,"example":"# Shipping agents with receipts\n\nAgents need durable runtime boundaries."},"author":{"type":"string","maxLength":120,"default":"a2a cloud"},"status":{"type":"string","enum":["draft","published"],"default":"published"},"tags":{"type":"array","maxItems":12,"items":{"type":"string"},"default":[]},"cover_image_url":{"type":"string","format":"uri","maxLength":500},"published_at":{"type":"string","format":"date-time","description":"Defaults to the current time for published posts and null for drafts."}},"description":"JSON request body."}},"required":["body"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"get_blog_post","name":"get_blog_post","description":"GET /api/posts/{slug} - Get a post by slug","tags":["Posts"],"scopes":[],"stream":false,"policy":{"timeout_seconds":60.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"example":"shipping-agents-with-receipts","description":"Post slug. The API normalizes path slugs to lowercase kebab-case before lookup."},"preview":{"type":"string","enum":["1"],"description":"Set to `1` to bypass the public published-post filter. Requires authentication."}},"required":["slug"],"additionalProperties":false}},"required":["parameters"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"upsert_blog_post","name":"upsert_blog_post","description":"PUT /api/posts/{slug} - Upsert a post by slug","tags":["Posts"],"scopes":[],"stream":false,"policy":{"timeout_seconds":120.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"example":"shipping-agents-with-receipts","description":"Post slug. The API normalizes path slugs to lowercase kebab-case before lookup."}},"required":["slug"],"additionalProperties":false},"body":{"type":"object","required":["title","content"],"properties":{"slug":{"type":"string","maxLength":120,"description":"Optional on create. The path slug is used for upserts. Slugs are normalized to lowercase kebab-case.","example":"shipping-agents-with-receipts"},"title":{"type":"string","minLength":1,"maxLength":180,"example":"Shipping agents with receipts"},"excerpt":{"type":"string","maxLength":420,"default":"","example":"Why agent infrastructure needs identity, authority, and proof."},"content":{"type":"string","minLength":1,"maxLength":120000,"example":"# Shipping agents with receipts\n\nAgents need durable runtime boundaries."},"author":{"type":"string","maxLength":120,"default":"a2a cloud"},"status":{"type":"string","enum":["draft","published"],"default":"published"},"tags":{"type":"array","maxItems":12,"items":{"type":"string"},"default":[]},"cover_image_url":{"type":"string","format":"uri","maxLength":500},"published_at":{"type":"string","format":"date-time","description":"Defaults to the current time for published posts and null for drafts."}},"description":"JSON request body."}},"required":["parameters","body"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"delete_blog_post","name":"delete_blog_post","description":"DELETE /api/posts/{slug} - Delete a post by slug","tags":["Posts"],"scopes":[],"stream":false,"policy":{"timeout_seconds":120.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"example":"shipping-agents-with-receipts","description":"Post slug. The API normalizes path slugs to lowercase kebab-case before lookup."}},"required":["slug"],"additionalProperties":false}},"required":["parameters"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"list_blog_post_comments","name":"list_blog_post_comments","description":"GET /api/posts/{slug}/comments - List comments for a post","tags":["Comments"],"scopes":[],"stream":false,"policy":{"timeout_seconds":60.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"example":"shipping-agents-with-receipts","description":"Post slug. The API normalizes path slugs to lowercase kebab-case before lookup."}},"required":["slug"],"additionalProperties":false}},"required":["parameters"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"create_blog_post_comment","name":"create_blog_post_comment","description":"POST /api/posts/{slug}/comments - Create a comment","tags":["Comments"],"scopes":[],"stream":false,"policy":{"timeout_seconds":120.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"example":"shipping-agents-with-receipts","description":"Post slug. The API normalizes path slugs to lowercase kebab-case before lookup."}},"required":["slug"],"additionalProperties":false},"body":{"type":"object","required":["body"],"properties":{"body":{"type":"string","minLength":2,"maxLength":4000,"example":"This cleared up the deployment flow."}},"description":"JSON request body."}},"required":["parameters","body"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"get_blog_post_reactions","name":"get_blog_post_reactions","description":"GET /api/posts/{slug}/reaction - Get post reaction counts","tags":["Reactions"],"scopes":[],"stream":false,"policy":{"timeout_seconds":60.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"example":"shipping-agents-with-receipts","description":"Post slug. The API normalizes path slugs to lowercase kebab-case before lookup."}},"required":["slug"],"additionalProperties":false}},"required":["parameters"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}},{"id":"set_blog_post_reaction","name":"set_blog_post_reaction","description":"PUT /api/posts/{slug}/reaction - Set the viewer reaction","tags":["Reactions"],"scopes":[],"stream":false,"policy":{"timeout_seconds":120.0,"idempotent":false,"max_retries":0,"cost_class":null,"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":{"parameters":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":120,"example":"shipping-agents-with-receipts","description":"Post slug. The API normalizes path slugs to lowercase kebab-case before lookup."}},"required":["slug"],"additionalProperties":false},"body":{"type":"object","required":["reaction"],"properties":{"reaction":{"oneOf":[{"type":"string","enum":["like","dislike"]},{"type":"null"}],"description":"Set to null to clear the viewer's reaction."}},"description":"JSON request body."}},"required":["parameters","body"],"additionalProperties":false},"output_schema":{"additionalProperties":true,"type":"object"}}],"capabilities":{"openapi_auto_agent":{"operation_count":10,"default_base_url":"https://blog.a2acloud.io","source_openapi_url":"https://blog.a2acloud.io/openapi.json","source_openapi_urls":["https://blog.a2acloud.io/openapi.json"],"server_urls":["https://blog.a2acloud.io"],"regenerable":true,"security_schemes":["a2aSession","apiKeyAuth","bearerAuth"]},"a2a_pack":{"package":"a2a-pack","version":"0.1.105"},"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."}}},"input_modes":["application/json"],"output_modes":["application/json"],"required_secrets":[],"required_env":[],"consumer_setup":{"fields":[{"name":"OPENAPI_BASE_URL","kind":"config","label":"API base URL","description":"Override the default API server (https://blog.a2acloud.io).","required":false,"input_type":"url","options":[]},{"name":"BLOG_API_KEY","kind":"secret","label":"bearerAuth bearer credential","description":"Use `Authorization: Bearer $BLOG_API_KEY`. Use the configured `BLOG_API_KEY` value. Used by: create_blog_post, delete_blog_post, get_blog_post (+2 more).","required":false,"input_type":"password","options":[]},{"name":"A2A_SESSION","kind":"secret","label":"a2aSession API key","description":"Shared a2a Cloud browser session cookie. Used by: create_blog_post_comment, get_blog_post_reactions, set_blog_post_reaction.","required":false,"input_type":"password","options":[]}]},"runtime":{"lifecycle":"ephemeral","availability":"on_demand","state":"none","sandbox":"microsandbox","resources":{"cpu":"200m","memory":"512Mi","gpu":0,"max_runtime_seconds":600},"concurrency":1,"egress":{"allow_hosts":["blog.a2acloud.io"],"allow_internal_services":[],"deny_internet_by_default":true},"tools_used":["openapi","deepagents"],"llm_provisioning":"platform","pricing":{"price_per_call_usd":0.0,"caller_pays_llm":true,"notes":"Uses the caller's saved LLM credential through ctx.llm."},"wants_cp_jwt":false,"platform_resources":{"memory":null,"databases":[]},"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."}}}