naftiko: 1.0.0-alpha2 info: label: Google Blogger API description: 'Google Blogger API. 16 operations. Lead operation: Get a blog by URL. Self-contained Naftiko capability covering one Google Blogger business surface.' tags: - Google Blogger - Google Blogger API created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GOOGLE_BLOGGER_API_KEY: GOOGLE_BLOGGER_API_KEY capability: consumes: - type: http namespace: blogger baseUri: https://www.googleapis.com/blogger/v3 description: Google Blogger API business capability. Self-contained, no shared references. resources: - name: blogs-byurl path: /blogs/byurl operations: - name: getblogbyurl method: GET description: Get a blog by URL outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: url in: query type: string required: true - name: blogs-blogId path: /blogs/{blogId} operations: - name: getblog method: GET description: Get a blog outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: blogs-blogId-pages path: /blogs/{blogId}/pages operations: - name: listpages method: GET description: List pages outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: insertpage method: POST description: Create a page outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: blogs-blogId-posts path: /blogs/{blogId}/posts operations: - name: listposts method: GET description: List posts outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: maxResults in: query type: integer - name: pageToken in: query type: string - name: labels in: query type: string - name: startDate in: query type: string - name: endDate in: query type: string - name: status in: query type: string - name: orderBy in: query type: string - name: insertpost method: POST description: Create a post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: isDraft in: query type: boolean - name: body in: body type: object description: Request body (JSON). required: false - name: blogs-blogId-posts-search path: /blogs/{blogId}/posts/search operations: - name: searchposts method: GET description: Search posts outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: q in: query type: string required: true - name: blogs-blogId-posts-postId path: /blogs/{blogId}/posts/{postId} operations: - name: getpost method: GET description: Get a post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: postId in: path type: string required: true - name: updatepost method: PUT description: Update a post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: postId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: patchpost method: PATCH description: Patch a post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: postId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: deletepost method: DELETE description: Delete a post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: postId in: path type: string required: true - name: blogs-blogId-posts-postId-comments path: /blogs/{blogId}/posts/{postId}/comments operations: - name: listcomments method: GET description: List comments outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: postId in: path type: string required: true - name: maxResults in: query type: integer - name: pageToken in: query type: string - name: blogs-blogId-posts-postId-comments-commentId path: /blogs/{blogId}/posts/{postId}/comments/{commentId} operations: - name: getcomment method: GET description: Get a comment outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: postId in: path type: string required: true - name: commentId in: path type: string required: true - name: deletecomment method: DELETE description: Delete a comment outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: blogId in: path type: string required: true - name: postId in: path type: string required: true - name: commentId in: path type: string required: true - name: users-userId path: /users/{userId} operations: - name: getuser method: GET description: Get a user outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: userId in: path type: string required: true - name: users-userId-blogs path: /users/{userId}/blogs operations: - name: listblogsbyuser method: GET description: List blogs by user outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: userId in: path type: string required: true authentication: type: bearer token: '{{env.GOOGLE_BLOGGER_API_KEY}}' exposes: - type: rest namespace: blogger-rest port: 8080 description: REST adapter for Google Blogger API. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/blogs/byurl name: blogs-byurl description: REST surface for blogs-byurl. operations: - method: GET name: getblogbyurl description: Get a blog by URL call: blogger.getblogbyurl with: url: rest.url outputParameters: - type: object mapping: $. - path: /v1/blogs/{blogid} name: blogs-blogid description: REST surface for blogs-blogId. operations: - method: GET name: getblog description: Get a blog call: blogger.getblog with: blogId: rest.blogId outputParameters: - type: object mapping: $. - path: /v1/blogs/{blogid}/pages name: blogs-blogid-pages description: REST surface for blogs-blogId-pages. operations: - method: GET name: listpages description: List pages call: blogger.listpages with: blogId: rest.blogId outputParameters: - type: object mapping: $. - method: POST name: insertpage description: Create a page call: blogger.insertpage with: blogId: rest.blogId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/blogs/{blogid}/posts name: blogs-blogid-posts description: REST surface for blogs-blogId-posts. operations: - method: GET name: listposts description: List posts call: blogger.listposts with: blogId: rest.blogId maxResults: rest.maxResults pageToken: rest.pageToken labels: rest.labels startDate: rest.startDate endDate: rest.endDate status: rest.status orderBy: rest.orderBy outputParameters: - type: object mapping: $. - method: POST name: insertpost description: Create a post call: blogger.insertpost with: blogId: rest.blogId isDraft: rest.isDraft body: rest.body outputParameters: - type: object mapping: $. - path: /v1/blogs/{blogid}/posts/search name: blogs-blogid-posts-search description: REST surface for blogs-blogId-posts-search. operations: - method: GET name: searchposts description: Search posts call: blogger.searchposts with: blogId: rest.blogId q: rest.q outputParameters: - type: object mapping: $. - path: /v1/blogs/{blogid}/posts/{postid} name: blogs-blogid-posts-postid description: REST surface for blogs-blogId-posts-postId. operations: - method: GET name: getpost description: Get a post call: blogger.getpost with: blogId: rest.blogId postId: rest.postId outputParameters: - type: object mapping: $. - method: PUT name: updatepost description: Update a post call: blogger.updatepost with: blogId: rest.blogId postId: rest.postId body: rest.body outputParameters: - type: object mapping: $. - method: PATCH name: patchpost description: Patch a post call: blogger.patchpost with: blogId: rest.blogId postId: rest.postId body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletepost description: Delete a post call: blogger.deletepost with: blogId: rest.blogId postId: rest.postId outputParameters: - type: object mapping: $. - path: /v1/blogs/{blogid}/posts/{postid}/comments name: blogs-blogid-posts-postid-comments description: REST surface for blogs-blogId-posts-postId-comments. operations: - method: GET name: listcomments description: List comments call: blogger.listcomments with: blogId: rest.blogId postId: rest.postId maxResults: rest.maxResults pageToken: rest.pageToken outputParameters: - type: object mapping: $. - path: /v1/blogs/{blogid}/posts/{postid}/comments/{commentid} name: blogs-blogid-posts-postid-comments-commentid description: REST surface for blogs-blogId-posts-postId-comments-commentId. operations: - method: GET name: getcomment description: Get a comment call: blogger.getcomment with: blogId: rest.blogId postId: rest.postId commentId: rest.commentId outputParameters: - type: object mapping: $. - method: DELETE name: deletecomment description: Delete a comment call: blogger.deletecomment with: blogId: rest.blogId postId: rest.postId commentId: rest.commentId outputParameters: - type: object mapping: $. - path: /v1/users/{userid} name: users-userid description: REST surface for users-userId. operations: - method: GET name: getuser description: Get a user call: blogger.getuser with: userId: rest.userId outputParameters: - type: object mapping: $. - path: /v1/users/{userid}/blogs name: users-userid-blogs description: REST surface for users-userId-blogs. operations: - method: GET name: listblogsbyuser description: List blogs by user call: blogger.listblogsbyuser with: userId: rest.userId outputParameters: - type: object mapping: $. - type: mcp namespace: blogger-mcp port: 9090 transport: http description: MCP adapter for Google Blogger API. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-blog-url description: Get a blog by URL hints: readOnly: true destructive: false idempotent: true call: blogger.getblogbyurl with: url: tools.url outputParameters: - type: object mapping: $. - name: get-blog description: Get a blog hints: readOnly: true destructive: false idempotent: true call: blogger.getblog with: blogId: tools.blogId outputParameters: - type: object mapping: $. - name: list-pages description: List pages hints: readOnly: true destructive: false idempotent: true call: blogger.listpages with: blogId: tools.blogId outputParameters: - type: object mapping: $. - name: create-page description: Create a page hints: readOnly: false destructive: false idempotent: false call: blogger.insertpage with: blogId: tools.blogId body: tools.body outputParameters: - type: object mapping: $. - name: list-posts description: List posts hints: readOnly: true destructive: false idempotent: true call: blogger.listposts with: blogId: tools.blogId maxResults: tools.maxResults pageToken: tools.pageToken labels: tools.labels startDate: tools.startDate endDate: tools.endDate status: tools.status orderBy: tools.orderBy outputParameters: - type: object mapping: $. - name: create-post description: Create a post hints: readOnly: false destructive: false idempotent: false call: blogger.insertpost with: blogId: tools.blogId isDraft: tools.isDraft body: tools.body outputParameters: - type: object mapping: $. - name: search-posts description: Search posts hints: readOnly: true destructive: false idempotent: true call: blogger.searchposts with: blogId: tools.blogId q: tools.q outputParameters: - type: object mapping: $. - name: get-post description: Get a post hints: readOnly: true destructive: false idempotent: true call: blogger.getpost with: blogId: tools.blogId postId: tools.postId outputParameters: - type: object mapping: $. - name: update-post description: Update a post hints: readOnly: false destructive: false idempotent: true call: blogger.updatepost with: blogId: tools.blogId postId: tools.postId body: tools.body outputParameters: - type: object mapping: $. - name: patch-post description: Patch a post hints: readOnly: false destructive: false idempotent: true call: blogger.patchpost with: blogId: tools.blogId postId: tools.postId body: tools.body outputParameters: - type: object mapping: $. - name: delete-post description: Delete a post hints: readOnly: false destructive: true idempotent: true call: blogger.deletepost with: blogId: tools.blogId postId: tools.postId outputParameters: - type: object mapping: $. - name: list-comments description: List comments hints: readOnly: true destructive: false idempotent: true call: blogger.listcomments with: blogId: tools.blogId postId: tools.postId maxResults: tools.maxResults pageToken: tools.pageToken outputParameters: - type: object mapping: $. - name: get-comment description: Get a comment hints: readOnly: true destructive: false idempotent: true call: blogger.getcomment with: blogId: tools.blogId postId: tools.postId commentId: tools.commentId outputParameters: - type: object mapping: $. - name: delete-comment description: Delete a comment hints: readOnly: false destructive: true idempotent: true call: blogger.deletecomment with: blogId: tools.blogId postId: tools.postId commentId: tools.commentId outputParameters: - type: object mapping: $. - name: get-user description: Get a user hints: readOnly: true destructive: false idempotent: true call: blogger.getuser with: userId: tools.userId outputParameters: - type: object mapping: $. - name: list-blogs-user description: List blogs by user hints: readOnly: true destructive: false idempotent: true call: blogger.listblogsbyuser with: userId: tools.userId outputParameters: - type: object mapping: $.