Skip to content

Commit aa548d9

Browse files
AzymAzym
authored andcommitted
docs(sdk): document the GET /api/posts ordering change
The webapp now orders posts by COALESCE(published_at, scheduled_at, created_at) DESC, id DESC rather than created_at alone -- a post drafted weeks before it published was sorting by when it was written, burying it in its own Published listing. No field changed, but the ordering is observable behaviour that consumers page through, so it is stated at every surface: spec, public spec copy, Postman, node + python list methods, and the list_posts MCP tool description. node 1.8.0 -> 1.8.1, python 0.9.0 -> 0.9.1, mcp-server 1.12.1 -> 1.12.2.
1 parent 35eede3 commit aa548d9

9 files changed

Lines changed: 22 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## 2026-08-01 — `GET /api/posts` ordering (node SDK 1.8.1, python SDK 0.9.1, MCP 1.12.2)
4+
5+
### Changed
6+
7+
- **`GET /api/posts` is ordered by the timestamp that applies to each post**, newest first: `publishedAt` if the post is live, else `scheduledAt` if it is due, else `createdAt`, with `id` descending as a tiebreaker. It previously ordered by `createdAt` alone, so a post drafted weeks before it published sorted among the day it was *written* rather than the day it went live — on a real account a post published today sat 92 rows down its own Published listing. Drafts and scheduled posts are unaffected in practice, since their applicable timestamp is the one they were already sorted by. Documented in the spec, the Postman collection, both SDK list methods, and the `list_posts` MCP tool. No request or response field changed.
8+
39
## 2026-08-01 — tool descriptions no longer steer the host model (MCP 1.12.1)
410

511
Raised by the Anthropic MCP Directory review.

mcp-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@bulkpublish/mcp-server",
3-
"version": "1.12.1",
3+
"version": "1.12.2",
44
"description": "Model Context Protocol server for BulkPublish — lets AI assistants manage social media posts, channels, media, and analytics.",
55
"mcpName": "io.github.azeemkafridi/bulkpublish",
66
"repository": {

mcp-server/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,7 @@ server.tool(
755755

756756
server.tool(
757757
"list_posts",
758-
"List posts with optional filters for status, search text, date range, channel, and label. Returns paginated results with platform statuses and metrics.",
758+
"List posts with optional filters for status, search text, date range, channel, and label. Returns paginated results with platform statuses and metrics, ordered newest-first by publishedAt if the post is live, else scheduledAt, else createdAt.",
759759
{
760760
status: z
761761
.enum(["draft", "scheduled", "publishing", "published", "processing", "failed", "partial"])

node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bulkpublish",
3-
"version": "1.8.0",
3+
"version": "1.8.1",
44
"description": "Social media automation API for AI agents, LLMs, and developers. Publish to 11 platforms programmatically.",
55
"author": "BulkPublish",
66
"license": "MIT",

node/src/posts.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ export class PostsResource {
4343
/**
4444
* List posts with pagination and filters.
4545
*
46+
* Ordered newest-first by the timestamp that applies to each post:
47+
* `publishedAt` if it is live, else `scheduledAt` if it is due, else
48+
* `createdAt`. A post drafted weeks before it publishes sorts by when it went
49+
* live, not when it was written.
50+
*
4651
* @param params - Filtering and pagination options.
4752
* @returns Paginated list of posts with relations.
4853
*

openapi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@
840840
"Posts"
841841
],
842842
"summary": "List posts",
843-
"description": "Retrieve posts with pagination, filtering, and search.",
843+
"description": "Retrieve posts with pagination, filtering, and search. Results are ordered newest-first by the timestamp that applies to each post — publishedAt if it is live, else scheduledAt if it is due, else createdAt — with id descending as a tiebreaker. A post written weeks before it publishes therefore sorts by when it went live, not when it was drafted.",
844844
"parameters": [
845845
{
846846
"name": "page",

postman-collection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"request": {
1111
"name": "List posts",
1212
"description": {
13-
"content": "Retrieve posts with pagination, filtering, and search.",
13+
"content": "Retrieve posts with pagination, filtering, and search. Results are ordered newest-first by the timestamp that applies to each post — publishedAt if it is live, else scheduledAt if it is due, else createdAt — with id descending as a tiebreaker. A post written weeks before it publishes therefore sorts by when it went live, not when it was drafted.",
1414
"type": "text/plain"
1515
},
1616
"url": {

python/bulkpublish/posts.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ def list(
5050
) -> PostList:
5151
"""List posts with optional filtering and pagination.
5252
53+
Ordered newest-first by the timestamp that applies to each post:
54+
``published_at`` if it is live, else ``scheduled_at`` if it is due, else
55+
``created_at``. A post drafted weeks before it publishes sorts by when it
56+
went live, not when it was written.
57+
5358
Args:
5459
status: Filter by status (``"draft"``, ``"scheduled"``,
5560
``"published"``, ``"failed"``).

python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "bulkpublish"
7-
version = "0.9.0"
7+
version = "0.9.1"
88
description = "Social media automation API for AI agents, LLMs, and developers. Publish to 11 platforms programmatically."
99
readme = "README.md"
1010
license = "MIT"

0 commit comments

Comments
 (0)