# auth.md

Steuern Mallorca Expats exposes public read endpoints for AI crawlers, search engines, citation agents and developer tools. Read-only discovery, Markdown, GraphRAG and dataset endpoints do not require login. Protected write or ingest endpoints are described through the OAuth discovery documents below.

Primary content language is German (de-DE). Agent-facing protocol metadata and authentication documentation are published in English.

## Public endpoints

- /llms.txt
- /llms.json
- /skill.md
- /.well-known/agent-skill.md
- /.well-known/agent-skills/index.json
- /.well-known/api-catalog
- /.well-known/openapi.json
- /.well-known/mcp/server-card.json
- /api/markdown
- /api/graphrag
- /mcp
- /datasets

## OAuth discovery

- Authorization server metadata: https://steuern.mallorca-expats.de/.well-known/oauth-authorization-server
- OpenID configuration alias: https://steuern.mallorca-expats.de/.well-known/openid-configuration
- Protected resource metadata: https://steuern.mallorca-expats.de/.well-known/oauth-protected-resource
- JWKS: https://steuern.mallorca-expats.de/.well-known/jwks.json

## Agent registration

- Register URI: https://steuern.mallorca-expats.de/agent/auth/register/
- Supported identity types: anonymous, verified_email, identity_assertion
- Supported credential types: bearer_token
- Scopes: tax.read, tax.datasets.read, tax.graphrag.read, tax.research.ingest
- Bearer method: header

## Protected resource

```json
{
  "resource": "https://steuern.mallorca-expats.de",
  "language": {
    "primary_content_language": "de-DE",
    "canonical_human_language": "de-DE",
    "machine_metadata_language": "en",
    "available_languages": [
      "de-DE",
      "en"
    ],
    "human_page_policy": "German canonical human pages; English machine discovery, summary and field metadata."
  },
  "authorization_servers": [
    "https://steuern.mallorca-expats.de"
  ],
  "scopes_supported": [
    "tax.read",
    "tax.datasets.read",
    "tax.graphrag.read",
    "tax.research.ingest"
  ],
  "bearer_methods_supported": [
    "header"
  ],
  "resource_documentation": "https://steuern.mallorca-expats.de/auth.md"
}
```

## Authorization server

```json
{
  "issuer": "https://steuern.mallorca-expats.de",
  "language": {
    "primary_content_language": "de-DE",
    "canonical_human_language": "de-DE",
    "machine_metadata_language": "en",
    "available_languages": [
      "de-DE",
      "en"
    ],
    "human_page_policy": "German canonical human pages; English machine discovery, summary and field metadata."
  },
  "authorization_endpoint": "https://steuern.mallorca-expats.de/agent/auth/authorize/",
  "token_endpoint": "https://steuern.mallorca-expats.de/oauth2/token/",
  "revocation_endpoint": "https://steuern.mallorca-expats.de/oauth2/revoke/",
  "jwks_uri": "https://steuern.mallorca-expats.de/.well-known/jwks.json",
  "registration_endpoint": "https://steuern.mallorca-expats.de/agent/auth/register/",
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code",
    "client_credentials",
    "urn:ietf:params:oauth:grant-type:jwt-bearer",
    "urn:workos:agent-auth:grant-type:claim"
  ],
  "token_endpoint_auth_methods_supported": [
    "client_secret_basic",
    "client_secret_post",
    "none"
  ],
  "scopes_supported": [
    "tax.read",
    "tax.datasets.read",
    "tax.graphrag.read",
    "tax.research.ingest"
  ],
  "code_challenge_methods_supported": [
    "S256"
  ],
  "service_documentation": "https://steuern.mallorca-expats.de/auth.md",
  "agent_auth": {
    "language": {
      "primary_content_language": "de-DE",
      "canonical_human_language": "de-DE",
      "machine_metadata_language": "en",
      "available_languages": [
        "de-DE",
        "en"
      ],
      "human_page_policy": "German canonical human pages; English machine discovery, summary and field metadata."
    },
    "skill": "https://steuern.mallorca-expats.de/auth.md",
    "register_uri": "https://steuern.mallorca-expats.de/agent/auth/register/",
    "identity_endpoint": "https://steuern.mallorca-expats.de/agent/identity/",
    "claim_endpoint": "https://steuern.mallorca-expats.de/agent/identity/claim/",
    "claim_uri": "https://steuern.mallorca-expats.de/agent/identity/claim/",
    "events_endpoint": "https://steuern.mallorca-expats.de/agent/event/notify/",
    "identity_types_supported": [
      "anonymous",
      "verified_email",
      "identity_assertion"
    ],
    "credential_types_supported": [
      "bearer_token"
    ],
    "anonymous": {
      "credential_types_supported": [
        "bearer_token"
      ],
      "claim_uri": "https://steuern.mallorca-expats.de/agent/auth/claims/"
    },
    "verified_email": {
      "credential_types_supported": [
        "bearer_token"
      ],
      "claim_uri": "https://steuern.mallorca-expats.de/agent/auth/claims/",
      "assertion_types_supported": [
        "verified_email"
      ]
    },
    "identity_assertion": {
      "credential_types_supported": [
        "bearer_token"
      ],
      "assertion_types_supported": [
        "urn:ietf:params:oauth:token-type:id-jag"
      ]
    },
    "revocation_uri": "https://steuern.mallorca-expats.de/oauth2/revoke/",
    "events_supported": [
      "credential.revoked",
      "https://schemas.workos.com/events/agent/auth/identity/assertion/revoked"
    ]
  }
}
```

## MCP

The MCP endpoint https://steuern.mallorca-expats.de/mcp/ is a public JSON-RPC endpoint for read access to Steuern Mallorca Expats. It exposes tools for GraphRAG search, Markdown pages and datasets, plus resources for llms.txt, llms.json, skill.md and dataset indexes.

## Usage

Content may be used for search, AI input and citation agents when Steuern Mallorca Expats is named as the source and claims are not detached from their context.
