# Agent access — Decentralized Finance Publication (DFR)

This document tells software agents how to reach the machine-readable surfaces
of <https://decentralized-finance.io>.

**Authentication is optional.** Every document this site returns is free,
ad-free public editorial content, so both agent endpoints answer anonymous
requests. Registering an OAuth client only identifies your agent and raises its
rate limit. There is no paywall, no account, and no approval queue.

## Start here — no code required

Everything below is a plain static file. Fetch it directly; no token, no
handshake.

| File | What it is |
| --- | --- |
| [`/llms.txt`](https://decentralized-finance.io/llms.txt) | Site summary, section map and usage guidance |
| [`/llms-full.txt`](https://decentralized-finance.io/llms-full.txt) | Selected article, guide and comparison index with summaries |
| [`/llm.txt`](https://decentralized-finance.io/llm.txt) | LLM content registry, rebuilt on each deploy |
| [`/ai/index.txt`](https://decentralized-finance.io/ai/index.txt) | Curated plain-text access to selected editorial content |
| [`/geo-chunks/manifest.json`](https://decentralized-finance.io/geo-chunks/manifest.json) | Passage index — answer-sized chunks with stable anchors |
| [`/aeo-chunks.json`](https://decentralized-finance.io/aeo-chunks.json) | Question/answer pairs extracted from the corpus |
| [`/rss.xml`](https://decentralized-finance.io/rss.xml) | News feed |
| [`/sitemap-index.xml`](https://decentralized-finance.io/sitemap-index.xml) | Every indexable URL |

Many editorial pages have a Markdown twin. Follow the HTML page’s advertised
alternate, or append `.md` to a supported page path without the trailing slash:

```bash
curl https://decentralized-finance.io/article/aave.md
curl https://decentralized-finance.io/glossary/impermanent-loss.md
curl https://decentralized-finance.io/compare/aave-vs-compound.md
```

Twins exist for `/article/`, `/compare/`, `/learn/`, `/glossary/`, `/token/`,
`/answers/`, `/leader/`, the four `/help/` articles and `/learn/paths/`, plus `/index.md` for the homepage. Each HTML page
also advertises its own twin in `<head>`:

```html
<link rel="alternate" type="text/markdown" href="https://decentralized-finance.io/article/aave.md">
```

Use the advertised `.md` URL for reliable full-text retrieval. Homepage
negotiation is available, but is not enabled on every route. A request to an
ordinary HTML URL with `Accept: text/markdown` may still return HTML.

## Interactive endpoints

| Endpoint | Protocol | Auth |
| --- | --- | --- |
| `https://decentralized-finance.io/api/mcp` | MCP, Streamable HTTP (JSON-RPC 2.0) | optional |
| `https://decentralized-finance.io/api/a2a` | A2A (JSON-RPC 2.0, `message/send`) | optional |

Connect an MCP client straight to `/api/mcp` with no credentials — it will
answer `initialize`, `tools/list` and `tools/call` immediately.

## Tool reference

[Generated tool documentation](https://decentralized-finance.io/agent-tools.md)
and the [versioned JSON contract](https://decentralized-finance.io/agent-tools.json)
are rebuilt from the same definitions used by the server. Search can filter
reader help, learning paths, tools and research as well as editorial articles.
Search and TVL results include structured JSON alongside text. Prefer a canonical
URL when calling `get_document`; ambiguous slugs return choices instead of
silently selecting a different page. A2A supports `read` followed by a canonical
URL for full-document access.

## Discovery

| Document | Purpose |
| --- | --- |
| [`/.well-known/api-catalog`](https://decentralized-finance.io/.well-known/api-catalog) | Endpoint index (RFC 9727) |
| [`/.well-known/mcp/server-card.json`](https://decentralized-finance.io/.well-known/mcp/server-card.json) | MCP server card (SEP-1649) |
| [`/.well-known/agent-card.json`](https://decentralized-finance.io/.well-known/agent-card.json) | A2A agent card |
| [`/.well-known/agent-skills/index.json`](https://decentralized-finance.io/.well-known/agent-skills/index.json) | Agent skills index |
| [`/.well-known/oauth-authorization-server`](https://decentralized-finance.io/.well-known/oauth-authorization-server) | Authorization server metadata (RFC 8414) |
| [`/.well-known/oauth-protected-resource`](https://decentralized-finance.io/.well-known/oauth-protected-resource) | Protected resource metadata (RFC 9728) |

The same relations are advertised as RFC 8288 `Link:` headers on every
response, so discovery can also start from a bare `HEAD /`.

## Optional — register for a higher rate limit

Anonymous callers share a modest per-IP budget. An identified client gets its
own. Registration is open and follows RFC 7591:

```bash
curl -X POST https://decentralized-finance.io/api/oauth/register \
  -H 'Content-Type: application/json' \
  -d '{"client_name":"My Research Agent"}'
```

That returns `client_id` and `client_secret`. Exchange them for a token:

```bash
curl -X POST https://decentralized-finance.io/api/oauth/token \
  -d grant_type=client_credentials \
  -d client_id=dfr_... \
  -d client_secret=... \
  -d scope=research:read
```

Tokens are HS256 JWTs valid for one hour. Cache and reuse them; request a new
one when you get a `401`. Send it as `Authorization: Bearer <token>`.

### Credential lifetime

Client credentials and tokens are derived from the deployment signing key
rather than a database. If the site is running without an `AGENT_SIGNING_SECRET`
configured, that key is bound to the deployment, so **credentials stop working
after the next deploy** — re-register and continue. This is safe precisely
because authorization is optional: a stale token never blocks access, it just
drops you back to the anonymous rate limit.

## Conditions of use

Original editorial content is published by Elite Digital AI Solutions Ltd under
**CC BY 4.0**. Attribute *Decentralized Finance Publication*, link the source and
[licence](https://creativecommons.org/licenses/by/4.0/), and indicate changes.
Third-party data, marks and quoted source material retain their own rights.
See [reuse and data access](https://decentralized-finance.io/help/reuse-and-data-access/).

Please send a descriptive `User-Agent` with a contact URL. Crawl preferences
are stated in [`/robots.txt`](https://decentralized-finance.io/robots.txt) using
Content Signals; `ai-train`, `ai-input` and `search` are all permitted.

Nothing here is financial advice. The TVL ranking is a build-time DeFiLlama
snapshot with `asOf`. Browser market widgets retrieve data when loaded and show
a retrieval time; upstream observations may be older. An editorial `updated`
date is not a price observation date. Cite the data’s own timestamp and
[limitations](https://decentralized-finance.io/help/data-freshness-and-limitations/).

Security contact: [`/.well-known/security.txt`](https://decentralized-finance.io/.well-known/security.txt).
