act: keep play.
A play for a brand, written once by the platform as an original or by the tenant: its goal, its condition as a predicate over its population, its class, its tactic, the move it proposes, its measure, its window, its forecast rule, its comparison, when it stops, and its graph of moves as edges (`KeepPlayInput`); the…
Keep a play. The call needs the brand rung under a token with the act grant, and it is served by the platform.
The route takes KeepPlayInput and returns a card whose body is Play.
Request body#
The request body is KeepPlayInput.
| field | type | required | note |
|---|---|---|---|
play | Play | yes | its condition and its edges carry their predicates by hash; a predicate given in full under predicates is kept first |
predicates | Predicate | no | the condition’s and the edges’ predicates in full, kept by their hashes before the play |
Response#
The route returns a card whose body is Play. Every card ends with a foot that states the basis of each number, the scope of the call, and the time when the facts were true.
Headers#
| header | required | meaning |
|---|---|---|
Scale-Scope | yes | the scope the call runs in: tenant/ |
Scale-As-True-On | no | the date the facts must have been true on; defaults to now |
Scale-As-Known-On | no | the date the facts must have been known on; defaults to now |
Scale-Key | no | for a change, the key made from the input; a repeat under the same key returns the unit held and writes nothing |
A caller needs the brand rung and a token with the act grant. The platform serves this route.
Example#
The example sends the smallest body that KeepPlayInput allows. The build validates it against the schema of KeepPlayInput.
Example
curl -X POST https://api.scaleintelligence.co/v1/act/keep_play \
-H "Scale-Key: $SCALE_KEY" -H "Scale-Scope: tenant/<id>" \
-H "content-type: application/json" \
-d '{ "play": { "name": "…", "brand": "…", "goal": "…", "condition": { "tree": { "form": "group" }, "population": "…", "tree_hash": "…", "register_hash": "…", "compiler_version": "…", "comparator_versions": {} }, "class": "…", "tactic": "…", "proposes": "…", "measure": "…", "window": "…", "forecast_rule": "…", "comparison": "…", "stop": "…", "armed": false, "kind_of_move": "…", "graph": [], "share": 0, "holdout": 0, "trigger": "a match" } }'
import { client } from "@scale/sdk";
const answer = await client.act.keep_play({
"play": {
"name": "…",
"brand": "…",
"goal": "…",
"condition": {
"tree": {
"form": "group"
},
"population": "…",
"tree_hash": "…",
"register_hash": "…",
"compiler_version": "…",
"comparator_versions": {}
},
"class": "…",
"tactic": "…",
"proposes": "…",
"measure": "…",
"window": "…",
"forecast_rule": "…",
"comparison": "…",
"stop": "…",
"armed": false,
"kind_of_move": "…",
"graph": [],
"share": 0,
"holdout": 0,
"trigger": "a match"
}
});
// answer.body is a Play. answer.foot holds the basis, the scope and the time.
import requests
answer = requests.post("https://api.scaleintelligence.co/v1/act/keep_play",
headers={"Scale-Key": KEY, "Scale-Scope": "tenant/<id>"},
json={
"play": {
"name": "…",
"brand": "…",
"goal": "…",
"condition": {
"tree": {
"form": "group"
},
"population": "…",
"tree_hash": "…",
"register_hash": "…",
"compiler_version": "…",
"comparator_versions": {}
},
"class": "…",
"tactic": "…",
"proposes": "…",
"measure": "…",
"window": "…",
"forecast_rule": "…",
"comparison": "…",
"stop": "…",
"armed": false,
"kind_of_move": "…",
"graph": [],
"share": 0,
"holdout": 0,
"trigger": "a match"
}
}).json()
let answer: Card = client.post("https://api.scaleintelligence.co/v1/act/keep_play")
.header("Scale-Key", key).header("Scale-Scope", "tenant/<id>")
.json(&KeepPlayInput { /* the fields of the page */ }).send().await?.json().await?;
MCP tool#
The MCP tool si.act.keep_play takes the same input and returns the same card. The tool changes data and needs a grant. An MCP host that renders cards draws this card from ui://scale-intelligence/cards/Play. The tool’s page describes it.
POST /v1/act/keep_play
Scale-Scope: …
Scale-As-True-On: …
Scale-As-Known-On: …
Scale-Key: …
content-type: application/json
{
"play": {
"name": "…",
"brand": "…",
"goal": "…",
"condition": {
"tree": {
"form": "group"
},
"population": "…",
"tree_hash": "…",
"register_hash": "…",
"compiler_version": "…",
"comparator_versions": {}
},
"class": "…",
"tactic": "…",
"proposes": "…",
"measure": "…",
"window": "…",
"forecast_rule": "…",
"comparison": "…",
"stop": "…",
"armed": false,
"kind_of_move": "…",
"graph": [],
"share": 0,
"holdout": 0,
"trigger": "a match"
}
}Claims#
| claim | state | route or tool |
|---|---|---|
| The platform serves the route /v1/act/keep_play at contract 0476e35e6e275db5. | target | /v1/act/keep_play |