Composed from the v1 contract exported at build time: 6 senses, 6 actions, 2 templates.
What this intent means
Voice is at the production stage. That stage is founder-reported, not verified by this site.
The contract says
Product stage supplied by founder; this API resolves supplied transcripts, not audio.
When the input is “open home”, the rule returns one navigation.open intent whose target is /. The contract describes the payload as “target: application-relative path”.
The API executes nothing. Every action is client_handler_required, so your TypeScript handler decides what it means.
Every sense in the contract
- Voiceproduction · founder-reportedIntent API available · input client_transcriptProduct stage supplied by founder; this API resolves supplied transcripts, not audio.
- Motiondevelopment · founder-reportedIntent API available · input client_gestureProduct stage supplied by founder; this API resolves supplied gesture identifiers, not camera frames.
- Smellresearch · founder-reportedNo sensing API · answers sense_unavailableActive university R&D reported by founder; no sensing API available.
- Tasteroadmap · founder-reportedNo sensing API · answers sense_unavailableNo sensing API available.
- Sightroadmap · founder-reportedNo sensing API · answers sense_unavailableNo sensing API available.
- Touchroadmap · founder-reportedNo sensing API · answers sense_unavailableNo sensing API available.
The rule
The exact request body the API accepts, built from your sentence.
{
"input": {
"sense": "voice",
"transcript": "open home"
},
"rules": [
{
"id": "home",
"match": "open home",
"action": {
"type": "navigation.open",
"target": "/"
}
}
]
}Hand it to your agent
Let your agent read the reference first. Then give it the one setup prompt, unchanged. Wire this intent last.
1. Let your agent read the reference
curl --fail --silent --show-error https://developer.ursly.io/llms.txtFetches the reference. No install, no execution, no secret handshake.
2. The one setup prompt, verbatim
It detects your language, installs the published SDK or writes a client, and shows you the first 200. Copy it as it is.
Set up Ursly in this project.
1. Detect this project's language and package manager.
2. Read https://ursly.io/developers/artifacts/reference.md and https://ursly.io/downloads/manifest.json.
3. If the manifest lists an Ursly SDK for this language (kind sdk-typescript, sdk-python, sdk-go or sdk-rust), download it from https://ursly.io followed by its path, verify its SHA-256 against the manifest and install it locally. Otherwise generate a minimal client from https://ursly.io/developers/artifacts/openapi.json and label it as generated, not an official Ursly package.
4. Point the client at https://ursly.io, call capabilities and show me the 200 response.
5. Register a handler for one action this app already supports, resolve the "voice-home" template from https://ursly.io/api/v1/templates and dispatch only through that handler.
Keep the defaults: no automatic retries, no redirects, no logging of request bodies, and never send health or personal data. Ask me before changing anything outside this project.3. Then wire this intent
After setup, wire this intent. When someone uses voice to say “open home”, open / in my TypeScript app.
Send this request body and dispatch the result only through a registered handler.
{
"input": {
"sense": "voice",
"transcript": "open home"
},
"rules": [
{
"id": "home",
"match": "open home",
"action": {
"type": "navigation.open",
"target": "/"
}
}
]
}From the shell
The ursly CLI prints what the API returns. It never executes an intent.
Install the CLI with your agent
The same install prompt as the CLI page. It picks the archive for your platform and checks its SHA-256.
Install the Ursly CLI on this machine.
1. Read https://ursly.io/downloads/manifest.json and pick the file whose kind is "cli" for this operating system and CPU.
2. Download it from https://ursly.io followed by its path. Compute its SHA-256; if it differs from the manifest, delete the file and stop.
3. Extract ursly (ursly.exe on Windows) into a user-writable directory on my PATH and make it executable.
4. Run ursly --version, then ursly --url https://ursly.io capabilities --pretty, and show me the 200 response.
Do not use administrator rights without asking me. Keep TLS verification on.This intent in the terminal
cat > rule.json <<'JSON'
{
"input": {
"sense": "voice",
"transcript": "open home"
},
"rules": [
{
"id": "home",
"match": "open home",
"action": {
"type": "navigation.open",
"target": "/"
}
}
]
}
JSON
ursly --url https://ursly.io validate --file rule.json
ursly --url https://ursly.io resolve --file rule.json --prettyIn your TypeScript code
Published · 0.1.0
Published in release 0.1.0 as entersense-sdk-0.1.0.tgz. Install it from Downloads, or let the setup prompt do it. Register a handler, then resolve. Nothing runs without your handler.
import { UrslyClient } from "@ursly/sdk";
const client = new UrslyClient({ baseUrl: "https://ursly.io" });
client.registerHandler("navigation.open", (action) => {
// Your app decides what this means. Nothing runs without a handler.
});
const request = {
"input": {
"sense": "voice",
"transcript": "open home"
},
"rules": [
{
"id": "home",
"match": "open home",
"action": {
"type": "navigation.open",
"target": "/"
}
}
]
};
const resolution = await client.resolve(request); // Returns intents, executes nothing.
await client.resolveAndDispatch(request); // Runs only your registered handler.- TypeScriptPublished · 0.1.0
- PythonPublished · 0.1.0
- GoNo published package
- RustNo published package
Another language? The setup prompt has your agent write a client from the contract, labelled as generated.
Ask the live API
Send this rule to the real API on this site. Nothing is sent until you press Send, and nothing is retried.
Sending from this page needs JavaScript. The terminal commands in step 04 send the same request.
Every path
- CLIInstall prompt, platforms and exit codes
- SDKsTypeScript, Python, Go and Rust, with install prompts
- DownloadsEvery published file with its SHA-256
- Full referenceEndpoints, schemas, actions and limits
- llms.txtThe index written for agents
- llms-full.txtContracts and templates in one file
Release 0.1.0 lists 8 files in the downloads manifest.
The roadmap, proposed
Planning targets, not release promises. Each sensing release depends on research, consent, evaluation and operational readiness. Voice fully implemented, Motion in development and Smell in university research are founder-reported product stages; the developer API documents its own implemented scope.
Q4 2026 · Current delivery
Build with voice. Explore motion.
- Versioned transcript-to-intent and gesture-to-intent API, an independent Rust CLI, and TypeScript, Python, Go and Rust SDKs.
- Configurable action rules, typed errors, generated API reference and reproducible downloads.
- Verify the existing voice and motion acquisition integrations before connecting external product endpoints.
Q1 2027 · Proposed research milestone
Ursly Smell · research to evaluation
- Continue founder-reported R&D with university researchers; participating institutions remain undisclosed.
- Define consented datasets, experimental protocols, repeatability criteria and an evaluation interface.
- A research milestone is not a device-less sensing, dating compatibility or diagnostic claim.
Q2 2027 · Proposed, validation dependent
Ursly Taste · first research interfaces
- Investigate culinary feedback and chef-led workflows with explicit participant consent.
- Publish acquisition requirements, uncertainty and a limited research contract after evidence review.
- No taste sensing endpoint or commercial launch is available today.
Q3 2027 · Proposed, validation dependent
Sight and touch · expand deliberately
- Evaluate voluntary visual and tactile interaction adapters, accessibility and latency.
- Release research previews only after privacy and performance acceptance gates.
- Availability dates may change with research findings and partner readiness.