# AI use cases for Jevcore (PerryLink/jevcore)

Repo: [PerryLink/jevcore](https://github.com/PerryLink/jevcore) | Use cases: 4 | Page: https://dedupedai.com/use-cases/perrylink-jevcore/

jevcore is a TypeScript package that gives DeepSeek Harness, MCP hosts, and plain Node scripts access to TypeSafe Jev, which returns typed yes/no, choice, and score judgments with calibrated probabilities, offline by default.

This file holds every use case of this repo. Each one starts with a "## " heading and ends with its URL.

- Route support tickets with typed Jev answers: https://dedupedai.com/use-cases/perrylink-jevcore/route-tickets-with-typed-judgments/
- Install the jev plugin into DeepSeek Harness from a checkout: https://dedupedai.com/use-cases/perrylink-jevcore/install-jev-plugin-into-dsh/
- Serve the three Jev tools to a non-DSH MCP host: https://dedupedai.com/use-cases/perrylink-jevcore/serve-jev-tools-over-mcp-stdio/
- Route Jev calls through an OpenRouter key: https://dedupedai.com/use-cases/perrylink-jevcore/send-state-through-openrouter-route/

## How to route support tickets with typed Jev answers with Jevcore

Repo: [PerryLink/jevcore](https://github.com/PerryLink/jevcore) | Difficulty: Intermediate | Time: 30 minutes | Basis: From the README

Ask Jev yes/no and choice questions about a ticket and act only on confident answers.

**Who it is for:** A developer running a Node service that triages incoming support tickets and needs routing decisions without a model round-trip.

**The problem:** Routing code built on free-text model replies is hard to test and can quietly act on unsure answers.

**The outcome:** Each ticket gets typed urgency and team answers with probability and confidence, and an unsure answer produces a review step instead of an automatic action.

### Steps

1. Run `npm install jevcore` in the service so the core package is available to plain Node. (inferred, check the README)
2. Check that the runtime is Node 20 or later, the requirement for the core package.
3. Import the core package and call its ask function with a state object and noul and choice questions; the README shows this call through ctx.get('jev') inside DSH, so confirm the plain Node exports before wiring it. (inferred, check the README)
4. Read result.answers for probability and confidence, and apply an explicit confidence floor as in src/policy.ts, sending unsure answers to a human queue.

### Prompt to paste into your agent

```text
In the PerryLink/jevcore repo, write a Node script that asks Jev a noul question ('Does this convey urgency?') and a choice question over the ticket text in <ticket file>. Expected output: the probability and confidence for each answer. Verify that the startup line reports egress=OFF and provider=mock, so no network call was made.
```

### Caveat

The README shows the ask call inside DSH through ctx.get('jev'), and the plain Node import path is not shown, so verify the package exports before depending on them.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/perrylink-jevcore/route-tickets-with-typed-judgments/

## How to install the jev plugin into DeepSeek Harness from a checkout with Jevcore

Repo: [PerryLink/jevcore](https://github.com/PerryLink/jevcore) | Difficulty: Intermediate | Time: 30 minutes | Basis: From the README

Add the jevcore-dsh package and its core dependency to a DSH profile and confirm it is active.

**Who it is for:** A DeepSeek Harness user who wants Jev judgments available to the model and to other plugins.

**The problem:** The plugin needs its core package resolvable from the profile, and a failed load is easy to miss.

**The outcome:** The jev plugin shows as active in the plugin list, and the startup log shows the egress contract for the mock provider.

### Steps

1. Clone the repository with `git clone https://github.com/PerryLink/jevcore` and note the absolute path of the checkout. (inferred, check the README)
2. Run `dsh plugin --profile   add /absolute/path/to/jevcore/packages/dsh`, replacing the path with your checkout.
3. Run `dsh plugin --profile   add /absolute/path/to/jevcore/packages/core` so the core package resolves from the profile. (inferred, check the README)
4. Confirm the jev row shows as active, not failed, in the plugin list.
5. Open the log and check the startup line that reads provider=mock and egress=OFF.

### Prompt to paste into your agent

```text
Using the PerryLink/jevcore checkout at <absolute path>, add packages/dsh and packages/core to the DeepSeek Harness profile with the dsh plugin command. Expected output: the jev plugin listed as active. Verify that the log contains provider=mock and egress=OFF before reporting success.
```

### Caveat

The README says the dsh package needs Node ^22.19.0 or >=24.0.0, so an older runtime will fail to load the plugin even when the install command succeeds.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/perrylink-jevcore/install-jev-plugin-into-dsh/

## How to serve the three Jev tools to a non-DSH MCP host with Jevcore

Repo: [PerryLink/jevcore](https://github.com/PerryLink/jevcore) | Difficulty: Intermediate | Time: 30 minutes | Basis: From the README

Run the jevcore-mcp stdio server so any MCP host can call the jev_ask, jev_rank, and related tools.

**Who it is for:** A developer whose MCP host is not DeepSeek Harness and who wants typed Jev judgments as tools.

**The problem:** Stdout is the protocol channel on stdio, so a stray log line can break the connection, and a missing key can go unnoticed.

**The outcome:** The host lists the Jev tools, and the egress report appears on stderr while the protocol stays clean.

### Steps

1. Run `npx -y jevcore-mcp` once from a terminal to check that the server starts.
2. Read the egress report on stderr and confirm it names provider=mock and egress=OFF when no key is set.
3. Add a server entry to your MCP host that spawns the command npx with args -y and jevcore-mcp.
4. If you set JEV_PROVIDER=live, make sure the matching key is present, because a missing key is a startup error for this server.

### Prompt to paste into your agent

```text
In the PerryLink/jevcore repo, start the jevcore-mcp stdio server with npx -y jevcore-mcp and register it with <MCP host config file>. Expected output: the host lists the three Jev tools. Verify that the egress report appears on stderr and that nothing else prints to stdout before the host connects.
```

### Caveat

With no key the server stays on the offline mock without an error, so a host that appears to work may not be calling Jev at all until a key is set.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/perrylink-jevcore/serve-jev-tools-over-mcp-stdio/

## How to route Jev calls through an OpenRouter key with Jevcore

Repo: [PerryLink/jevcore](https://github.com/PerryLink/jevcore) | Difficulty: Advanced | Time: 45 minutes | Basis: From the README

Point the jevcore-dsh plugin at OpenRouter when a TypeSafe key is impractical.

**Who it is for:** A DeepSeek Harness user with an OpenRouter key who cannot get a TypeSafe key and accepts a different third party receiving the state.

**The problem:** Choosing a live route changes where the state goes, and the destination is not obvious from the provider name.

**The outcome:** Jev answers come from the System One models through OpenRouter, with the endpoint named in the startup report and a cost recorded in usage.

### Steps

1. Store your OpenRouter key in the environment variable OPENROUTER_API_KEY, without writing it into the configuration.
2. Set provider to openrouter and openRouterApiKeyRef to OPENROUTER_API_KEY in the jev plugin config.
3. Set model to jev-latest, or to a versioned id such as typesafe/jev-1.13, since typesafe/jev-latest is not accepted.
4. Restart and read the startup report, confirming it names https://openrouter.ai/api as the endpoint and egress=ON.

### Prompt to paste into your agent

```text
In the PerryLink/jevcore repo, configure the jevcore-dsh plugin with provider openrouter, openRouterApiKeyRef OPENROUTER_API_KEY, and model jev-latest. Expected output: a startup report naming the openrouter.ai endpoint. Verify that the report lists which state fields are sent before any live call is made.
```

### Caveat

A model id that is not a System One id is refused before the call, so an arbitrary chat model name in the config will fail rather than return a usable answer.

Risk, credentials: The OpenRouter key must stay in the environment or the credential service, because the README says the key is never logged or written to configuration, and a leaked key bills your OpenRouter account.

Risk, credentials: Your state is sent to OpenRouter, a third party with different retention and logging, so do not route tickets or other sensitive state there without checking that third party's terms.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/perrylink-jevcore/send-state-through-openrouter-route/
