An API of Ice And Fire · Capability

An API of Ice And Fire — Houses

Houses — the noble families of Westeros and Essos with their seats, sigils, words, and sworn members. 2 operations. Lead operation: An API of Ice And Fire List Houses. Self-contained Naftiko capability covering one An API of Ice And Fire business surface.

Run with Naftiko An API of Ice And FireHousesA Song of Ice and Fire

What You Can Do

GET
Listhouses — List Houses with optional filters.
/v1/houses
GET
Gethouse — Get House by ID.
/v1/houses/{id}

MCP Tools

list-houses

List Houses with filters by name, region, words, and has-* booleans.

read-only idempotent
get-house

Get a specific house by its numeric ID.

read-only idempotent

Capability Spec

an-api-of-ice-and-fire-houses.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "An API of Ice And Fire — Houses"
  description: >-
    Houses — the noble families of Westeros and Essos with their seats,
    sigils, words, and sworn members. 2 operations. Lead operation: An API of
    Ice And Fire List Houses. Self-contained Naftiko capability covering one
    An API of Ice And Fire business surface.
  tags:
    - An API of Ice And Fire
    - Houses
    - A Song of Ice and Fire
  created: "2026-05-30"
  modified: "2026-05-30"

binds:
  - namespace: env
    keys: {}

capability:

  consumes:
    - type: http
      namespace: "an-api-of-ice-and-fire-houses"
      baseUri: "https://anapioficeandfire.com/api"
      description: >-
        An API of Ice And Fire — Houses business capability. Self-contained,
        no shared references. No authentication required; rate-limited to
        20,000 requests per IP per day.
      resources:
        - name: "houses"
          path: "/houses"
          operations:
            - name: "listHouses"
              method: GET
              description: "List Houses with optional filters by name, region, words, and has-* boolean flags."
              inputParameters:
                - name: "page"
                  in: query
                  type: integer
                  required: false
                  description: "Page number (1-indexed)."
                - name: "pageSize"
                  in: query
                  type: integer
                  required: false
                  description: "Items per page (default 10, max 50)."
                - name: "name"
                  in: query
                  type: string
                  required: false
                  description: "Filter houses by exact house name."
                - name: "region"
                  in: query
                  type: string
                  required: false
                  description: "Filter houses by region."
                - name: "words"
                  in: query
                  type: string
                  required: false
                  description: "Filter houses by house words (motto)."
                - name: "hasWords"
                  in: query
                  type: boolean
                  required: false
                  description: "Restrict to houses that have or do not have words."
                - name: "hasTitles"
                  in: query
                  type: boolean
                  required: false
                  description: "Restrict to houses that have or do not have titles."
                - name: "hasSeats"
                  in: query
                  type: boolean
                  required: false
                  description: "Restrict to houses that have or do not have seats."
                - name: "hasDiedOut"
                  in: query
                  type: boolean
                  required: false
                  description: "Restrict to extinct or surviving houses."
                - name: "hasAncestralWeapons"
                  in: query
                  type: boolean
                  required: false
                  description: "Restrict to houses with or without ancestral weapons."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "houses-by-id"
          path: "/houses/{id}"
          operations:
            - name: "getHouse"
              method: GET
              description: "Get House by ID with full hypermedia lord, heir, overlord, founder, and member references."
              inputParameters:
                - name: "id"
                  in: path
                  type: integer
                  required: true
                  description: "Numeric house identifier."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  exposes:
    - type: rest
      namespace: "an-api-of-ice-and-fire-houses-rest"
      port: 8080
      description: >-
        REST adapter for An API of Ice And Fire — Houses. One
        Spectral-compliant resource per consumed operation, prefixed with /v1.
      resources:
        - path: "/v1/houses"
          name: "houses"
          description: "REST surface for the houses collection."
          operations:
            - method: GET
              name: "listHouses"
              description: "List Houses with optional filters."
              call: "an-api-of-ice-and-fire-houses.listHouses"
              with:
                page: "rest.page"
                pageSize: "rest.pageSize"
                name: "rest.name"
                region: "rest.region"
                words: "rest.words"
                hasWords: "rest.hasWords"
                hasTitles: "rest.hasTitles"
                hasSeats: "rest.hasSeats"
                hasDiedOut: "rest.hasDiedOut"
                hasAncestralWeapons: "rest.hasAncestralWeapons"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/houses/{id}"
          name: "houses-by-id"
          description: "REST surface for retrieving a single house by ID."
          operations:
            - method: GET
              name: "getHouse"
              description: "Get House by ID."
              call: "an-api-of-ice-and-fire-houses.getHouse"
              with:
                id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      namespace: "an-api-of-ice-and-fire-houses-mcp"
      port: 9090
      transport: http
      description: >-
        MCP adapter for An API of Ice And Fire — Houses. One verb-noun tool
        per consumed operation, routed through this capability's consumes
        block.
      tools:
        - name: "list-houses"
          description: "List Houses with filters by name, region, words, and has-* booleans."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "an-api-of-ice-and-fire-houses.listHouses"
          with:
            page: "tools.page"
            pageSize: "tools.pageSize"
            name: "tools.name"
            region: "tools.region"
            words: "tools.words"
            hasWords: "tools.hasWords"
            hasTitles: "tools.hasTitles"
            hasSeats: "tools.hasSeats"
            hasDiedOut: "tools.hasDiedOut"
            hasAncestralWeapons: "tools.hasAncestralWeapons"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-house"
          description: "Get a specific house by its numeric ID."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "an-api-of-ice-and-fire-houses.getHouse"
          with:
            id: "tools.id"
          outputParameters:
            - type: object
              mapping: "$."