---
title: "Developer Resources — Liran Tal"
description: "API documentation, quickstarts, OpenAPI specification, SDK source, and integration guidance for public Liran Tal website resources."
canonical: "https://lirantal.com/developers"
---

# Developer Resources — Liran Tal

## Quickstart

Fetch the published post index with any HTTP client:

```
curl -fsS https://lirantal.com/api/posts.json
```

Each item includes its title, description, tags, canonical page URL, and Markdown URL.

```
const response = await fetch('https://lirantal.com/api/posts.json');
const { items } = await response.json();
const terms = 'MCP security'.toLowerCase().split(/\s+/);
const matches = items.filter((post) => {
  const text = [post.title, post.description, post.category, ...post.tags]
    .filter(Boolean).join(' ').toLowerCase();
  return terms.every((term) => text.includes(term));
});
```

## API endpoints

`GET /api/posts.json`

The complete published-post metadata collection.

`GET /api/posts/cursor/0.json`

A page of up to 50 items. Follow `nextCursor` at `/api/posts/cursor/{cursor}.json` until it is null.

`GET /openapi.json`

OpenAPI 3.1 description of the public HTTP resources.

`GET /rss.xml`

RSS feed for new articles.

All endpoints are read-only and unauthenticated. There are no API keys, sandbox environment, user accounts, or write operations. The post endpoint returns metadata; clients perform search locally.

## Article formats and SDK

Use an item's `markdownUrl` to fetch the full article. HTML article pages also advertise their Markdown alternate, and production supports `Accept: text/markdown`.

A dependency-free JavaScript client is available in the [repository SDK source](https://github.com/lirantal/lirantaldotcom/tree/main/packages/site-sdk). The package is not currently published to npm.

The site does not operate a remote MCP server. Browser agents can use the read-only `search_blog_posts` WebMCP tool on the [blog directory](/writing) when supported.

## Frequently asked questions

Do the website APIs require an API key?

No. The published blog metadata and pagination endpoints are public, unauthenticated GET resources.

Can I search posts on the server?

No. Fetch the post metadata and filter titles, descriptions, categories, and tags locally. The browser blog search exposes the same read-only behavior through WebMCP when supported.

Is there a sandbox or write API?

No. The site provides public read-only content, so there is no sandbox, API key flow, or write endpoint.

How do I retrieve the full text of an article?

Each post record includes a markdownUrl. Fetch that URL for the article text, or request the article URL with Accept: text/markdown.

```json
[{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Do the website APIs require an API key?","acceptedAnswer":{"@type":"Answer","text":"No. The published blog metadata and pagination endpoints are public, unauthenticated GET resources."}},{"@type":"Question","name":"Can I search posts on the server?","acceptedAnswer":{"@type":"Answer","text":"No. Fetch the post metadata and filter titles, descriptions, categories, and tags locally. The browser blog search exposes the same read-only behavior through WebMCP when supported."}},{"@type":"Question","name":"Is there a sandbox or write API?","acceptedAnswer":{"@type":"Answer","text":"No. The site provides public read-only content, so there is no sandbox, API key flow, or write endpoint."}},{"@type":"Question","name":"How do I retrieve the full text of an article?","acceptedAnswer":{"@type":"Answer","text":"Each post record includes a markdownUrl. Fetch that URL for the article text, or request the article URL with Accept: text/markdown."}}]},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://lirantal.com"},{"@type":"ListItem","position":2,"name":"Developers","item":"https://lirantal.com/developers"}]}]
```
