---
title: "tool si.work.build_facet"
description: "a facet kind, a seed (a predicate, a list of communities, or a place from the gazetteer), the scope, and the positive and negative controls: the facet's register with every candidate kept or dropped and its reason in words, its people, its pairs and its trend, and the facet not ready until its calibration is read."
section: reference
address: /reference/tools/si-work-build_facet
contract: 0476e35e6e275db5
---

# tool si.work.build_facet

a facet kind, a seed (a predicate, a list of communities, or a place from the gazetteer), the scope, and the positive and negative controls: the facet's register with every candidate kept or dropped and its reason in words, its people, its pairs and its trend, and the facet not ready until its calibration is read.

[figure: Over MCP, si.work.build_facet takes BuildFacetInput and returns a card whose body is Facet.]

the facet's register with every candidate kept or dropped and its reason in words, its people, its pairs and its trend, and the facet not ready until its calibration is read. The call needs the work grant at the strategy rung.



| | |
|---|---|
| input | [BuildFacetInput](/concepts/buildfacetinput) |
| result | a card whose body is [Facet](/concepts/facet) |
| read-only | no |
| destructive | no |
| card address | `ui://scale-intelligence/cards/Facet` |
| HTTP route | [`/v1/work/build_facet`](/reference/work/build_facet) |





| field | type | required | note |
|---|---|---|---|
| `facet_kind` | [FacetKind](/concepts/facetkind) | yes |  |
| `seed` | `text` | yes |  |
| `again` | `bool` | no | when true, the same seed is built again as new work, for a presence that changed since the last build; without it the same seed under the same measure is the same work and returns the run already made |
| `asked_again_at` | `time` | no | set by the tool from the ask, so the run's key differs; never typed by hand |
| `scope` | [Scope](/concepts/scope) | yes |  |
