[{"type":"function","name":"listPosts","description":"GET /api/posts. Returns every published post on the site, newest first. Use it to build indexes, feeds, or to resolve the slug of an article before requesting its Markdown.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"listBookmarks","description":"GET /api/bookmarks. Without parameters, returns every bookmark across all public collections (cached upstream for two days). With `collection`, returns one whitelisted collection, 50 items per page.","parameters":{"type":"object","properties":{"query":{"type":"object","properties":{"collection":{"type":"string","pattern":"^[0-9]+$","description":"Whitelisted public collection id (numeric). Non-whitelisted ids are rejected with 400."},"page":{"type":"integer","minimum":0,"maximum":200,"default":0,"description":"Zero-based page index. Only meaningful together with `collection`."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"listVisualMedia","description":"GET /api/visual/list. Returns photographs and AI-generated media published in the Visual gallery, newest first. Read-only.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"incrementViewCount","description":"POST /api/increment-views. Increments the view counter for an existing published article; unknown slugs return 404. Limited to 60 requests per trusted client IP per 10 minutes, shared with writing-page views; excess API requests return 429. Within an instance, page-triggered views are deduplicated per visitor/article for 10 minutes. Unavailable in development environments.","parameters":{"type":"object","properties":{"query":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"description":"Page slug to increment, 1–200 characters (letters, digits, CJK, space, dash, underscore, dot)."}},"required":["slug"],"additionalProperties":false}},"required":["query"],"additionalProperties":false},"strict":false},{"type":"function","name":"submitBookmark","description":"POST /api/submit-bookmark. Submits a link suggestion for the owner to review. Rate limited to 5 requests per IP per 10 minutes. Automated agents are rejected with 403 — this endpoint serves the human form on the site.","parameters":{"type":"object","properties":{"body":{"type":"object","required":["url","email"],"properties":{"url":{"type":"string","format":"uri","description":"URL being suggested."},"email":{"type":"string","format":"email","description":"Contact email of the submitter."},"type":{"type":"string","description":"Suggested category.","examples":["Other","Design","AI"]}}}},"required":["body"],"additionalProperties":false},"strict":false},{"type":"function","name":"createMusing","description":"POST /api/musings. Creates a short musing by opening a GitHub issue in the backing repository. Requires the shared verification code within `body`; requests without it receive 401. Reserved for the site owner’s publishing tooling.","parameters":{"type":"object","properties":{"body":{"type":"object","required":["body"],"properties":{"body":{"type":"string","description":"Musing text. Must end with the owner’s private verification code."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels applied to the created issue.","default":["Public"]}}}},"required":["body"],"additionalProperties":false},"strict":false},{"type":"function","name":"getWritingFeed","description":"GET /writing.xml. RSS 2.0 feed of the Writing section.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"getBookmarksFeed","description":"GET /bookmarks.xml. RSS 2.0 feed of the Bookmarks section.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"getSitemap","description":"GET /sitemap.xml. Every indexable URL on the site, with last-modified dates when reliably available.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"getLlmsTxt","description":"GET /llms.txt. Plain-text guide for agents: what the site is, when to use it, which resources exist, and how to request Markdown.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"getFunctionTools","description":"GET /tools.json. Returns OpenAI Responses API function definitions generated from this OpenAPI document. Clients execute the HTTP requests; endpoint access restrictions still apply.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"getOpenApiSpec","description":"GET /openapi.json. Returns this OpenAPI document.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"getApiIndex","description":"GET /api. Returns the supported version and canonical documentation links.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"listPostsV1","description":"GET /api/v1/posts. Returns every published post on the site, newest first. Use it to build indexes, feeds, or to resolve the slug of an article before requesting its Markdown.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"listBookmarksV1","description":"GET /api/v1/bookmarks. Without parameters, returns every bookmark across all public collections (cached upstream for two days). With `collection`, returns one whitelisted collection, 50 items per page.","parameters":{"type":"object","properties":{"query":{"type":"object","properties":{"collection":{"type":"string","pattern":"^[0-9]+$","description":"Whitelisted public collection id (numeric). Non-whitelisted ids are rejected with 400."},"page":{"type":"integer","minimum":0,"maximum":200,"default":0,"description":"Zero-based page index. Only meaningful together with `collection`."}},"required":[],"additionalProperties":false}},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"listVisualMediaV1","description":"GET /api/v1/visual/list. Returns photographs and AI-generated media published in the Visual gallery, newest first. Read-only.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false},{"type":"function","name":"incrementViewCountV1","description":"POST /api/v1/increment-views. Increments the view counter for an existing published article; unknown slugs return 404. Limited to 60 requests per trusted client IP per 10 minutes, shared with writing-page views; excess API requests return 429. Within an instance, page-triggered views are deduplicated per visitor/article for 10 minutes. Unavailable in development environments.","parameters":{"type":"object","properties":{"query":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"description":"Page slug to increment, 1–200 characters (letters, digits, CJK, space, dash, underscore, dot)."}},"required":["slug"],"additionalProperties":false}},"required":["query"],"additionalProperties":false},"strict":false},{"type":"function","name":"submitBookmarkV1","description":"POST /api/v1/submit-bookmark. Submits a link suggestion for the owner to review. Rate limited to 5 requests per IP per 10 minutes. Automated agents are rejected with 403 — this endpoint serves the human form on the site.","parameters":{"type":"object","properties":{"body":{"type":"object","required":["url","email"],"properties":{"url":{"type":"string","format":"uri","description":"URL being suggested."},"email":{"type":"string","format":"email","description":"Contact email of the submitter."},"type":{"type":"string","description":"Suggested category.","examples":["Other","Design","AI"]}}}},"required":["body"],"additionalProperties":false},"strict":false},{"type":"function","name":"createMusingV1","description":"POST /api/v1/musings. Creates a short musing by opening a GitHub issue in the backing repository. Requires the shared verification code within `body`; requests without it receive 401. Reserved for the site owner’s publishing tooling.","parameters":{"type":"object","properties":{"body":{"type":"object","required":["body"],"properties":{"body":{"type":"string","description":"Musing text. Must end with the owner’s private verification code."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels applied to the created issue.","default":["Public"]}}}},"required":["body"],"additionalProperties":false},"strict":false},{"type":"function","name":"getApiIndexV1","description":"GET /api/v1. Returns the supported version and canonical documentation links.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false},"strict":false}]