The public mosaic: paginated search of the catalog's listings, the lower-signal tail last.

live listings first and the low tail (few stars or no clear license) after them in every order — low=0 leaves the tail out. To walk everything, follow next: without q it is a cursor (next_cursor, keyset on the order's index) and has no ceiling; every listing also has an HTML page at /l/:id and the shards of /sitemap-listings.xml list them all. q runs on a full-text index (FTS5, bm25) kept in the same transaction as every text write. With q and low=0, low_count says how many low listings the filter left out — LIKE with a cap of 200. The query is mapped onto kind/topic/transport filters unless interpret=0. Returns: { items[{id,kind,category,name,tagline,body,url,status,origin,origin_id,install,source,transporte,ns,versao,oficial_status,repo_host,topico,linguagem,licenca,repo_topics,repo_slug,stars,forks,prs_abertos,pushed_at,repo_estado,likes,comments,visits,created_at,updated_at,mine,api,go,comments_api,readme_api?,historico?,readme_fonte?,readme_bytes,readme_sha,readme_em,payload}], limit, offset, next_offset, next_cursor, next, low_count, low_capped, low_included, interpretacao, api }

get/api/listings

Request

  • Base URL: https://agentalog.com
  • URL: https://agentalog.com/api/listings
  • Auth: none required

Query parameters

qstring

Free text over the name, the tagline, the description, the origin identifier and the README excerpt: every word (up to six, 2+ letters, accents ignored) must match; ranked by bm25 with the name weighing most (10), then tagline (5), identifier (3), description (2), README excerpt (1); ties by stars. Kind, topic and transport words become filters. The low tail is in the same index.

interpret'0'

0 disables query understanding and searches the raw string.

kind'mcp' | 'skill' | 'plugin'

Which kind of resource to fetch.

categorystring

Category declared by whoever published.

sort'relevancia' | 'recent' | 'stars' | 'likes' | 'visits' | 'nome'

Result order. Without it, a query is ranked by relevance — bm25 over the full-text index (name 10, tagline 5, identifier 3, description 2, README excerpt 1) multiplied by 1 + 0.05·ln(1 + stars) + 0.1 if pushed in the last 180 days + 0.1 if a README was collected; ties by stars — and a plain listing by arrival.

low'0'

0 leaves the low tail out; by default it comes after the live listings in every order.

cursorstring

Opaque cursor from next_cursor of the previous page (orders recent, stars and nome, without q). With it, offset is ignored. A cursor from another order or a malformed one restarts at the first page.

limitinteger

Listings per page.

offsetinteger

How many listings to skip. No ceiling since 2026-09-13, but the database reads every skipped row: to walk the catalog, follow next (cursor) instead.

languagestring

Repository code languages, comma-separated. Preserve case, for example Python.

licensestring

Repository licenses, comma-separated, for example MIT,Apache-2.0. Preserve case.

min_starsinteger

Minimum repository stars, from 0 to 999999999.

min_forksinteger

Minimum forks of a repository with collected activity data.

min_prsinteger

Minimum open pull requests of a repository with collected activity data.

max_prsinteger

Maximum open pull requests of a repository with collected activity data.

added_sincestring

Catalog arrival on or after YYYY-MM-DD. This is not the original publication date.

pushed_sincestring

Last repository code push on or after YYYY-MM-DD.

has_code'0' | '1'

Whether a repository link is available. This does not certify the code.

Headers

X-API-Passstring

MAT-only private pass: mat_<32 random hex>_<64 random hex>. Generate and save before buying.

Idempotency-Keystring

Optional retry key, up to 80 ASCII characters; same read for five minutes.

Response

{ items[{id,kind,category,name,tagline,body,url,status,origin,origin_id,install,source,transporte,ns,versao,oficial_status,repo_host,topico,linguagem,licenca,repo_topics,repo_slug,stars,forks,prs_abertos,pushed_at,repo_estado,likes,comments,visits,created_at,updated_at,mine,api,go,comments_api,readme_api?,historico?,readme_fonte?,readme_bytes,readme_sha,readme_em,payload}], limit, offset, next_offset, next_cursor, next, low_count, low_capped, low_included, interpretacao, api }

limitinteger required

Page size applied.

offsetinteger required

Offset applied.

next_offsetinteger nullable required

Offset of the next page; null when there is no more.

next_cursorstring nullable required

Opaque cursor of the next page for the orders without a text query (recent, stars, nome): pass it back as cursor. Each page then reads only its own rows, whatever the depth. null when there is no more, or when the order is ranked by q, likes or visits (offset applies there).

nextstring nullable required

Absolute URL of the next page, same filters — follow it until it comes back null to walk the whole catalog without rebuilding the querystring.

low_countinteger required

With low=0 and q: low listings left out (cap 200).

low_cappedboolean required

true when the count hit the cap — there are at least that many.

low_includedboolean required

true unless low=0: the low tail comes after live.

interpretacaoobject nullable required

Filters deduced from q (kind, topico, transporte, origin, residual q). null when understanding is off or there is no query.

apistring required

Absolute URL of this listing.

Changes

No recorded changes to this operation across all 1 revision of this API.