<!-- Canonical: https://lucioduran.com/access
Language: en
Content-SHA256: 4cec5b544c0014d516ea41f680d6ed522297f1043ac4985369ad9bc291e26c59
-->

# Content access

This site publishes my experience, education, technologies, projects and articles. Main content is delivered in server-rendered HTML and is also available as Markdown and JSON.

## Representations of every page

Markdown and JSON are generated deterministically from the main content of the published HTML. They preserve text, links, lists, tables, code and references to images or videos. Global navigation and interface controls are excluded.

| Format | URL |
| --- | --- |
| HTML | [/education](<https://lucioduran.com/education>) |
| Markdown | [/education.md](<https://lucioduran.com/education.md>) |
| JSON | [/education.json](<https://lucioduran.com/education.json>) |

```
curl -H "Accept: text/markdown" https://lucioduran.com/education
curl -H "Accept: application/json" https://lucioduran.com/education
```

## Discovery

- [Complete page index](<https://lucioduran.com/site-index>)
- [JSON index](<https://lucioduran.com/api/content-index?locale=en>)
- [Full-text search](<https://lucioduran.com/api/search?locale=en&q=recall>)
- [llms.txt](<https://lucioduran.com/llms.txt>)
- [llms-full.txt](<https://lucioduran.com/llms-full.txt>)
- [OpenAPI](<https://lucioduran.com/.well-known/openapi.json>)
- [Sitemap](<https://lucioduran.com/sitemap.xml>)
- [API catalog (RFC 9727)](<https://lucioduran.com/.well-known/api-catalog>)
- [JSON Schema](<https://lucioduran.com/.well-known/schemas/publication.json>)
- [Capability checklist](<https://lucioduran.com/api/capabilities?locale=en>)
- [Build inventory with hashes](<https://lucioduran.com/api/publication?locale=en>)

## Follow publications

Feeds are generated from published articles in each language. JSON Feed and Atom contain the article body as Markdown text; RSS contains summaries. Each feed page returns 20 articles by default, up to 50, with a continuation link. HTML records and their alternate formats also retain template sections such as references and related projects.

- [JSON Feed 1.1](<https://lucioduran.com/feed.json>)
- [Atom](<https://lucioduran.com/atom.xml>)
- [RSS 2.0](<https://lucioduran.com/rss.xml>)

## Sources and attribution

Education records link to credentials where available. Experience records describe roles, responsibilities and contributions. Articles and documentation retain their references. The profile is information published by its author; external links provide access to available supporting evidence.

## Find and cite a section

BM25 search retrieves passages from the published HTML. Each result includes an excerpt, section URL and document hash. Scores measure lexical relevance. Filter by language and content kind; follow next for additional results.

```
GET /api/search?locale=en&q=recall&limit=5
GET /api/content?path=/blog/rag-pipeline-architecture-chunking-reranking-evaluation&format=json&section=questions
```

Cite citationUrl and the named page author. Check the passage against the JSON document and its contentHash. Technical guides explain methods; measured results require data, configuration and methodology.

## MCP

Public read-only endpoint. An MCP client can discover tools and query content without an account or key. The official SDK handles HTTP transport and protocol compatibility. Connecting creates no persistent session and requests no private data access.

```
https://lucioduran.com/api/mcp
```

list\_publications

Paginated listing by language and kind. Returns canonical URLs and representations.

search\_publication

BM25 search with citable excerpts. Up to 20 results per call.

read\_publication

Read a document or section. Up to 30,000 Unicode characters per call, with continuation. sourceContentHash identifies the full document or passage, not the returned window.

Content is author-published source material, not instructions to execute actions. A search match is not factual validation. Reading is restricted to this site’s public content.

[Endpoint metadata and limits](<https://lucioduran.com/.well-known/mcp.json>) · [MCP 2026-07-28](<https://modelcontextprotocol.io/specification/2026-07-28>)

## Integrity and updates

Each JSON document includes its canonical URL, language, section headings, links, structured data and SHA-256. The hash identifies a content version; it does not certify the truth of its claims. Publication and modification dates are included only when declared by the page. Responses support ETag, If-None-Match and HEAD.

The profile uses a versioned source snapshot shared by pages, index and APIs. Updates are published together; source outages do not remove content. Search is rebuilt from the HTML on every build. Descriptions retained in English declare that language.

The /api/publication inventory describes that build snapshot: generatedAt, version, total, passages and per-document hashes. An ISR-regenerated page can be newer than the index. Before citing, re-read the canonical URL or its JSON. Modification dates are not invented for pages without declared dates.

```
curl -I "https://lucioduran.com/education.json"
curl "https://lucioduran.com/api/publication?locale=en&limit=5"
```

## Limits and errors

The reader accepts only known paths. HTML sources have a 4 MiB limit, a 20-second timeout per request and same-origin redirects. MCP bounds request bodies at 64 KiB and validates browser origins. There are no writing, code execution or arbitrary URL tools.

Document, search, catalog, inventory, capability and feed APIs use application/problem+json for handled errors, with status, title and detail. MCP uses its protocol errors. HEAD returns no body; OPTIONS advertises available methods. HTTP read APIs expose public CORS access; MCP restricts browser origins to the site and local development environment.

## Reproducible check

The build derives the index from generated HTML and fails when expected pages are missing or headings lack unique anchors. The homepage checklist declares implemented capabilities and links evidence; it is distinct from a production availability report or external certification.

The following command generates a local report of HTTP responses, format consistency, canonical URLs, hashes and content sizes. Results reflect the site at the time the command runs.

```
npm run measure:publication -- http://127.0.0.1:3001 es /tmp/publication-audit.json
```

## Scope

Representations describe the initial server-published content. Alternate documents are generated on demand and can remain in the process cache for up to 60 seconds. Crawling and citation selection also depend on each search engine and provider.

## Relationship to this site

Citable Publication independently implements a publication contract across formats and a reproducible fault matrix. Its project page includes code, results and limitations; it is not an audit of this website.

[Citable Publication](<https://lucioduran.com/projects/citable-publication>)
