---
title: "Tool"
description: "a capability from the tool register, with its inputs and outputs as owning types; generated, never written by hand"
section: concepts
address: /concepts/tool
contract: 0476e35e6e275db5
---

# Tool

a capability from the tool register, with its inputs and outputs as owning types; generated, never written by hand

[figure: Tool is a row at platform scope. The drawing shows its fields and the objects that they point at.]

| property | value |
|---|---|
| kind | row |
| scope | platform |
| key | its name |
| store | postgres |
| family | harness |



## Fields


| field | type | required | note |
|---|---|---|---|
| `name` | `text` | yes | si.<family>.<verb> |
| `family` | `one of session \| ask \| read \| view \| act \| work \| harness \| files` | yes |  |
| `from_row` | `text` | yes | the specification's interface row |
| `input_type` | `text` | yes | a type of this register |
| `output_type` | `text` | yes | the body of the card |
| `rung` | `one of user \| tenant \| brand \| strategy` | yes |  |
| `grant` | `one of read \| ask \| act \| work \| files \| admin` | yes |  |
| `where` | `one of platform \| app \| either` | yes |  |
| `long` | `bool` | yes | returns a task |
| `exposure` | `one of direct \| deferred \| workbench` | yes | direct is in the first list a model sees; deferred is reached by paging one family at a time; workbench only from code in the workbench |
| `permission` | [Permission](/concepts/permission) | yes |  |
| `state` | [Readiness](/concepts/readiness) | yes | off for a tenant is absent from the list |
| `takes` | `text` | yes | the plain sentence of what the tool takes, as the tool register prints it |
| `gives` | `text` | yes | the plain sentence of what the tool gives |



## Routes that use it
No route takes or returns Tool directly. The record holds it, and the objects that point at it reach it.
