naftiko: 1.0.0-alpha2 info: label: Memesio API Contracts — memes description: 'Memesio API Contracts — memes. 6 operations. Lead operation: List Hosted Memes with Canonical Share Metadata. Self-contained Naftiko capability covering one Memesio business surface.' tags: - Memesio - memes created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: MEMESIO_API_KEY: MEMESIO_API_KEY capability: consumes: - type: http namespace: memesio-memes baseUri: '' description: Memesio API Contracts — memes business capability. Self-contained, no shared references. resources: - name: api-memes path: /api/memes operations: - name: get method: GET description: List Hosted Memes with Canonical Share Metadata outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: query in: query type: string - name: templateSlug in: query type: string - name: visibility in: query type: string - name: ownerToken in: query type: string - name: officialOnly in: query type: boolean - name: excludeTemplateClones in: query type: boolean - name: includeNsfw in: query type: boolean - name: page in: query type: integer - name: pageSize in: query type: integer - name: post method: POST description: Store a Rendered Meme and Return Canonical Share/Image URLS outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: api-memes-slug path: /api/memes/{slug} operations: - name: get method: GET description: Read One Meme by Opaque Slug, Public Slug, or Source Slug outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: slug in: path type: string required: true - name: ownerToken in: query type: string - name: delete method: DELETE description: Delete One Signed-in Account-Owned Meme and Purge Public Access Paths outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: slug in: path type: string required: true - name: api-v1-memes-caption-template path: /api/v1/memes/caption-template operations: - name: post method: POST description: Render a Hosted Meme from a Stored Template Using Anonymous or Keyed Caption Input outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: api-v1-memes-caption-upload path: /api/v1/memes/caption-upload operations: - name: post method: POST description: Upload an Image, Place Top or Bottom Caption Boxes, and Store the Hosted Meme outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true authentication: type: apikey key: x-developer-api-key value: '{{env.MEMESIO_API_KEY}}' placement: header exposes: - type: rest namespace: memesio-memes-rest port: 8080 description: REST adapter for Memesio API Contracts — memes. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/memes name: api-memes description: REST surface for api-memes. operations: - method: GET name: get description: List Hosted Memes with Canonical Share Metadata call: memesio-memes.get with: query: rest.query templateSlug: rest.templateSlug visibility: rest.visibility ownerToken: rest.ownerToken officialOnly: rest.officialOnly excludeTemplateClones: rest.excludeTemplateClones includeNsfw: rest.includeNsfw page: rest.page pageSize: rest.pageSize outputParameters: - type: object mapping: $. - method: POST name: post description: Store a Rendered Meme and Return Canonical Share/Image URLS call: memesio-memes.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/memes/{slug} name: api-memes-slug description: REST surface for api-memes-slug. operations: - method: GET name: get description: Read One Meme by Opaque Slug, Public Slug, or Source Slug call: memesio-memes.get with: slug: rest.slug ownerToken: rest.ownerToken outputParameters: - type: object mapping: $. - method: DELETE name: delete description: Delete One Signed-in Account-Owned Meme and Purge Public Access Paths call: memesio-memes.delete with: slug: rest.slug outputParameters: - type: object mapping: $. - path: /v1/api/v1/memes/caption-template name: api-v1-memes-caption-template description: REST surface for api-v1-memes-caption-template. operations: - method: POST name: post description: Render a Hosted Meme from a Stored Template Using Anonymous or Keyed Caption Input call: memesio-memes.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/v1/memes/caption-upload name: api-v1-memes-caption-upload description: REST surface for api-v1-memes-caption-upload. operations: - method: POST name: post description: Upload an Image, Place Top or Bottom Caption Boxes, and Store the Hosted Meme call: memesio-memes.post with: body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: memesio-memes-mcp port: 9090 transport: http description: MCP adapter for Memesio API Contracts — memes. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-hosted-memes-canonical-share description: List Hosted Memes with Canonical Share Metadata hints: readOnly: true destructive: false idempotent: true call: memesio-memes.get with: query: tools.query templateSlug: tools.templateSlug visibility: tools.visibility ownerToken: tools.ownerToken officialOnly: tools.officialOnly excludeTemplateClones: tools.excludeTemplateClones includeNsfw: tools.includeNsfw page: tools.page pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: store-rendered-meme-and-return description: Store a Rendered Meme and Return Canonical Share/Image URLS hints: readOnly: false destructive: false idempotent: false call: memesio-memes.post with: body: tools.body outputParameters: - type: object mapping: $. - name: read-one-meme-opaque-slug description: Read One Meme by Opaque Slug, Public Slug, or Source Slug hints: readOnly: true destructive: false idempotent: true call: memesio-memes.get with: slug: tools.slug ownerToken: tools.ownerToken outputParameters: - type: object mapping: $. - name: delete-one-signed-account-owned description: Delete One Signed-in Account-Owned Meme and Purge Public Access Paths hints: readOnly: false destructive: true idempotent: true call: memesio-memes.delete with: slug: tools.slug outputParameters: - type: object mapping: $. - name: render-hosted-meme-stored-template description: Render a Hosted Meme from a Stored Template Using Anonymous or Keyed Caption Input hints: readOnly: false destructive: false idempotent: false call: memesio-memes.post with: body: tools.body outputParameters: - type: object mapping: $. - name: upload-image-place-top-bottom description: Upload an Image, Place Top or Bottom Caption Boxes, and Store the Hosted Meme hints: readOnly: false destructive: false idempotent: false call: memesio-memes.post with: body: tools.body outputParameters: - type: object mapping: $.