{"openapi":"3.1.0","info":{"title":"Are.na (BYOK) API","version":"0.1.0","description":"Are.na (BYOK) lets an AI assistant read your own Are.na data through the Are.na API with a key you supply (personal access token (read scope is enough)). Read-only: 12 tools (get_me, get_user, list_user_contents, list_user_followers, list_user_following, get_channel, list_channel_contents, get_block, list_block_comments, list_my_feed, list_my_notifications, search). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-arena.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-arena/docs"},"termsOfService":"https://connectorbay.com/byok-arena/terms"},"servers":[{"url":"https://byok-arena.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-arena/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_me":{"post":{"operationId":"get_me","summary":"Show the Are.na account the token belongs to: name, slug, tier, creation date, bio and counts of channels, followers, fo","description":"Show the Are.na account the token belongs to: name, slug, tier, creation date, bio and counts of channels, followers, following and notifications. Use for \"Which Are.na account is my token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_meArguments","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":{"post":{"operationId":"get_user","summary":"Get one Are.na user's public profile by ID or slug: name, bio, tier and counts of channels, followers and following. Use","description":"Get one Are.na user's public profile by ID or slug: name, bio, tier and counts of channels, followers and following. Use for \"How many channels and followers does john-doe have on Are.na\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"User ID (number) or user slug as shown in the profile URL, for example 'john-doe'.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_userArguments","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_user_contents":{"post":{"operationId":"list_user_contents","summary":"List blocks and channels created by a user, optionally one content type, newest or oldest first. Use for \"What has john-","description":"List blocks and channels created by a user, optionally one content type, newest or oldest first. Use for \"What has john-doe added to Are.na lately\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"User ID (number) or user slug as shown in the profile URL, for example 'john-doe'.","maxLength":200,"title":"Id","type":"string"},"per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many results per page (1 to 100).","title":"Per"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"sort":{"anyOf":[{"enum":["created_at_asc","created_at_desc","updated_at_asc","updated_at_desc"],"type":"string"},{"type":"null"}],"default":"created_at_desc","description":"Order by creation or update time.","title":"Sort"},"type":{"anyOf":[{"enum":["Text","Image","Link","Attachment","Embed","Channel","Block"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this content type.","title":"Type"}},"required":["id"],"title":"list_user_contentsArguments","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_user_followers":{"post":{"operationId":"list_user_followers","summary":"List the users who follow a user, with name, slug and counts. Use for \"Who follows john-doe on Are.na\".","description":"List the users who follow a user, with name, slug and counts. Use for \"Who follows john-doe on Are.na\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"User ID (number) or user slug as shown in the profile URL, for example 'john-doe'.","maxLength":200,"title":"Id","type":"string"},"per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many results per page (1 to 100).","title":"Per"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"sort":{"anyOf":[{"enum":["created_at_desc","created_at_asc"],"type":"string"},{"type":"null"}],"default":"created_at_desc","description":"Order by when the follow happened.","title":"Sort"}},"required":["id"],"title":"list_user_followersArguments","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_user_following":{"post":{"operationId":"list_user_following","summary":"List the users, channels and groups a user follows, optionally only one kind. Use for \"What channels does john-doe follo","description":"List the users, channels and groups a user follows, optionally only one kind. Use for \"What channels does john-doe follow on Are.na\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"User ID (number) or user slug as shown in the profile URL, for example 'john-doe'.","maxLength":200,"title":"Id","type":"string"},"per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many results per page (1 to 100).","title":"Per"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"type":{"anyOf":[{"enum":["User","Channel","Group"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of followed item.","title":"Type"},"sort":{"anyOf":[{"enum":["created_at_desc","created_at_asc"],"type":"string"},{"type":"null"}],"default":"created_at_desc","description":"Order by when the follow happened.","title":"Sort"}},"required":["id"],"title":"list_user_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}},"/v1/tools/get_channel":{"post":{"operationId":"get_channel","summary":"Get one channel by ID or slug: title, description, visibility, owner, counts of blocks, channels and collaborators, date","description":"Get one channel by ID or slug: title, description, visibility, owner, counts of blocks, channels and collaborators, dates. Use for \"How many blocks are in the Are.na channel my-collection-abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Channel ID (number) or channel slug as shown in the channel URL, for example 'my-collection-abc123'.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_channelArguments","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_channel_contents":{"post":{"operationId":"list_channel_contents","summary":"List the blocks and channels inside a channel in the owner's order or by date. Use for \"What is in the Are.na channel my","description":"List the blocks and channels inside a channel in the owner's order or by date. Use for \"What is in the Are.na channel my-collection-abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Channel ID (number) or channel slug as shown in the channel URL, for example 'my-collection-abc123'.","maxLength":200,"title":"Id","type":"string"},"per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many results per page (1 to 100).","title":"Per"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"sort":{"anyOf":[{"enum":["position_asc","position_desc","created_at_asc","created_at_desc","updated_at_asc","updated_at_desc"],"type":"string"},{"type":"null"}],"default":"position_desc","description":"Order of the contents (position is the owner's manual order).","title":"Sort"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only contents added by this user ID.","title":"User Id"}},"required":["id"],"title":"list_channel_contentsArguments","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_block":{"post":{"operationId":"get_block","summary":"Get one block by ID: title, description, type (Text, Image, Link, Attachment, Embed), source URL, author, comment count ","description":"Get one block by ID: title, description, type (Text, Image, Link, Attachment, Embed), source URL, author, comment count and dates. Use for \"Show Are.na block 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Block ID (number).","title":"Id","type":"integer"}},"required":["id"],"title":"get_blockArguments","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_block_comments":{"post":{"operationId":"list_block_comments","summary":"List the comments on a block, oldest first by default. Use for \"What are the comments on Are.na block 12345\".","description":"List the comments on a block, oldest first by default. Use for \"What are the comments on Are.na block 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Block ID (number).","title":"Id","type":"integer"},"per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many results per page (1 to 100).","title":"Per"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"sort":{"anyOf":[{"enum":["created_at_desc","created_at_asc"],"type":"string"},{"type":"null"}],"default":"created_at_asc","description":"Order by creation date.","title":"Sort"}},"required":["id"],"title":"list_block_commentsArguments","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_my_feed":{"post":{"operationId":"list_my_feed","summary":"List your personalised Are.na activity feed, newest first, with the kind of activity, who did it and what it involved. U","description":"List your personalised Are.na activity feed, newest first, with the kind of activity, who did it and what it involved. Use for \"What is new in my Are.na feed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many feed items to return (1 to 100).","title":"Limit"},"next":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for older items: the meta.next_cursor value of a previous answer.","title":"Next"}},"title":"list_my_feedArguments","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_my_notifications":{"post":{"operationId":"list_my_notifications","summary":"List your Are.na notifications, newest first, optionally only unread ones. Use for \"Do I have unread Are.na notification","description":"List your Are.na notifications, newest first, optionally only unread ones. Use for \"Do I have unread Are.na notifications\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many feed items to return (1 to 100).","title":"Limit"},"next":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for older items: the meta.next_cursor value of a previous answer.","title":"Next"},"unread":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":"false","description":"Pass true to return only unread notifications.","title":"Unread"}},"title":"list_my_notificationsArguments","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/search":{"post":{"operationId":"search","summary":"Search blocks, channels, users and groups by text, with filters for type, scope and file extension. Requires an Are.na P","description":"Search blocks, channels, users and groups by text, with filters for type, scope and file extension. Requires an Are.na Premium account. Use for \"Search Are.na for brutalism images\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Search text; use * to match everything when filtering by type or scope.","maxLength":200,"title":"Query","type":"string"},"type":{"anyOf":[{"enum":["All","Text","Image","Link","Attachment","Embed","Channel","Block","User","Group"],"type":"string"},{"type":"null"}],"default":null,"description":"Filter by content type, for example Image, Text, Link, Channel or User.","title":"Type"},"scope":{"anyOf":[{"enum":["all","my","following"],"type":"string"},{"type":"null"}],"default":"all","description":"Search everything, only your content, or only people you follow.","title":"Scope"},"sort":{"anyOf":[{"enum":["score_desc","created_at_desc","created_at_asc","updated_at_desc","updated_at_asc","name_asc","name_desc","connections_count_desc"],"type":"string"},{"type":"null"}],"default":"score_desc","description":"Order of results.","title":"Sort"},"per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many results per page (1 to 100).","title":"Per"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["query"],"title":"searchArguments","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}}}}