protogrid

Search / ai.saltapp/salt

Salt

R2· OAuth, once

Your agent asks humans on Salt and gets answers: messages, tap-to-answer cards, invoices.

v0.3.0 · active · repository · website · descriptor JSON · versions

An agent can connect after a one-time OAuth consent by a human.Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.
Quality83good
Trust95of 100
Uptime, 30 days100%
Latency p50241 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "salt": {
      "type": "http",
      "url": "https://mcp.saltapp.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${SALT_TOKEN}",
        "X-Salt-Api-Key": "${X_SALT_API_KEY}",
        "X-Salt-App-Id": "${X_SALT_APP_ID}"
      }
    }
  }
}
claude mcp add --transport http salt https://mcp.saltapp.ai/mcp --header "Authorization: Bearer ${SALT_TOKEN}" --header "X-Salt-Api-Key: ${X_SALT_API_KEY}" --header "X-Salt-App-Id: ${X_SALT_APP_ID}"
[mcp_servers.salt]
url = "https://mcp.saltapp.ai/mcp"
bearer_token_env_var = "SALT_TOKEN"
env_http_headers = { "X-Salt-Api-Key" = "X_SALT_API_KEY", "X-Salt-App-Id" = "X_SALT_APP_ID" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "salt": {
      "type": "remote",
      "url": "https://mcp.saltapp.ai/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:SALT_TOKEN}",
        "X-Salt-Api-Key": "{env:X_SALT_API_KEY}",
        "X-Salt-App-Id": "{env:X_SALT_APP_ID}"
      }
    }
  }
}
{
  "mcpServers": {
    "salt": {
      "type": "http",
      "url": "https://mcp.saltapp.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${SALT_TOKEN}",
        "X-Salt-Api-Key": "${X_SALT_API_KEY}",
        "X-Salt-App-Id": "${X_SALT_APP_ID}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=salt&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnNhbHRhcHAuYWkvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7U0FMVF9UT0tFTn0iLCJYLVNhbHQtQXBpLUtleSI6IiR7WF9TQUxUX0FQSV9LRVl9IiwiWC1TYWx0LUFwcC1JZCI6IiR7WF9TQUxUX0FQUF9JRH0ifX0%3D"
}
{
  "servers": {
    "salt": {
      "type": "http",
      "url": "https://mcp.saltapp.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${SALT_TOKEN}",
        "X-Salt-Api-Key": "${X_SALT_API_KEY}",
        "X-Salt-App-Id": "${X_SALT_APP_ID}"
      }
    }
  }
}
{
  "mcpServers": {
    "salt": {
      "httpUrl": "https://mcp.saltapp.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${SALT_TOKEN}",
        "X-Salt-Api-Key": "${X_SALT_API_KEY}",
        "X-Salt-App-Id": "${X_SALT_APP_ID}"
      }
    }
  }
}
extensions:
  "salt":
    enabled: true
    name: "salt"
    type: streamable_http
    uri: "https://mcp.saltapp.ai/mcp"
    headers:
      "Authorization": "Bearer ${SALT_TOKEN}"
      "X-Salt-Api-Key": "${X_SALT_API_KEY}"
      "X-Salt-App-Id": "${X_SALT_APP_ID}"
    timeout: 300

Placeholders to fill from your own secret store: ${SALT_TOKEN}, ${X_SALT_API_KEY}, ${X_SALT_APP_ID}. The registry never accepts secret values.

Quality 83 / 100good

protocoln/a · weight 25
  • n/a
    protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)
authorization83 · weight 15
  • pass
    auth.prmProtected Resource Metadata (RFC 9728) published
  • pass
    auth.as_metadataauthorization server metadata reachable
  • warn
    auth.cimdonly Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
  • n/a
    auth.secret_in_urlno templated URL
tool hygienen/a · weight 30
  • n/a
    tools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool list unknown
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvabledependencies not resolved yet

Tool list unknown · checked 2026-10-20 13:17 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 95 / 100

provenance85
liveness100
freshness100
hygiene95

+repository +dns-namespace +website +reachable +uptime-100% +updated-0d-ago -unpinned-packages(1)

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] npmnot resolved yet; dependencies are read once a day

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.saltapp.ai/mcp streamable-httpoauth2 AS: https://saltapp.aiyes100%241 ms–2026-10-20
packageregistryversionruntimesecrets
salt-mcpnpm0.3.0npxSALT_API_KEY, APP_PRIVATE_KEY, PGP_PASSPHRASE, WALLET_MASTER_KEY
ghcr.io/0000f8/salt-mcp:v0.3.0ociunpinneddockerSALT_API_KEY, APP_PRIVATE_KEY, PGP_PASSPHRASE, WALLET_MASTER_KEY

Tools (0)

No tools observed. Tools appear once a credential-free probe can list them.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "ai.saltapp/salt",
  "icons": [
    {
      "src": "https://saltapp.ai/logo512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    },
    {
      "src": "https://saltapp.ai/favicon.svg",
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "Salt",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.saltapp.ai/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "OAuth 2.1 bearer token (\"Bearer sat_...\"), for a keyless Salt agent the connecting human owns/authorizes via saltapp.ai's OAuth flow. This is now the RECOMMENDED way to connect -- no header is required up front; an MCP client that supports OAuth discovers the flow automatically from this endpoint's 401 response (RFC 9728 Protected Resource Metadata at /.well-known/oauth-protected-resource/mcp, naming https://saltapp.ai as the authorization server). See README.md's \"Hosted server\" section."
        },
        {
          "name": "X-Salt-Api-Key",
          "isSecret": true,
          "description": "LEGACY: a pre-existing Salt agent's own API key, for the small api-key-only tool set (list_salt_agents, list_products, create_product). Sent per-request; never stored by the hosted server. Superseded by the OAuth bearer flow above for new integrations, but still supported unchanged."
        },
        {
          "name": "X-Salt-App-Id",
          "isSecret": true,
          "description": "LEGACY: paired with X-Salt-Api-Key above; the agent's numeric/user id, sent verbatim."
        }
      ]
    }
  ],
  "version": "0.3.0",
  "packages": [
    {
      "version": "0.3.0",
      "transport": {
        "type": "stdio"
      },
      "identifier": "salt-mcp",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "HOST",
          "isRequired": true,
          "description": "Salt API base URL, e.g. https://api.saltapp.ai"
        },
        {
          "name": "SALT_API_KEY",
          "isSecret": true,
          "isRequired": true,
          "description": "The Salt agent's API key. Shown once when the agent is created."
        },
        {
          "name": "SALT_APP_ID",
          "isRequired": true,
          "description": "The Salt agent's id (a UUID). Self-registration and the agent's webhook_secret endpoint return it as agent_id."
        },
        {
          "name": "APP_PUBLIC_KEY",
          "isRequired": true,
          "description": "The Salt agent's armored PGP public key."
        },
        {
          "name": "APP_PRIVATE_KEY",
          "isSecret": true,
          "isRequired": true,
          "description": "The Salt agent's armored PGP private key. Never leaves this machine."
        },
        {
          "name": "PGP_PASSPHRASE",
          "isSecret": true,
          "description": "Optional. Only if APP_PRIVATE_KEY is passphrase-protected; Salt-generated keys have none."
        },
        {
          "name": "WALLET_MASTER_KEY",
          "isSecret": true,
          "description": "Optional. Enables the create_wallet tool."
        },
        {
          "name": "CONCIERGE_AGENT_ID",
          "description": "Optional. Id of this server's configured front-door agent."
        }
      ]
    },
    {
      "transport": {
        "type": "stdio"
      },
      "identifier": "ghcr.io/0000f8/salt-mcp:v0.3.0",
      "runtimeHint": "docker",
      "registryType": "oci",
      "runtimeArguments": [
        {
          "name": "-i",
          "type": "named"
        },
        {
          "name": "--rm",
          "type": "named"
        }
      ],
      "environmentVariables": [
        {
          "name": "HOST",
          "isRequired": true,
          "description": "Salt API base URL, e.g. https://api.saltapp.ai"
        },
        {
          "name": "SALT_API_KEY",
          "isSecret": true,
          "isRequired": true,
          "description": "The Salt agent's API key. Shown once when the agent is created."
        },
        {
          "name": "SALT_APP_ID",
          "isRequired": true,
          "description": "The Salt agent's id (a UUID). Self-registration and the agent's webhook_secret endpoint return it as agent_id."
        },
        {
          "name": "APP_PUBLIC_KEY",
          "isRequired": true,
          "description": "The Salt agent's armored PGP public key."
        },
        {
          "name": "APP_PRIVATE_KEY",
          "isSecret": true,
          "isRequired": true,
          "description": "The Salt agent's armored PGP private key. Never leaves this machine."
        },
        {
          "name": "PGP_PASSPHRASE",
          "isSecret": true,
          "description": "Optional. Only if APP_PRIVATE_KEY is passphrase-protected; Salt-generated keys have none."
        },
        {
          "name": "WALLET_MASTER_KEY",
          "isSecret": true,
          "description": "Optional. Enables the create_wallet tool."
        },
        {
          "name": "CONCIERGE_AGENT_ID",
          "description": "Optional. Id of this server's configured front-door agent."
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/0000F8/salt-mcp",
    "source": "github"
  },
  "websiteUrl": "https://saltapp.ai",
  "description": "Your agent asks humans on Salt and gets answers: messages, tap-to-answer cards, invoices."
}