# Auth.md

> Agent registration metadata for fikanova.com.
> Public read-only. Credentials attribute correspondence and access.
> Operator contact: <mailto:nya.onmoseti@gmail.com>.

## Agent registration

fikanova.com publishes public metadata and API services for AI agents.
No discovery endpoint requires a credential and public information is accessible without authentication.
Credentials (such as API keys or bearer tokens) attribute correspondence and enable programmatic API operations.
This document describes how an autonomous agent or operator can register an agent identity, request metadata corrections, claim an existing identifier, or revoke prior credentials.

Both roles live on one host. The resource server is
https://fikanova.com and the authorization server is
https://fikanova.com.

## Discovery

Read these documents in order:

- Fetch https://fikanova.com/.well-known/oauth-protected-resource and
  read resource, resource_name, authorization_servers,
  scopes_supported and bearer_methods_supported.
- Fetch https://fikanova.com/.well-known/oauth-authorization-server (or https://fikanova.com/.well-known/oauth-authorization-server/_emdash) and
  read issuer, endpoints, and the agent_auth block: skill, register_uri, claim_uri,
  revocation_uri, identity_types_supported, and
  identity_assertion.assertion_types_supported.
- Fetch https://fikanova.com/.well-known/api-catalog for the RFC 9727 API catalog.
- Fetch https://fikanova.com/openapi.json for OpenAPI 3.1 definitions and Machine Payment Protocol (MPP) specs.
- Fetch https://fikanova.com/.well-known/mcp/server-card.json for the SEP-1649 MCP Server Card.

There is no WWW-Authenticate hop required for discovery. Public discovery documents are accessible directly with HTTP 200 so an OAuth-aware agent can find the identity surface without guessing. Protected API endpoints accept Bearer tokens in the Authorization header (`Authorization: Bearer <token>`).

## Scopes

- `content:read`: Read collections (posts, pages, portfolio, services, leads).
- `content:write`: Create, update, and manage collection entries.
- `media:read`, `media:write`: Asset management and uploads.
- `settings:read`, `settings:manage`: System settings.
- `admin`: Full administrative control.
- `read`: Query public services, case studies, company information, and discovery manifests.
- `write`: Submit client inquiries and lead messages.
- `chat`: Interact with the Fikanova AI conversational assistant.
- `leads`: Operational leads lifecycle management.
- `commerce`: Machine payments, quotes, and technical consultation bookings.

## Identity

- Operator: Fikanova Ltd. (Nairobi, Kenya)
- Domain: fikanova.com
- Contact: <mailto:nya.onmoseti@gmail.com>
- Website: https://fikanova.com
- Privacy Policy: https://fikanova.com/privacy
- Terms of Service: https://fikanova.com/terms

## Supported identity types

- `anonymous`: Ephemeral agent sessions for public queries, documentation exploration, and inquiry submission. An API key or ephemeral token can be issued on request.
- `identity_assertion`: Registered operator or workload identity, backed by a verified email or signed assertion (`urn:ietf:params:oauth:token-type:id-jag`, `verified_email`).

A credential attributes correspondence and enables rate-limited write/chat operations. Public discovery resources do not require a credential.

## Registration

Agents can register programmatically or out-of-band:
- OAuth 2.1 Dynamic Client Registration (RFC 7591): https://fikanova.com/_emdash/api/oauth/register
- Agent Identity Registration (Auth.md): https://fikanova.com/agent/auth/register
- Method: GET, POST
- Content-Type: application/json
- Email: <mailto:nya.onmoseti@gmail.com?subject=agent%20registration>

Payload / fields:
- `agent_identifier`: URI or identifier of the agent
- `software_name`: Agent software name and version
- `operator_legal_entity`: Legal entity or operator name
- `purpose`: Purpose of access (inquiry, consultation, integration, monitoring)
- `expected_request_rate_per_hour`: Anticipated request volume
- `public_contact`: Operator contact email or URI

Written confirmation or automated credential provisioning is returned within one business day.

## Claim

To claim an existing identifier or update operator bindings:
- Endpoint: https://fikanova.com/agent/auth/claim (or https://fikanova.com/oauth/claim)
- Method: GET, POST
- Email: <mailto:nya.onmoseti@gmail.com?subject=agent%20claim>

Include proof of control (such as a DNS TXT record, signed token assertion, or verified email).

## Revocation

To revoke credentials or request deletion of stored agent session records:
- Endpoint: https://fikanova.com/agent/auth/revoke (or https://fikanova.com/oauth/revoke)
- Method: GET, POST
- Email: <mailto:nya.onmoseti@gmail.com?subject=agent%20revocation>

Specify `agent_identifier` and `reason`.

## Endpoint responses

- GET and POST to registration, claim, and revocation endpoints return HTTP 200 with JSON describing the registration/claim/revocation process.
- OPTIONS returns HTTP 204 with CORS Allow headers.
- Token exchange is handled at https://fikanova.com/_emdash/api/oauth/token (aliased at https://fikanova.com/oauth/token).
- Authorization consent is handled at https://fikanova.com/_emdash/oauth/authorize (aliased at https://fikanova.com/oauth/authorize).

## Relation to the auth.md protocol

This implementation adheres to the Auth.md agent registration discovery specification and the conventions documented by isitagentready.com and RFC 9728 / RFC 8414. It specifies `register_uri`, `claim_uri`, and `revocation_uri` alongside supported identity types and credential types.
