Each app user gets a private memory, and an agent that acts for them inside the owner's permissions.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Leave unset to call provision_app, which needs no key. After setup, the app key, as: Bearer <app key>.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Set up long-term memory for an app with no account: makes a new app and its key, as `POST /v1/auth/provision` does. The answer carries the app key once, and the assistant is told to put it in the owner's secret store and nowhere else. Needs no key.
Who the app's customers are, in one or two sentences. Stored with the app's objective; the owner can change it.
What the app does, in one or two sentences, in the business's words. Stored as the app's objective; the owner can change it.
Optional. The model preset chosen for this app: cost_first, quality_first or regulated. It is stored with the app now, so Harny's own processing of what the app loads follows it from the first fact. The owner can change it after the claim.
Optional. A contact address for platform messages. Leave it out when you do not have one: the app's owner gives their sign-in address when they claim the app.
Optional. Your own name: the product you run as, the way you would say who you are. The app's owner sees it on their Home as who set the app up. Leave it out if you do not know it; Harny never fills it in for you.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http context https://api.harny.ai/v1/mcp/mcp
Headers
Authorization (optional, not in the config above): Optional. Leave unset to call provision_app, which needs no key. After setup, the app key, as: Bearer <app key>.Set up long-term memory for an app with no account: makes a new app and its key, as `POST /v1/auth/provision` does. The answer carries the app key once, and the assistant is told to put it in the owner's secret store and nowhere else. Needs no key.
| Argument | Type | Description |
|---|---|---|
| app_name* | string | |
| customers | any | Who the app's customers are, in one or two sentences. Stored with the app's objective; the owner can change it. |
| objective | any | What the app does, in one or two sentences, in the business's words. Stored as the app's objective; the owner can change it. |
| model_preset | any | Optional. The model preset chosen for this app: cost_first, quality_first or regulated. It is stored with the app now, so Harny's own processing of what the app loads follows it from the first fact. The owner can change it after the claim. |
| contact_email | any | Optional. A contact address for platform messages. Leave it out when you do not have one: the app's owner gives their sign-in address when they claim the app. |
| assistant_name | any | Optional. Your own name: the product you run as, the way you would say who you are. The app's owner sees it on their Home as who set the app up. Leave it out if you do not know it; Harny never fills it in for you. |
{
"type": "object",
"title": "provision_appArguments",
"required": [
"app_name"
],
"properties": {
"app_name": {
"type": "string",
"title": "App Name",
"maxLength": 255,
"minLength": 1
},
"customers": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "Customers",
"default": null,
"description": "Who the app's customers are, in one or two sentences. Stored with the app's objective; the owner can change it."
},
"objective": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "Objective",
"default": null,
"description": "What the app does, in one or two sentences, in the business's words. Stored as the app's objective; the owner can change it."
},
"model_preset": {
"anyOf": [
{
"enum": [
"cost_first",
"quality_first",
"regulated"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Model Preset",
"default": null,
"description": "Optional. The model preset chosen for this app: cost_first, quality_first or regulated. It is stored with the app now, so Harny's own processing of what the app loads follows it from the first fact. The owner can change it after the claim."
},
"contact_email": {
"anyOf": [
{
"type": "string",
"format": "email"
},
{
"type": "null"
}
],
"title": "Contact Email",
"default": null,
"description": "Optional. A contact address for platform messages. Leave it out when you do not have one: the app's owner gives their sign-in address when they claim the app."
},
"assistant_name": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
],
"title": "Assistant Name",
"default": null,
"description": "Optional. Your own name: the product you run as, the way you would say who you are. The app's owner sees it on their Home as who set the app up. Leave it out if you do not know it; Harny never fills it in for you."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.