{"openapi":"3.1.0","info":{"title":"Micro blog (BYOK) API","version":"0.1.0","description":"Micro blog (BYOK) lets an AI assistant read your own Micro blog data through the Micro blog API with a key you supply (app token). Read-only: 11 tools (get_timeline, get_mentions, get_bookmarks, get_photo_timeline, get_media_timeline, get_discover, get_discover_collection, get_user_posts, get_conversation, get_my_replies, list_following). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-microblog.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-microblog/docs"},"termsOfService":"https://connectorbay.com/byok-microblog/terms"},"servers":[{"url":"https://byok-microblog.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-microblog/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_timeline":{"post":{"operationId":"get_timeline","summary":"List posts in your Micro.blog timeline (people you follow), newest first, with author, text (HTML) and date. Use for \"Wh","description":"List posts in your Micro.blog timeline (people you follow), newest first, with author, text (HTML) and date. Use for \"What is new on my Micro.blog timeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts newer than this post ID (IDs are 64-bit; pass as a number).","title":"Since Id"},"before_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this post ID (use for paging backwards).","title":"Before Id"}},"title":"get_timelineArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_mentions":{"post":{"operationId":"get_mentions","summary":"List posts that mention you, newest first. Use for \"Who mentioned me on Micro.blog\".","description":"List posts that mention you, newest first. Use for \"Who mentioned me on Micro.blog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts newer than this post ID (IDs are 64-bit; pass as a number).","title":"Since Id"},"before_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this post ID (use for paging backwards).","title":"Before Id"}},"title":"get_mentionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_bookmarks":{"post":{"operationId":"get_bookmarks","summary":"List posts you bookmarked on Micro.blog. Use for \"Which Micro.blog posts have I bookmarked\".","description":"List posts you bookmarked on Micro.blog. Use for \"Which Micro.blog posts have I bookmarked\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts newer than this post ID (IDs are 64-bit; pass as a number).","title":"Since Id"},"before_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this post ID (use for paging backwards).","title":"Before Id"}},"title":"get_bookmarksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_photo_timeline":{"post":{"operationId":"get_photo_timeline","summary":"List posts with photos in your timeline, newest first. Use for \"Show recent photos on my Micro.blog timeline\".","description":"List posts with photos in your timeline, newest first. Use for \"Show recent photos on my Micro.blog timeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts newer than this post ID (IDs are 64-bit; pass as a number).","title":"Since Id"},"before_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this post ID (use for paging backwards).","title":"Before Id"}},"title":"get_photo_timelineArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_media_timeline":{"post":{"operationId":"get_media_timeline","summary":"List posts with photos or videos in your timeline, newest first. Use for \"Show recent photos and videos on my Micro.blog","description":"List posts with photos or videos in your timeline, newest first. Use for \"Show recent photos and videos on my Micro.blog timeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts newer than this post ID (IDs are 64-bit; pass as a number).","title":"Since Id"},"before_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this post ID (use for paging backwards).","title":"Before Id"}},"title":"get_media_timelineArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_discover":{"post":{"operationId":"get_discover","summary":"List featured posts from Micro.blog's Discover page. Use for \"What are the featured posts on Micro.blog right now\".","description":"List featured posts from Micro.blog's Discover page. Use for \"What are the featured posts on Micro.blog right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"}},"title":"get_discoverArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_discover_collection":{"post":{"operationId":"get_discover_collection","summary":"List featured posts in one emoji collection of Discover, for example books or music. Use for \"Show Micro.blog Discover p","description":"List featured posts in one emoji collection of Discover, for example books or music. Use for \"Show Micro.blog Discover posts about books\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection":{"description":"Name of the Discover collection, for example 'books' or 'music'.","maxLength":200,"title":"Collection","type":"string"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"}},"required":["collection"],"title":"get_discover_collectionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_user_posts":{"post":{"operationId":"get_user_posts","summary":"List posts written by one Micro.blog user, newest first. Use for \"What has manton posted on Micro.blog\".","description":"List posts written by one Micro.blog user, newest first. Use for \"What has manton posted on Micro.blog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"username":{"description":"Micro.blog username without the @ sign, for example 'manton'.","maxLength":200,"title":"Username","type":"string"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts newer than this post ID (IDs are 64-bit; pass as a number).","title":"Since Id"},"before_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this post ID (use for paging backwards).","title":"Before Id"}},"required":["username"],"title":"get_user_postsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_conversation":{"post":{"operationId":"get_conversation","summary":"Show the thread around a post: the post and its replies. Use for \"Show the conversation around Micro.blog post 123\".","description":"Show the thread around a post: the post and its replies. Use for \"Show the conversation around Micro.blog post 123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"ID of a post in the thread.","minimum":0,"title":"Id","type":"integer"}},"required":["id"],"title":"get_conversationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_my_replies":{"post":{"operationId":"get_my_replies","summary":"List replies you posted, newest first. Use for \"Which replies have I posted on Micro.blog\".","description":"List replies you posted, newest first. Use for \"Which replies have I posted on Micro.blog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts to return (1 to 100).","title":"Count"},"since_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts newer than this post ID (IDs are 64-bit; pass as a number).","title":"Since Id"},"before_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts older than this post ID (use for paging backwards).","title":"Before Id"}},"title":"get_my_repliesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_following":{"post":{"operationId":"list_following","summary":"List the users that a given user follows. Use for \"Who does manton follow on Micro.blog\".","description":"List the users that a given user follows. Use for \"Who does manton follow on Micro.blog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"username":{"description":"Micro.blog username without the @ sign, for example 'manton'.","maxLength":200,"title":"Username","type":"string"}},"required":["username"],"title":"list_followingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}