{"authentication":{"description":"Optional Authorization: Bearer \u003c32-128 char client_token\u003e. When supplied, task and any provisioned databases are bound to the token (only callers presenting it can poll/use). Equivalent: X-Client-Token header or metadata.client_token in body.","required":false,"schemes":["Bearer"]},"capabilities":{"async":true,"pushNotifications":false,"stateTransitionHistory":true,"streaming":false,"taskPolling":true},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"defaultSkill":"workflow","description":"PostgreSQL agent that plans and executes multi-step database workflows from a single natural-language request. Just send text — the agent decides which steps to run internally (provision, schema design, sample data, stored procedures, migrations, ORM codegen, data Q\u0026A). No skill selection required. Direct skill access also available for deterministic/programmatic use. A2A v0.2 JSON-RPC: POST /a2a tasks/send → 202 + Task object, tasks/get for result. Legacy flat shape: POST /a2a/tasks/send {id,message} also accepted.","documentationUrl":"https://dbaas.dev/integrations/a2a","endpoints":{"jsonrpc":"POST /a2a","jsonrpcGet":"POST /a2a method=\"tasks/get\"","poll":"GET /a2a/tasks/{task_id}","submit":"POST /a2a/tasks/send"},"interfaces":[{"contentType":"application/json","errorCodes":{"-32001":"Task not found","-32600":"Invalid Request","-32601":"Method not found","-32602":"Invalid params","-32603":"Internal error","-32700":"Parse error"},"methods":["tasks/send","tasks/get"],"type":"json-rpc","unsupportedMethods":["tasks/cancel","tasks/sendSubscribe"],"url":"https://api.dbaas.dev/a2a"},{"body":"flat: {id, message{role, parts[], metadata}}","contentType":"application/json","poll":"GET /a2a/tasks/{task_id}","type":"rest-legacy","url":"https://api.dbaas.dev/a2a/tasks/send"}],"limits":{"concurrentDatabasesPerIP":2,"databaseTTLMinutes":{"default":60,"extendCapMinutes":90,"max":60,"min":1},"maxSQLLengthBytes":32768,"maxTextLengthBytes":4096,"pollsPerMinute":120,"submitsPerTenMinutes":5},"name":"dbaas.dev","primaryInterface":"natural-language","protocol":"a2a","protocolVersion":"0.2","provider":{"organization":"dbaas.dev","url":"https://dbaas.dev"},"skills":[{"category":"workflow","description":"DEFAULT INTERFACE — send any database goal as plain text. The agent plans and executes all required steps internally: provision, schema design, sample data, stored procedures, schema migrations, ORM codegen, data Q\u0026A. No skill selection or sequencing needed from the caller. Single submit → poll → full result. Optional: pass metadata.database_id to operate on an existing DB instead of provisioning a new one — workflow will introspect its current schema and plan migrations/queries accordingly.","examples":["create a blog database with users, posts, and comments — seed 10 rows and generate TypeScript types","set up an e-commerce DB, add sample products and orders, then tell me the average order value","create a credit scoring schema, add a stored procedure that calculates scores, and export the data","build a SaaS analytics DB, migrate the schema to add a status column, then generate Prisma models","(with database_id=...) add a deleted_at column to users and an index on email","(with database_id=...) tell me the top 5 customers by order value"],"id":"workflow","inputSchema":{"properties":{"database_id":{"description":"Optional: existing ephemeral database ID. When provided, the workflow skips provisioning and runs all steps against this database. Caller must have ownership (matching client_token or originating IP).","type":"string"},"text":{"description":"Free-form natural language database request — primary input.","type":"string"}},"type":"object"},"name":"Natural Language Workflow","primary":true,"tags":["workflow","ai","agent","natural-language","default"]},{"category":"direct-access","description":"Spin up an ephemeral Postgres 18 database with a TTL of 1–60 minutes. Result contains connection_string.","examples":["provision a postgres database for 60 minutes","give me a throwaway test database"],"id":"provision-postgres","inputSchema":{"properties":{"ttl_minutes":{"default":60,"maximum":60,"minimum":1,"type":"integer"}},"type":"object"},"name":"Provision Ephemeral PostgreSQL","tags":["database","postgres","ephemeral","provision"]},{"category":"direct-access","description":"Returns current status, remaining TTL, and connection_string of an ephemeral database.","id":"get-status","inputSchema":{"properties":{"database_id":{"type":"string"}},"required":["database_id"],"type":"object"},"name":"Get Database Status","tags":["lifecycle","status"]},{"category":"direct-access","description":"Lists all active ephemeral databases owned by the caller (token-bound or IP-bound).","id":"list-my-dbs","inputSchema":{"type":"object"},"name":"List My Databases","tags":["lifecycle","discovery"]},{"category":"direct-access","description":"Bumps the expiration of an ephemeral DB by N minutes. Total lifetime cap is configurable (default 90 minutes).","id":"extend-ttl","inputSchema":{"properties":{"additional_minutes":{"default":5,"maximum":10,"minimum":1,"type":"integer"},"database_id":{"type":"string"}},"required":["database_id"],"type":"object"},"name":"Extend Database TTL","tags":["lifecycle","ttl"]},{"category":"direct-access","description":"Tears down an ephemeral database immediately. Frees the per-IP slot.","id":"delete-db","inputSchema":{"properties":{"database_id":{"type":"string"}},"required":["database_id"],"type":"object"},"name":"Delete Database","tags":["lifecycle","cleanup"]},{"category":"direct-access","description":"Execute SQL directly on an ephemeral database. COPY and dangerous system functions are blocked.","id":"exec-sql","inputSchema":{"properties":{"database_id":{"type":"string"},"sql":{"type":"string"}},"required":["database_id","sql"],"type":"object"},"name":"Execute SQL","tags":["sql","query","direct"]},{"category":"direct-access","description":"NL → SQL. Set execute=true to run it and include rows in the response.","examples":["find the top 5 users by total order value in the last 30 days"],"id":"generate-query","inputSchema":{"properties":{"database_id":{"type":"string"},"execute":{"default":false,"type":"boolean"},"request":{"type":"string"}},"required":["database_id","request"],"type":"object"},"name":"Generate SQL from Description","tags":["sql","ai","codegen"]},{"category":"direct-access","description":"NL question → SELECT → execute (read-only) → plain-English answer with rows.","examples":["what is the average order value per customer?","how many users signed up this week?"],"id":"chat-with-data","inputSchema":{"properties":{"database_id":{"type":"string"},"question":{"type":"string"}},"required":["database_id","question"],"type":"object"},"name":"Chat With Data","tags":["sql","ai","analytics"]},{"category":"direct-access","description":"Returns full schema: tables, columns, types, indexes, foreign keys — readable text and structured JSON.","id":"describe-schema","inputSchema":{"properties":{"database_id":{"type":"string"}},"required":["database_id"],"type":"object"},"name":"Describe Schema","tags":["schema","introspect","metadata"]},{"category":"direct-access","description":"Generate and apply a complete PostgreSQL schema (tables, indexes, FKs) from a natural language description.","examples":["create a schema for an e-commerce platform with users, products, and orders"],"id":"create-schema","inputSchema":{"properties":{"database_id":{"type":"string"},"description":{"type":"string"}},"required":["database_id","description"],"type":"object"},"name":"Create Schema from Description","tags":["schema","ddl","ai"]},{"category":"direct-access","description":"Generate and apply incremental DDL (ALTER/ADD/DROP) from a natural-language change request.","examples":["add a status column to orders with values pending, paid, shipped"],"id":"migrate-schema","inputSchema":{"properties":{"database_id":{"type":"string"},"description":{"type":"string"}},"required":["database_id","description"],"type":"object"},"name":"Apply Schema Migration","tags":["schema","migration","ddl","ai"]},{"category":"direct-access","description":"DROPs every table in the public schema (CASCADE). Destructive — requires confirm=true.","id":"reset-schema","inputSchema":{"properties":{"confirm":{"description":"Must be true to drop tables.","type":"boolean"},"database_id":{"type":"string"}},"required":["database_id","confirm"],"type":"object"},"name":"Reset Schema (Drop All)","tags":["schema","destructive"]},{"category":"direct-access","description":"Generate and insert realistic sample data. Auto-introspects tables, respects FK order.","id":"load-sample-data","inputSchema":{"properties":{"database_id":{"type":"string"},"description":{"description":"Optional context for data realism.","type":"string"},"rows":{"default":10,"maximum":100,"minimum":1,"type":"integer"}},"required":["database_id"],"type":"object"},"name":"Load Sample Data","tags":["data","seed","ai"]},{"category":"direct-access","description":"Returns rows from one or all tables as JSON. Capped at max_rows_per_table (default 100, max 1000).","id":"export-data","inputSchema":{"properties":{"database_id":{"type":"string"},"max_rows_per_table":{"default":100,"maximum":1000,"minimum":1,"type":"integer"},"table":{"description":"Optional — export only this table.","type":"string"}},"required":["database_id"],"type":"object"},"name":"Export Data","tags":["data","export"]},{"category":"direct-access","description":"Generate and install a PL/pgSQL function from a natural language description. Auto-introspects schema.","examples":["add a stored procedure that calculates a user's total order value"],"id":"add-procedure","inputSchema":{"properties":{"database_id":{"type":"string"},"description":{"type":"string"}},"required":["database_id","description"],"type":"object"},"name":"Add Stored Procedure","tags":["procedure","plpgsql","ai"]},{"category":"direct-access","description":"Schema → typed model code. Supported: typescript, python (Pydantic), sqlalchemy, prisma, go, rust.","examples":["generate TypeScript types for my schema","export Pydantic models for FastAPI"],"id":"generate-orm-models","inputSchema":{"properties":{"database_id":{"type":"string"},"language":{"default":"typescript","enum":["typescript","python","sqlalchemy","prisma","go","rust"],"type":"string"}},"required":["database_id"],"type":"object"},"name":"Generate ORM/Type Models","tags":["codegen","orm","ai"]}],"url":"https://api.dbaas.dev/a2a","version":"2.4.0"}