Digitalyser.io for developers
Guides

Quickstart

From nothing to a first authenticated call. Start with the parts that need no credential.

Pick the path that matches what you are building. Both start with calls you can make right now, without an account.

Step 1 — Prove the endpoint is there

Protocol discovery is public. These two calls need no credential and tell you everything a client needs to authorise itself.

curl https://app.digitalyser.io/.well-known/oauth-protected-resource/api/mcp
{
  "resource": "https://app.digitalyser.io/api/mcp",
  "authorization_servers": ["https://app.digitalyser.io"]
}
curl https://app.digitalyser.io/.well-known/oauth-authorization-server
{
  "authorization_endpoint": "https://app.digitalyser.io/api/agent/oauth/authorize",
  "token_endpoint": "https://app.digitalyser.io/api/agent/oauth/token",
  "code_challenge_methods_supported": ["S256"]
}

Step 2 — See what a refusal looks like

Call the endpoint with a credential it cannot recognise. This is worth doing on purpose: the refusal is the most informative response the API produces, and your client should handle it.

curl -i -X POST https://app.digitalyser.io/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Authorization: Bearer not-a-real-token' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"quickstart","version":"1"}}}'

You get 401 with a WWW-Authenticate header pointing back at the resource metadata from step 1. That header is the whole handshake: a conforming client reads it and starts the authorisation flow without being told where to go.

Step 3 — Connect for real

Nothing to copy. Your client discovers the server, registers itself, and sends you to a consent screen where you pick one project and tick what the agent may do.

claude mcp add --transport http digitalyser https://app.digitalyser.io/api/mcp

Full walkthrough: Connect Claude.

What comes next

On this page