Scale Intelligence■ Docs
Docs / Reference / ask: local

ask: local.

A question in one of the ask tools' owning types, over the files the app may read to the card, answered by the app's own engine over its tenant's files, with the same foot

Figure 1POST /v1/ask/localspecified
CALLERyour app or an agentholds the keyAPI GATEWAY/v1/ask/local4 headersCORE: ASKrung strategygrant askRECORDreads or writesCARD, 200body CardThe input is LocalInput. Every response carries the contract's hash.flows forwardthe result
The caller sends LocalInput to /v1/ask/local. The platform returns a card whose body is Card.
POST/v1/ask/local

From the local server’s own. The call needs the strategy rung under a token with the ask grant, and it is served by the installed app.

The route takes LocalInput and returns a card whose body is Card.

Request body#

The request body is LocalInput.

fieldtyperequirednote
tooltextyesan ask tool
inputjsonyesthe serialisation of that tool’s input

Response#

The route returns a card whose body is Card. 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#

headerrequiredmeaning
Scale-Scopeyesthe scope the call runs in: tenant/, then /brand/, then /strategy/
Scale-As-True-Onnothe date the facts must have been true on; defaults to now
Scale-As-Known-Onnothe date the facts must have been known on; defaults to now
Scale-Keynofor 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 strategy rung and a token with the ask grant. The desktop app serves this route.

Example#

The example sends the smallest body that LocalInput allows. The build validates it against the schema of LocalInput.

Example
curl -X POST https://api.scaleintelligence.co/v1/ask/local \
  -H "Scale-Key: $SCALE_KEY" -H "Scale-Scope: tenant/<id>" \
  -H "content-type: application/json" \
  -d '{ "tool": "…", "input": null }'
import { client } from "@scale/sdk";
const answer = await client.ask.local({
    "tool": "…",
    "input": null
  });
// answer.body is a Card. answer.foot holds the basis, the scope and the time.
import requests
answer = requests.post("https://api.scaleintelligence.co/v1/ask/local",
    headers={"Scale-Key": KEY, "Scale-Scope": "tenant/<id>"},
    json={
      "tool": "…",
      "input": null
    }).json()
let answer: Card = client.post("https://api.scaleintelligence.co/v1/ask/local")
    .header("Scale-Key", key).header("Scale-Scope", "tenant/<id>")
    .json(&LocalInput { /* the fields of the page */ }).send().await?.json().await?;

MCP tool#

The MCP tool si.ask.local takes the same input and returns the same card. The tool only reads data. An MCP host that renders cards draws this card from ui://scale-intelligence/cards/Card. The tool’s page describes it.

POST /v1/ask/local
Scale-Scope: …
Scale-As-True-On: …
Scale-As-Known-On: …
Scale-Key: …
content-type: application/json

{
  "tool": "…",
  "input": null
}
Without a key, this page shows the request only. The request body is LocalInput, and the route returns a card whose body is Card.

Claims#

claimstateroute or tool
The platform serves the route /v1/ask/local at contract 0476e35e6e275db5.target/v1/ask/local