Naftiko · Capability

Customer360 Context Composition

A capability composing CRM, support, and billing into a unified Customer 360 context.

Run with Naftiko NaftikoCustomer 360Composition

What You Can Do

GET
Get customer 360
/customers/{{contact_id}}/360

MCP Tools

get-customer-360

read-only

Capability Spec

customer360-context-composition.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  title: Customer360 Context Composition
  description: A capability composing CRM, support, and billing into a unified Customer 360 context.
  tags: [Naftiko, Customer 360, Composition]
  created: '2026-05-01'
  modified: '2026-05-04'
binds:
- namespace: hubspot-env
  keys: {HUBSPOT_TOKEN: HUBSPOT_TOKEN}
- namespace: zendesk-env
  keys: {ZENDESK_SUBDOMAIN: ZENDESK_SUBDOMAIN, ZENDESK_TOKEN: ZENDESK_TOKEN}
- namespace: stripe-env
  keys: {STRIPE_API_KEY: STRIPE_API_KEY}
capability:
  consumes:
  - namespace: hubspot
    type: http
    baseUri: https://api.hubapi.com
    authentication: {type: bearer, token: '{{HUBSPOT_TOKEN}}'}
    resources:
    - name: contact
      path: /crm/v3/objects/contacts/{{contact_id}}
      operations:
      - {name: get-contact, method: GET, inputParameters: [{name: contact_id, in: path}]}
  - namespace: zendesk
    type: http
    baseUri: https://{{ZENDESK_SUBDOMAIN}}.zendesk.com
    authentication: {type: bearer, token: '{{ZENDESK_TOKEN}}'}
    resources:
    - {name: tickets, path: /api/v2/tickets, operations: [{name: list-tickets, method: GET}]}
  - namespace: stripe
    type: http
    baseUri: https://api.stripe.com
    authentication: {type: bearer, token: '{{STRIPE_API_KEY}}'}
    resources:
    - name: customer
      path: /v1/customers/{{customer_id}}
      operations:
      - {name: get-stripe-customer, method: GET, inputParameters: [{name: customer_id, in: path}]}
  exposes:
  - type: rest
    address: 0.0.0.0
    port: 8080
    namespace: customer360-context-composition-rest
    description: REST surface for Customer 360.
    resources:
    - name: customer-360
      path: /customers/{{contact_id}}/360
      operations:
      - {method: GET, name: get-customer-360, inputParameters: [{name: contact_id, in: path, type: string}], call: hubspot.get-contact}
  - type: mcp
    address: 0.0.0.0
    port: 3010
    namespace: customer360-context-composition-mcp
    description: MCP for Customer 360.
    tools:
    - name: get-customer-360
      hints: {readOnly: true}
      inputParameters: [{name: contact_id, type: string, required: true}]
      call: hubspot.get-contact
  - type: skill
    address: 0.0.0.0
    port: 3011
    namespace: customer360-context-composition-skills
    description: Skill for Customer 360.
    skills:
    - name: customer360-context-composition
      description: Composed Customer 360 context.
      location: file:///opt/naftiko/skills/customer360-context-composition
      allowed-tools: get-customer-360
      tools:
      - {name: get-customer-360, from: {sourceNamespace: customer360-context-composition-mcp, action: get-customer-360}}