[{"name":"list_products","title":null,"description":"List the workspace's products, sorted by name. Returns products, each with its deployments to environments that are not archived. Archived products are left out unless archived says otherwise. Needs read access.","area":"Catalog","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/products:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"archived":{"description":"Which products to list: exclude (the default) leaves archived ones out, include adds them, only lists just them.","type":"string","enum":["exclude","include","only"]}},"additionalProperties":false},"outputSchema":null,"example":{"archived":"exclude"},"screen":null,"visibility":["model","app"]},{"name":"get_product","title":null,"description":"Get one product by slug, archived or not. Returns the product with its deployments to environments that are not archived. Needs read access.","area":"Catalog","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/products:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."}},"required":["product"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront"},"screen":null,"visibility":["model","app"]},{"name":"create_product","title":null,"description":"Create a product: a piece of software the workspace tests, such as a website or an API. No other product, archived ones included, may use the slug or name. Returns the new product, which has no deployments yet. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/products:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"slug":{"type":"string","description":"The product's slug: 2 to 48 lowercase letters, numbers or hyphens, such as storefront."},"name":{"type":"string","description":"The product's display name, up to 100 characters, such as Storefront."},"type":{"type":"string","enum":["website","api","cli","mobile_app","desktop_app","agent"],"description":"What kind of software the product is. Website and API products need a base URL in every deployment."},"description":{"description":"What the product is, up to 200 characters.","type":"string"},"repository":{"description":"The source repository as owner/name, such as acme/storefront.","type":"string"}},"required":["slug","name","type"],"additionalProperties":false},"outputSchema":null,"example":{"slug":"storefront","name":"Storefront","type":"website","description":"The Acme web store and its docs.","repository":"acme/storefront"},"screen":null,"visibility":["model","app"]},{"name":"update_product","title":null,"description":"Change a product's slug, name, type, description or repository. Only the fields given change. An archived product cannot change, and a product becomes a website or API product only once each of its deployments has a base URL. Returns the product. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/products:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."},"slug":{"description":"A new slug for the product, such as web-store.","type":"string"},"name":{"type":"string","description":"The product's display name, up to 100 characters, such as Storefront."},"type":{"type":"string","enum":["website","api","cli","mobile_app","desktop_app","agent"],"description":"What kind of software the product is. Website and API products need a base URL in every deployment."},"description":{"description":"What the product is, up to 200 characters. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]},"repository":{"description":"The source repository as owner/name, such as acme/storefront. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["product"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront","description":"The Acme web store and its docs site."},"screen":null,"visibility":["model","app"]},{"name":"archive_product","title":null,"description":"Archive a product. Until it is restored it leaves product lists, cannot change, its deployments cannot be added, changed or removed, and vault pulls for it are refused. Archiving an archived product changes nothing. Returns the product. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":true,"idempotent":true},"route":"POST /agent/v1/products:archive","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."}},"required":["product"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront"},"screen":null,"visibility":["model","app"]},{"name":"restore_product","title":null,"description":"Restore an archived product, so it and its deployments are active again. Restoring a product that is not archived changes nothing. Returns the product. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/products:restore","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."}},"required":["product"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront"},"screen":null,"visibility":["model","app"]},{"name":"list_environments","title":null,"description":"List the workspace's environments, sorted by name. Returns environments, each with the deployments of products that are not archived. Archived environments are left out unless archived says otherwise. Needs read access.","area":"Catalog","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/environments:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"archived":{"description":"Which environments to list: exclude (the default) leaves archived ones out, include adds them, only lists just them.","type":"string","enum":["exclude","include","only"]}},"additionalProperties":false},"outputSchema":null,"example":{"archived":"exclude"},"screen":null,"visibility":["model","app"]},{"name":"get_environment","title":null,"description":"Get one environment by slug, archived or not. Returns the environment with the deployments of products that are not archived. Needs read access.","area":"Catalog","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/environments:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"environment":{"type":"string","description":"The environment's slug, such as staging."}},"required":["environment"],"additionalProperties":false},"outputSchema":null,"example":{"environment":"staging"},"screen":null,"visibility":["model","app"]},{"name":"create_environment","title":null,"description":"Create an environment: a place products run, such as staging or production. Its class says whether it holds real customer data and never changes. No other environment, archived ones included, may use the slug or name. Returns the new environment. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/environments:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"slug":{"type":"string","description":"The environment's slug: 2 to 48 lowercase letters, numbers or hyphens, such as staging."},"name":{"type":"string","description":"The environment's display name, up to 80 characters, such as Staging."},"class":{"type":"string","enum":["production","non-production"],"description":"`production` for real customer data or the live system customers use; `non-production` for fake or disposable data, such as staging. It cannot change later."},"description":{"description":"What the environment is for, up to 200 characters.","type":"string"},"emoji":{"description":"An emoji shown with the name, up to 8 characters, such as 🧪.","type":"string"}},"required":["slug","name","class"],"additionalProperties":false},"outputSchema":null,"example":{"slug":"staging","name":"Staging","class":"non-production","description":"Pre-release builds with test data.","emoji":"🧪"},"screen":null,"visibility":["model","app"]},{"name":"update_environment","title":null,"description":"Change an environment's slug, name, description or emoji. Only the fields given change; the class cannot. An archived environment cannot change. Returns the environment. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/environments:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"environment":{"type":"string","description":"The environment's slug, such as staging."},"slug":{"description":"A new slug for the environment, such as preview.","type":"string"},"name":{"type":"string","description":"The environment's display name, up to 80 characters, such as Staging."},"description":{"description":"What the environment is for, up to 200 characters. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]},"emoji":{"description":"An emoji shown with the name, up to 8 characters, such as 🧪. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["environment"],"additionalProperties":false},"outputSchema":null,"example":{"environment":"staging","description":"Release candidates with test data."},"screen":null,"visibility":["model","app"]},{"name":"archive_environment","title":null,"description":"Archive an environment. Until it is restored it leaves environment lists, cannot change, its deployments cannot be added, changed or removed, and vault pulls for it are refused. Archiving an archived environment changes nothing. Returns the environment. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":true,"idempotent":true},"route":"POST /agent/v1/environments:archive","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"environment":{"type":"string","description":"The environment's slug, such as staging."}},"required":["environment"],"additionalProperties":false},"outputSchema":null,"example":{"environment":"staging"},"screen":null,"visibility":["model","app"]},{"name":"restore_environment","title":null,"description":"Restore an archived environment, so it and its deployments are active again. Restoring an environment that is not archived changes nothing. Returns the environment. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/environments:restore","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"environment":{"type":"string","description":"The environment's slug, such as staging."}},"required":["environment"],"additionalProperties":false},"outputSchema":null,"example":{"environment":"staging"},"screen":null,"visibility":["model","app"]},{"name":"list_deployments","title":null,"description":"List deployments, sorted by product name and then environment name, optionally for one product or one environment. A deployment counts as archived when its product or its environment is. Returns deployments, each with its product, environment, base URL and version. Needs read access.","area":"Catalog","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/deployments:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"description":"Only this product's deployments, such as storefront.","type":"string"},"environment":{"description":"Only deployments to this environment, such as staging.","type":"string"},"archived":{"description":"Which deployments to list: exclude (the default) leaves archived ones out, include adds them, only lists just them.","type":"string","enum":["exclude","include","only"]}},"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront"},"screen":null,"visibility":["model","app"]},{"name":"get_deployment","title":null,"description":"Get one product's deployment to one environment. Returns the deployment with its base URL, version and when the version last changed; not_found when the product is not deployed there. Needs read access.","area":"Catalog","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/deployments:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."},"environment":{"type":"string","description":"The environment's slug, such as staging."}},"required":["product","environment"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront","environment":"production"},"screen":null,"visibility":["model","app"]},{"name":"create_deployment","title":null,"description":"Deploy a product to an environment, with the URL where it answers, its Fixture API if it has one and the version running. Website and API products need a base URL. Refused when the product is already deployed there or either one is archived. Returns the deployment. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/deployments:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."},"environment":{"type":"string","description":"The environment's slug, such as staging."},"baseUrl":{"description":"The http:// or https:// URL where the product answers in this environment, such as https://staging.acme.dev. Website and API products need one.","anyOf":[{"type":"string"},{"type":"null"}]},"fixtureUrl":{"description":"The http:// or https:// URL of the deployment's Fixture API, which test runs call to create and delete test data, such as https://staging.acme.dev/fixtures.","anyOf":[{"type":"string"},{"type":"null"}]},"version":{"description":"The build running in this environment, such as a git SHA or v2.4.1, up to 100 characters.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["product","environment"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront","environment":"staging","baseUrl":"https://staging.acme.dev","fixtureUrl":"https://staging.acme.dev/fixtures","version":"4f2c9e1"},"screen":null,"visibility":["model","app"]},{"name":"update_deployment","title":null,"description":"Change a deployment's base URL, Fixture API URL or version. Only the fields given change. Record the version after each deploy. Refused while the product or environment is archived. Returns the deployment. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/deployments:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."},"environment":{"type":"string","description":"The environment's slug, such as staging."},"baseUrl":{"description":"The http:// or https:// URL where the product answers in this environment, such as https://staging.acme.dev. Website and API products need one. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]},"fixtureUrl":{"description":"The http:// or https:// URL of the deployment's Fixture API, which test runs call to create and delete test data, such as https://staging.acme.dev/fixtures. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]},"version":{"description":"The build running in this environment, such as a git SHA or v2.4.1, up to 100 characters. null clears it.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["product","environment"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront","environment":"production","version":"v2.4.1"},"screen":null,"visibility":["model","app"]},{"name":"remove_deployment","title":null,"description":"Remove a product's deployment to an environment. Vault pulls for the pair are refused from then on; its secret values return if the product is deployed there again. Refused while the product or environment is archived. Returns removed: true with the product and environment slugs. Needs write access.","area":"Catalog","permission":"write","hints":{"readOnly":false,"destructive":true,"idempotent":true},"route":"POST /agent/v1/deployments:remove","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"product":{"type":"string","description":"The product's slug, such as storefront."},"environment":{"type":"string","description":"The environment's slug, such as staging."}},"required":["product","environment"],"additionalProperties":false},"outputSchema":null,"example":{"product":"storefront","environment":"staging"},"screen":null,"visibility":["model","app"]},{"name":"list_teams","title":null,"description":"List the workspace's teams, sorted by name: open teams and the private teams your person is in, or every team for workspace owners and admins. Returns teams, each with its members and whether your person joined it. Archived teams are left out unless archived says otherwise. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/teams:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"archived":{"description":"Which teams to list: exclude (the default) leaves archived ones out, include adds them, only lists just them.","type":"string","enum":["exclude","include","only"]}},"additionalProperties":false},"outputSchema":null,"example":{"archived":"include"},"screen":null,"visibility":["model","app"]},{"name":"get_team","title":null,"description":"Get one team by key, with its members and whether your person joined it. A private team your person is not in reads as not found, unless your person is a workspace owner or admin. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/teams:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"type":"string","description":"A team key, such as WEB."}},"required":["team"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB"},"screen":null,"visibility":["model","app"]},{"name":"create_team","title":null,"description":"Create a team. It copies the workspace's ticket statuses, gets the default views, and your person joins it. Returns the team. Needs write access, and your person must be a workspace owner or admin.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/teams:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"name":{"type":"string","description":"The team's name, up to 80 characters, such as Web."},"key":{"type":"string","description":"2 to 5 capital letters that start the team's ticket IDs, such as WEB."},"visibility":{"description":"`open` (the default) lists the team for everyone and anyone can join; `private` lists it only for its members.","type":"string","enum":["open","private"]}},"required":["name","key"],"additionalProperties":false},"outputSchema":null,"example":{"name":"Web","key":"WEB","visibility":"open"},"screen":null,"visibility":["model","app"]},{"name":"update_team","title":null,"description":"Change a team's name, key or visibility. Only the fields given change. A key changes only while the team has no tickets. Returns the team. Needs write access, and your person must be a workspace owner or admin.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/teams:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"type":"string","description":"A team key, such as WEB."},"name":{"type":"string","description":"The team's name, up to 80 characters, such as Web."},"key":{"description":"A new key of 2 to 5 capital letters, such as SITE.","type":"string"},"visibility":{"type":"string","enum":["open","private"],"description":"`open` teams are listed for everyone in the workspace and anyone can join; `private` teams are listed only for their members."}},"required":["team"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","name":"Web platform"},"screen":null,"visibility":["model","app"]},{"name":"join_team","title":null,"description":"Add your person to an open team. Only workspace owners and admins can join a private team this way. Joining a team your person is in changes nothing. Returns the team. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/teams:join","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"type":"string","description":"A team key, such as WEB."}},"required":["team"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB"},"screen":null,"visibility":["model","app"]},{"name":"add_team_member","title":null,"description":"Add a workspace member to a team. Adding someone already in the team changes nothing. Returns the team with its members. Needs write access, and your person must be in the team or be a workspace owner or admin.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/teams:add-member","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"type":"string","description":"A team key, such as WEB."},"person":{"type":"string","description":"A workspace member's email or user ID, such as maya@acme.dev."}},"required":["team","person"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","person":"maya@acme.dev"},"screen":null,"visibility":["model","app"]},{"name":"remove_team_member","title":null,"description":"Remove a member from a team. Returns the team with its members. Needs write access; your person can always leave, and removing someone else needs your person to be in the team or be a workspace owner or admin.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":true,"idempotent":true},"route":"POST /agent/v1/teams:remove-member","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"type":"string","description":"A team key, such as WEB."},"person":{"type":"string","description":"A workspace member's email or user ID, such as maya@acme.dev."}},"required":["team","person"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","person":"maya@acme.dev"},"screen":null,"visibility":["model","app"]},{"name":"list_ticket_statuses","title":null,"description":"List a team's ticket statuses, or, without a team, the workspace's template that new teams copy. Returns statuses by category and then position, each with whether new tickets get it by default. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/ticket-statuses:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"The team whose statuses to list, such as WEB. Leave it out for the template.","type":"string"}},"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB"},"screen":null,"visibility":["model","app"]},{"name":"list_tags","title":null,"description":"List workspace tags and the tags of the teams your person sees, or, with a team, the tags its tickets can use: workspace tags and the team's own. Returns tags sorted by name, each with its color and team, null for workspace tags. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tags:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"Only the tags this team's tickets can use, such as WEB.","type":"string"}},"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB"},"screen":null,"visibility":["model","app"]},{"name":"list_agents","title":null,"description":"List the agents that can own tickets: registered agents that are not revoked and work for an active workspace member. Returns each agent's ID and name with the person it works for. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/agents:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false},"outputSchema":null,"example":{},"screen":null,"visibility":["model","app"]},{"name":"list_projects","title":null,"description":"List the projects your person can open, in priority order, optionally for one team or one product. Returns projects with their status, lead, target date, teams, products, milestones and ticket counts by status category, without their documents. Archived projects are left out unless archived says otherwise. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/projects:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"Only projects linked to this team, such as WEB.","type":"string"},"product":{"description":"Only projects linked to this product, by slug, such as storefront.","type":"string"},"archived":{"description":"Which projects to list: exclude (the default) leaves archived ones out, include adds them, only lists just them.","type":"string","enum":["exclude","include","only"]}},"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB"},"screen":null,"visibility":["model","app"]},{"name":"get_project","title":null,"description":"Get one project with its teams, products, milestones, ticket counts by status category and Markdown document. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/projects:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."}},"required":["project"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch"},"screen":null,"visibility":["model","app"]},{"name":"create_project","title":null,"description":"Create a project for one or more teams; only those teams' tickets can join it. It goes last in priority order and gets the default views. Returns the project. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/projects:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"name":{"type":"string","description":"The project's name, up to 100 characters, such as Docs launch."},"slug":{"type":"string","description":"The project's slug: 2 to 48 lowercase letters, numbers or hyphens, such as docs-launch."},"teams":{"minItems":1,"type":"array","items":{"type":"string","description":"A team key, such as WEB."},"description":"Keys of the teams whose tickets the project holds, such as WEB."},"summary":{"description":"Up to 200 characters on what the project delivers. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"status":{"description":"Where the project stands. A new project starts planned.","type":"string","enum":["planned","active","paused","completed","canceled"]},"lead":{"description":"The project lead's email or user ID, such as maya@acme.dev. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"targetDate":{"description":"The target date as YYYY-MM-DD, such as 2026-11-30. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"products":{"description":"Slugs of the products the project changes, such as storefront.","type":"array","items":{"type":"string"}},"document":{"description":"The project's Markdown document, up to 200,000 characters. null means none.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","slug","teams"],"additionalProperties":false},"outputSchema":null,"example":{"name":"Docs launch","slug":"docs-launch","teams":["WEB"],"summary":"Ship the public docs site with search.","status":"active","lead":"maya@acme.dev","targetDate":"2026-11-30","products":["storefront"]},"screen":null,"visibility":["model","app"]},{"name":"update_project","title":null,"description":"Change a project. Only the fields given change; teams and products replace the links. A team stays linked while the project holds its tickets. An archived project cannot change. Returns the project. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/projects:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."},"name":{"description":"A new name, up to 100 characters.","type":"string"},"slug":{"description":"A new slug, such as docs-site-launch.","type":"string"},"teams":{"description":"Keys of the teams whose tickets the project holds, such as WEB. Replaces the links.","minItems":1,"type":"array","items":{"type":"string","description":"A team key, such as WEB."}},"summary":{"description":"Up to 200 characters on what the project delivers. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"status":{"description":"Where the project stands. A new project starts planned.","type":"string","enum":["planned","active","paused","completed","canceled"]},"lead":{"description":"The project lead's email or user ID, such as maya@acme.dev. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"targetDate":{"description":"The target date as YYYY-MM-DD, such as 2026-11-30. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"products":{"description":"Slugs of the products the project changes, such as storefront. Replaces the links.","type":"array","items":{"type":"string"}},"document":{"description":"The project's Markdown document, up to 200,000 characters. null means none.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["project"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch","status":"active","targetDate":"2026-12-04"},"screen":null,"visibility":["model","app"]},{"name":"reorder_project","title":null,"description":"Move a project in the workspace's priority order: right before or after another project, or first with after null. Give before or after, not both. Returns the project. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/projects:reorder","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."},"before":{"description":"The project to go right before, such as checkout-v2.","type":"string"},"after":{"description":"The project to go right after, such as checkout-v2, or null to go first.","anyOf":[{"type":"string","description":"A project's slug, such as docs-launch."},{"type":"null"}]}},"required":["project"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch","after":null},"screen":null,"visibility":["model","app"]},{"name":"archive_project","title":null,"description":"Archive a project. Until it is restored it leaves project lists and cannot change; its tickets stay on their teams. Archiving an archived project changes nothing. Returns the project. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":true,"idempotent":true},"route":"POST /agent/v1/projects:archive","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."}},"required":["project"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch"},"screen":null,"visibility":["model","app"]},{"name":"restore_project","title":null,"description":"Restore an archived project so it can change again. Restoring a project that is not archived changes nothing. Returns the project. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/projects:restore","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."}},"required":["project"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch"},"screen":null,"visibility":["model","app"]},{"name":"create_milestone","title":null,"description":"Add a milestone to a project that is not archived. Milestones are numbered in order within their project: M1, M2 and so on. Returns the milestone with its number. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/milestones:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."},"name":{"type":"string","description":"The milestone's name, up to 100 characters, such as Search beta."},"summary":{"description":"Up to 280 characters on what the milestone delivers.","type":"string"}},"required":["project","name"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch","name":"Search beta","summary":"Docs search on staging for the team to try."},"screen":null,"visibility":["model","app"]},{"name":"update_milestone","title":null,"description":"Change a milestone's name or summary. The project must not be archived. Returns the milestone. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/milestones:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."},"milestone":{"type":"string","description":"A milestone's label or number in the project, such as M2."},"name":{"description":"A new name, up to 100 characters.","type":"string"},"summary":{"description":"Up to 280 characters on what the milestone delivers. null means none.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["project","milestone"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch","milestone":"M2","summary":"Docs search on in production for everyone."},"screen":null,"visibility":["model","app"]},{"name":"delete_milestone","title":null,"description":"Delete a milestone. Its tickets stay in the project without a milestone. The project must not be archived. Returns deleted: true with the project and milestone. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":true,"idempotent":true},"route":"POST /agent/v1/milestones:delete","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"A project's slug, such as docs-launch."},"milestone":{"type":"string","description":"A milestone's label or number in the project, such as M2."}},"required":["project","milestone"],"additionalProperties":false},"outputSchema":null,"example":{"project":"docs-launch","milestone":"M2"},"screen":null,"visibility":["model","app"]},{"name":"list_tickets","title":null,"description":"List the tickets your person can read, without their plans, optionally for one team or project, one owner, or some status categories. Returns tickets by status category, status and rank, each with its status, owner, project, milestone and tags. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"Only this team's tickets, such as WEB.","type":"string"},"project":{"description":"Only this project's tickets, such as docs-launch.","type":"string"},"owner":{"description":"`mine` for tickets your person's agents own, or an agent ID from list_agents.","type":"string"},"categories":{"description":"Only tickets whose status is in these categories, such as started.","type":"array","items":{"type":"string","enum":["backlog","unstarted","started","completed","canceled"]}}},"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","owner":"mine","categories":["unstarted","started"]},"screen":null,"visibility":["model","app"]},{"name":"get_ticket","title":null,"description":"Get one ticket with its summary, plan, creator and former IDs. A ticket's old ID still finds it. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"ticket":{"type":"string","description":"A ticket ID, such as WEB-31."}},"required":["ticket"],"additionalProperties":false},"outputSchema":null,"example":{"ticket":"WEB-31"},"screen":null,"visibility":["model","app"]},{"name":"create_ticket","title":null,"description":"Create a ticket on a team, with the next ID. Call get_agent_instructions with kind ticket first and write the summary from its template and guidance. The status, tags and owner you leave out come from those instructions' defaults, and a ticket with no team goes to your default team from read_settings. Returns the ticket. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/tickets:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"The team the ticket goes to, such as WEB. Defaults to your default team.","type":"string"},"title":{"type":"string","description":"A short name for the work, up to 200 characters, such as Add docs search."},"summary":{"description":"Short Markdown on what and why, up to 2,000 characters. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"plan":{"description":"The Markdown plan an agent implements, up to 200,000 characters. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"status":{"description":"A status name of the ticket's team, in any letter case, such as In Progress.","type":"string"},"owner":{"description":"The agent that owns the ticket: an agent ID from list_agents, or me for yourself. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"project":{"description":"The slug of a project linked to the ticket's team, such as docs-launch. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"milestone":{"description":"A milestone of the ticket's project, such as M2. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"description":"Tag names: workspace tags and the team's own tags, such as feature.","type":"array","items":{"type":"string"}}},"required":["title"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","title":"Add docs search","summary":"## Problem\nReaders cannot search the docs.\n\n## Outcome\nA search box on every docs page finds headings and code samples.","project":"docs-launch","tags":["feature"]},"screen":null,"visibility":["model","app"]},{"name":"update_ticket","title":null,"description":"Change a ticket. Only the fields given change; null clears a field, and tags replace the ticket's tags. A new project clears the milestone unless one is given. Returns the ticket. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"ticket":{"type":"string","description":"A ticket ID, such as WEB-31."},"title":{"description":"A new title, up to 200 characters.","type":"string"},"summary":{"description":"Short Markdown on what and why, up to 2,000 characters. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"plan":{"description":"The Markdown plan an agent implements, up to 200,000 characters. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"status":{"description":"A status name of the ticket's team, in any letter case, such as In Progress.","type":"string"},"owner":{"description":"The agent that owns the ticket: an agent ID from list_agents, or me for yourself. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"project":{"description":"The slug of a project linked to the ticket's team, such as docs-launch. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"milestone":{"description":"A milestone of the ticket's project, such as M2. null means none.","anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"description":"Tag names: workspace tags and the team's own tags, such as feature.","type":"array","items":{"type":"string"}}},"required":["ticket"],"additionalProperties":false},"outputSchema":null,"example":{"ticket":"WEB-31","status":"In Progress","owner":"me"},"screen":null,"visibility":["model","app"]},{"name":"move_ticket","title":null,"description":"Move a ticket to another team. It takes that team's next ID, and its old ID still finds it. It gets the new team's status of the same name or category, loses the old team's tags, and leaves its project unless the new team is linked to it. Returns the ticket. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:move","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"ticket":{"type":"string","description":"A ticket ID, such as WEB-31."},"team":{"type":"string","description":"The team to move the ticket to, such as DOCS."}},"required":["ticket","team"],"additionalProperties":false},"outputSchema":null,"example":{"ticket":"WEB-31","team":"DOCS"},"screen":null,"visibility":["model","app"]},{"name":"reorder_ticket","title":null,"description":"Move a ticket right before or after another in the one workspace-wide order that every view ordered by hand follows. Give before or after, not both. Returns the ticket. Needs write access.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:reorder","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"ticket":{"type":"string","description":"A ticket ID, such as WEB-31."},"before":{"description":"The ticket to go right before, such as WEB-30.","type":"string"},"after":{"description":"The ticket to go right after, such as WEB-30.","type":"string"}},"required":["ticket"],"additionalProperties":false},"outputSchema":null,"example":{"ticket":"WEB-31","before":"WEB-30"},"screen":null,"visibility":["model","app"]},{"name":"list_views","title":null,"description":"List a team's or a project's saved views, the default view first. Give team or project. Returns each view's filters, grouping, order and layout. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/views:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"The team the view belongs to, such as WEB. Give team or project, not both.","type":"string"},"project":{"description":"The project the view belongs to, such as docs-launch. Give team or project, not both.","type":"string"}},"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB"},"screen":null,"visibility":["model","app"]},{"name":"get_view","title":null,"description":"Get a view with its tickets in its order, such as a team's Active view. Without a view, the default view. Give team or project. Returns the view's settings, its tickets, and the statuses a status grouping shows as columns. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/views:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"The team the view belongs to, such as WEB. Give team or project, not both.","type":"string"},"project":{"description":"The project the view belongs to, such as docs-launch. Give team or project, not both.","type":"string"},"view":{"description":"A view's slug, such as active. Leave it out for the default view.","type":"string"}},"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","view":"active"},"screen":null,"visibility":["model","app"]},{"name":"create_view","title":null,"description":"Save a view for a team or project: filters, grouping, order and layout. Give team or project. A new view groups by status, follows the order people set and shows a list unless told otherwise. Returns the view with its slug. Needs write access, and your person must be in the view's team or one of its project's teams, or be a workspace owner or admin.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/views:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"The team the view belongs to, such as WEB. Give team or project, not both.","type":"string"},"project":{"description":"The project the view belongs to, such as docs-launch. Give team or project, not both.","type":"string"},"name":{"type":"string","description":"The view's name, up to 60 characters, such as Docs search."},"filters":{"type":"object","properties":{"statuses":{"description":"Status names, such as In Progress.","type":"array","items":{"type":"string"}},"categories":{"description":"Status categories, such as started.","type":"array","items":{"type":"string","enum":["backlog","unstarted","started","completed","canceled"]}},"tags":{"description":"Tag names, such as feature.","type":"array","items":{"type":"string"}},"owners":{"description":"Agent IDs from list_agents, or none for tickets without an owner.","type":"array","items":{"type":"string"}},"projects":{"description":"Project slugs such as docs-launch, or none for tickets without a project. Team views only.","type":"array","items":{"type":"string"}},"milestones":{"description":"Milestone labels such as M1, or none for tickets without a milestone. Project views only.","type":"array","items":{"type":"string"}},"teams":{"description":"Team keys, such as WEB. Project views only.","type":"array","items":{"type":"string"}}},"additionalProperties":false,"description":"Which tickets the view shows. Filters combine with and; the values within one filter with or."},"groupBy":{"description":"How to group tickets. Team views group by status, category, owner, tag, project or none; project views by status, category, owner, tag, milestone, team or none.","type":"string","enum":["status","category","owner","tag","project","milestone","team","none"]},"orderBy":{"description":"How to order tickets: manual follows the order people set, created puts the newest first, updated puts the most recently changed first.","type":"string","enum":["manual","created","updated"]},"layout":{"description":"Show the tickets as a list or a board.","type":"string","enum":["list","board"]}},"required":["name"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","name":"Docs search","filters":{"projects":["docs-launch"],"categories":["unstarted","started"]},"groupBy":"owner","orderBy":"updated","layout":"board"},"screen":null,"visibility":["model","app"]},{"name":"update_view","title":null,"description":"Change a view for everyone, or make it the default. Only the settings given change; filters replace the view's filters, and a new name gives a new slug. Returns the view. Needs write access, and your person must be in the view's team or one of its project's teams, or be a workspace owner or admin.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/views:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"The team the view belongs to, such as WEB. Give team or project, not both.","type":"string"},"project":{"description":"The project the view belongs to, such as docs-launch. Give team or project, not both.","type":"string"},"view":{"type":"string","description":"A view's slug, such as active."},"name":{"description":"A new name, up to 60 characters.","type":"string"},"filters":{"type":"object","properties":{"statuses":{"description":"Status names, such as In Progress.","type":"array","items":{"type":"string"}},"categories":{"description":"Status categories, such as started.","type":"array","items":{"type":"string","enum":["backlog","unstarted","started","completed","canceled"]}},"tags":{"description":"Tag names, such as feature.","type":"array","items":{"type":"string"}},"owners":{"description":"Agent IDs from list_agents, or none for tickets without an owner.","type":"array","items":{"type":"string"}},"projects":{"description":"Project slugs such as docs-launch, or none for tickets without a project. Team views only.","type":"array","items":{"type":"string"}},"milestones":{"description":"Milestone labels such as M1, or none for tickets without a milestone. Project views only.","type":"array","items":{"type":"string"}},"teams":{"description":"Team keys, such as WEB. Project views only.","type":"array","items":{"type":"string"}}},"additionalProperties":false,"description":"Which tickets the view shows. Filters combine with and; the values within one filter with or."},"groupBy":{"description":"How to group tickets. Team views group by status, category, owner, tag, project or none; project views by status, category, owner, tag, milestone, team or none.","type":"string","enum":["status","category","owner","tag","project","milestone","team","none"]},"orderBy":{"description":"How to order tickets: manual follows the order people set, created puts the newest first, updated puts the most recently changed first.","type":"string","enum":["manual","created","updated"]},"layout":{"description":"Show the tickets as a list or a board.","type":"string","enum":["list","board"]},"isDefault":{"description":"`true` makes this the view the team's or project's Tickets page opens.","type":"boolean","const":true}},"required":["view"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","view":"docs-search","layout":"list","isDefault":true},"screen":null,"visibility":["model","app"]},{"name":"delete_view","title":null,"description":"Delete a view that is not the default; make another view the default first. Returns deleted: true with the view's slug. Needs write access, and your person must be in the view's team or one of its project's teams, or be a workspace owner or admin.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":true,"idempotent":true},"route":"POST /agent/v1/views:delete","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"team":{"description":"The team the view belongs to, such as WEB. Give team or project, not both.","type":"string"},"project":{"description":"The project the view belongs to, such as docs-launch. Give team or project, not both.","type":"string"},"view":{"type":"string","description":"A view's slug, such as active."}},"required":["view"],"additionalProperties":false},"outputSchema":null,"example":{"team":"WEB","view":"docs-search"},"screen":null,"visibility":["model","app"]},{"name":"get_agent_instructions","title":null,"description":"Get the instructions to follow before writing a ticket's summary (ticket), its plan (plan), test cases (test-cases), specs (test-code), a product's Fixture API (fixtures) or the CI that runs tests (test-ci): templates, guidance and, for tickets, defaults. Name the team the work belongs to; source says whether they are the team's, the workspace's or Clanker Ship's. Returns the instructions and who last changed them. Needs read access.","area":"Planning","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/agent-instructions:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"kind":{"type":"string","enum":["ticket","plan","test-cases","test-code","fixtures","test-ci"],"description":"What the instructions shape: `ticket` for a ticket's summary, `plan` for its plan, `test-cases` for test cases, `test-code` for specs, `fixtures` for a product's Fixture API and `test-ci` for the CI that runs tests."},"team":{"description":"The team the work belongs to, such as WEB. Leave it out for the workspace's instructions.","type":"string"}},"required":["kind"],"additionalProperties":false},"outputSchema":null,"example":{"kind":"ticket","team":"WEB"},"screen":null,"visibility":["model","app"]},{"name":"update_agent_instructions","title":null,"description":"Change a team's or, without a team, the workspace's instructions of one kind, such as how its agents write test cases. Fields left out keep their current values, so a team's first change copies what it inherits. Returns the instructions. Needs write access, and your person must be in the team or be a workspace owner or admin; only owners and admins change the workspace's.","area":"Planning","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/agent-instructions:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"kind":{"type":"string","enum":["ticket","plan","test-cases","test-code","fixtures","test-ci"],"description":"What the instructions shape: `ticket` for a ticket's summary, `plan` for its plan, `test-cases` for test cases, `test-code` for specs, `fixtures` for a product's Fixture API and `test-ci` for the CI that runs tests."},"team":{"description":"The team whose instructions to change, such as WEB. Leave it out for the workspace's.","type":"string"},"templates":{"description":"Up to 20 templates: exactly one with tag null, and at most one per tag. Replaces the templates.","type":"array","items":{"type":"object","properties":{"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A tag name such as bug, or null for every other ticket."},"body":{"type":"string","description":"Markdown the summary or plan starts from, up to 20,000 characters."}},"required":["tag","body"],"additionalProperties":false}},"guidance":{"description":"How agents should write, in Markdown, up to 20,000 characters.","type":"string"},"defaults":{"description":"Ticket instructions only: what an agent's new ticket gets unless the agent names something else.","type":"object","properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"A status name such as Todo, or null for the team's default status."},"tags":{"type":"array","items":{"type":"string"},"description":"Tag names a new ticket gets, such as feature."},"owner":{"type":"string","enum":["creator","none"],"description":"`creator` makes the agent that creates the ticket its owner; `none` leaves it without one."}},"required":["status","tags","owner"],"additionalProperties":false}},"required":["kind"],"additionalProperties":false},"outputSchema":null,"example":{"kind":"ticket","team":"WEB","guidance":"- Name the product the ticket changes.\n- Link the docs page the ticket touches.","defaults":{"status":"Todo","tags":["feature"],"owner":"creator"}},"screen":null,"visibility":["model","app"]},{"name":"list_messages","title":null,"description":"List the messages people sent you: a ticket with an ask, such as Draft the ticket, or a mention in a ticket comment. Open messages by default. Read the ticket with get_ticket, do the work, then call complete_message. Returns messages oldest first, each with its ticket, ask, note, sender and status. Needs read access.","area":"Messages","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/messages:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"status":{"description":"`open` (the default) lists queued and delivered messages; `all` adds completed and declined ones.","type":"string","enum":["open","all"]}},"additionalProperties":false},"outputSchema":null,"example":{"status":"open"},"screen":null,"visibility":["model","app"]},{"name":"get_message","title":null,"description":"Get one of your messages: its ticket, ask, note, sender, status and reply. Needs read access.","area":"Messages","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/messages:get","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"message":{"type":"string","description":"A message ID from list_messages, such as Rm7tQ2vXc9Lp."}},"required":["message"],"additionalProperties":false},"outputSchema":null,"example":{"message":"Rm7tQ2vXc9Lp"},"screen":null,"visibility":["model","app"]},{"name":"complete_message","title":null,"description":"Mark a message done once the work it asked for is done. The sender is notified, with your reply if you give one. Completing a done message changes nothing; a declined message cannot be completed. Returns the message. Needs write access.","area":"Messages","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/messages:complete","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"message":{"type":"string","description":"A message ID from list_messages, such as Rm7tQ2vXc9Lp."},"reply":{"description":"A short note for the sender on what you did, up to 2,000 characters.","type":"string"}},"required":["message"],"additionalProperties":false},"outputSchema":null,"example":{"message":"Rm7tQ2vXc9Lp","reply":"Wrote the plan for WEB-31 and saved it to the ticket."},"screen":null,"visibility":["model","app"]},{"name":"list_comments","title":null,"description":"List a ticket's comments, oldest first. Returns each comment's Markdown body, its author, and the agent that wrote it for them, if any. Needs read access.","area":"Messages","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/comments:list","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"ticket":{"type":"string","description":"A ticket ID, such as WEB-31."}},"required":["ticket"],"additionalProperties":false},"outputSchema":null,"example":{"ticket":"WEB-31"},"screen":null,"visibility":["model","app"]},{"name":"comment_on_ticket","title":null,"description":"Reply on a ticket with a Markdown comment, such as an answer to a mention. Mentions in an agent's comment send no messages. Returns the comment. Needs write access.","area":"Messages","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":false},"route":"POST /agent/v1/comments:create","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"ticket":{"type":"string","description":"A ticket ID, such as WEB-31."},"body":{"type":"string","description":"The comment in Markdown, up to 10,000 characters."}},"required":["ticket","body"],"additionalProperties":false},"outputSchema":null,"example":{"ticket":"WEB-31","body":"Search covers headings and code samples. Should it cover the API reference too?"},"screen":null,"visibility":["model","app"]},{"name":"show_work","title":"My work","description":"Show the open tickets your person's agents own, grouped by status with work under way first. Clients with MCP Apps draw them as a list the person can act on; other clients get the list as text with links to the website. Needs read access.","area":"Screens","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/work:show","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false},"outputSchema":null,"example":{},"screen":{"name":"work","title":"My work"},"visibility":["model","app"]},{"name":"show_ticket","title":"Ticket","description":"Show one ticket: its status, owner, summary and plan. Clients with MCP Apps draw it with controls to change its status; other clients get it as text with a link to its page. A ticket's old ID still finds it. Needs read access.","area":"Screens","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:show","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"ticket":{"type":"string","description":"A ticket ID, such as WEB-31."}},"required":["ticket"],"additionalProperties":false},"outputSchema":null,"example":{"ticket":"WEB-31"},"screen":{"name":"ticket","title":"Ticket"},"visibility":["model","app"]},{"name":"open_ticket_panel","title":"Ticket","description":"Open a thread's ticket panel: the ticket named in the branch of your most recent live session, or the open tickets your person's agents own to pick from. Codex and ChatGPT open it from a thread's side panel. Returns the branch, its ticket or null, and the tickets to pick from. Needs read access.","area":"Screens","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:panel","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false},"outputSchema":null,"example":{},"screen":{"name":"ticket","title":"Ticket"},"visibility":["app"]},{"name":"show_inbox","title":"Agent inbox","description":"Show your open messages: tickets people sent you with an ask, and mentions in comments. Clients with MCP Apps draw them with buttons to start or finish each one; other clients get them as text with links to the tickets. Needs read access.","area":"Screens","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/messages:show","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false},"outputSchema":null,"example":{},"screen":{"name":"inbox","title":"Agent inbox"},"visibility":["model","app"]},{"name":"open_plan_file","title":"Plan file","description":"Open a local .plan.md file in the plan viewer, with the ticket its name gives, such as WEB-31.plan.md. Codex opens it when the person opens such a file. Returns the file and its ticket, or null when the name gives no ticket you can open. Needs read access.","area":"Screens","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/plan-files:open","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"file":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The file's name, such as WEB-31.plan.md."},"resourceUri":{"type":"string","minLength":1,"description":"The host's opaque URI for reading the file."}},"required":["name","resourceUri"],"additionalProperties":false,"description":"The local file the host opened."}},"required":["file"],"additionalProperties":false},"outputSchema":null,"example":{"file":{"name":"WEB-31.plan.md","resourceUri":"file:///Users/maya/code/storefront/WEB-31.plan.md"}},"screen":{"name":"plan","title":"Plan file"},"visibility":["app"]},{"name":"search_tickets","title":"Search tickets","description":"Find tickets whose ID starts with the query or whose title contains it, open tickets first, and projects whose name or slug contains it, such as for an @-mention. An empty query gives the open tickets your person's agents own. Returns up to 20 tickets and 5 projects as resource links; read one with resources/read. Needs read access.","area":"Codex","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/tickets:search","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"query":{"type":"string","description":"Text to match, such as docs or WEB-31. It may be empty."}},"required":["query"],"additionalProperties":false},"outputSchema":null,"example":{"query":"docs"},"screen":null,"visibility":["model","app"]},{"name":"read_settings","title":"Clanker Ship settings","description":"Read your settings: your default team for new tickets, and whether new messages wake an idle Codex thread. Returns a JSON Schema form, the current values and their layout, which Codex draws on the plugin's page. Needs read access.","area":"Codex","permission":"read","hints":{"readOnly":true,"destructive":false,"idempotent":true},"route":"POST /agent/v1/settings:read","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"values":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"layout":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["schema","values"],"additionalProperties":false},"example":{},"screen":null,"visibility":["model","app"]},{"name":"update_settings","title":"Change Clanker Ship settings","description":"Change your settings. Only the settings in set change, and the default team must be one your person is in. Returns the current values. Needs write access.","area":"Codex","permission":"write","hints":{"readOnly":false,"destructive":false,"idempotent":true},"route":"POST /agent/v1/settings:update","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"set":{"type":"object","properties":{"defaultTeam":{"description":"The key of one of your person's teams, such as WEB, for new tickets that name no team.","type":"string"},"wakeIdleThreads":{"description":"Whether the plugin hands each new message to an idle Codex thread.","type":"boolean"}},"additionalProperties":false,"description":"The settings to change. Name at least one."}},"required":["set"],"additionalProperties":false},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"values":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["values"],"additionalProperties":false},"example":{"set":{"defaultTeam":"WEB","wakeIdleThreads":true}},"screen":null,"visibility":["model","app"]}]