Finding an action
You can find a service by searching for what it does or by reading a known action reference. In either case, inspect its description, input requirements, and price before running it.
Search
sys/lookup accepts a description of the service you need and returns ranked
action candidates. For example, a search for an echo service might return:
$ juice run sys/lookup '{"query":"echo a message"}'
result: {
"results": [
{
"action": "bob/echo",
"action_id": "bb7fe1a8-…",
"description": "Echo a message back to the caller",
"input_schema": {
"type": "object",
"properties": {
"msg": { "type": "string", "description": "text to echo" }
},
"required": ["msg"]
},
"output_schema": {},
"price": 500000,
"quote_hash": "4965342976414282…",
"score": 0.0333
},
…
]
}
The result contains the interface needed to assess the action and prepare a call. The main fields are:
| Field | Meaning |
|---|---|
action |
the reference to pass to run |
description |
what the provider says it does |
input_schema, output_schema |
the contract: what it takes and returns |
price |
the all-in price, in base units |
quote_hash |
a fingerprint of the terms shown, for pinning |
score |
ranking score, comparable only within one result set |
limit controls how many results are returned; the default is ten.
When an embedding model is available, ranking combines keyword matching with similarity in meaning. Without that model, the kernel uses keyword matching. In either case, access filtering takes place before the result limit is applied, so inaccessible local actions cannot displace accessible results.
Results from other kernels
The kernel periodically learns about public actions hosted by its peers and includes them in search. Their references identify both the provider and the hosting kernel:
"action": "dave@beta-kernel/summarize",
"price": 2205000,
"observed_at": "2026-09-14T12:06:20Z",
"last_seen": "2026-09-14T12:06:20Z"
Remote results may carry three dates. observed_at records when the entry was
last verified against its home kernel. last_seen and
last_contact_failed_at record successful contact and a failed attempt known
not to have reached that kernel. These observations help you judge freshness,
but cannot guarantee that the service is reachable now.
A discovered action’s price is indicative until its signed terms are resolved
from the home kernel. Your kernel caches verified terms for subsequent calls;
the serving kernel checks them again when admitting a call. Use the
quote_hash to pin the terms you selected, as explained in
Running an action.
Reading an action directly
If you already know an action’s reference, action show reads its interface
directly:
$ juice action show bob/echo
id: bb7fe1a8-…
owner_handle: bob
name: echo
kind: http
active: true
visibility: local
price: 0.50 credits
description: Echo a message back to the caller
input_schema: { … }
output_schema: {}
quote_hash: 4965342976414282…
requires_grant: false
The requires_grant field indicates that the action uses an upstream account
belonging to its caller. You must connect that account before the action can
run; see Consent and assigned work.
A provider can give a group of actions a common entry point by publishing an
index action. If bob/greeter names no action directly, for example,
action show tries bob/greeter/index.
Listing
$ juice action list
bob/mail 0.00 credits [grant]
dave@beta-kernel/summarize 2.205 credits
bob/stamp 1.00 credits
bob/echo 0.50 credits
…
The default list shows active actions within your access: your own actions,
local and public actions hosted here, and cached remote actions. The [grant]
marker identifies actions requiring an upstream connection. Use --all to
include inactive actions within your permitted scope.
What other buyers thought
$ juice action ratings bob/echo
1 2026-09-14T12:05:17Z did what it said
$ juice action stats bob/echo
action_id: bb7fe1a8-…
uses: 3
successes: 3
failures: 0
rating_count: 1
latency_estimate: 0.399
rating_estimate: 1
last_used_at: 2026-09-14T12:05:24Z
Ratings present the payer’s assessment of a completed call, including an optional
note and the date, without naming the payer. Statistics summarize the action’s
recorded use; latency_estimate is its mean execution time in seconds.
Evidence shared between kernels contains less information than the private call record. Its interpretation is explained in The network economy.