Shovels · Capability

Shovels API — Geography

Shovels API — Geography. 7 operations. Lead operation: Search Cities. Self-contained Naftiko capability covering one Shovels business surface.

Run with Naftiko ShovelsGeography

What You Can Do

GET
Searchcities — Search Cities
/v1/cities/search
GET
Getcitybyid — Get City By ID
/v1/cities/{geo-id}
GET
Getcitymetricscurrent — Get City Metrics Current
/v1/cities/{geo-id}/metrics/current
GET
Searchcounties — Search Counties
/v1/counties/search
GET
Searchjurisdictions — Search Jurisdictions
/v1/jurisdictions/search
GET
Searchstates — Search States
/v1/states/search
GET
Searchzipcodes — Search Zipcodes
/v1/zipcodes/search

MCP Tools

search-cities

Search Cities

read-only idempotent
get-city-id

Get City By ID

read-only idempotent
get-city-metrics-current

Get City Metrics Current

read-only idempotent
search-counties

Search Counties

read-only idempotent
search-jurisdictions

Search Jurisdictions

read-only idempotent
search-states

Search States

read-only idempotent
search-zipcodes

Search Zipcodes

read-only idempotent

Capability Spec

shovels-geography.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Shovels API — Geography
  description: 'Shovels API — Geography. 7 operations. Lead operation: Search Cities. Self-contained Naftiko capability covering
    one Shovels business surface.'
  tags:
  - Shovels
  - Geography
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SHOVELS_API_KEY: SHOVELS_API_KEY
capability:
  consumes:
  - type: http
    namespace: shovels-geography
    baseUri: https://api.shovels.ai/v2
    description: Shovels API — Geography business capability. Self-contained, no shared references.
    resources:
    - name: cities-search
      path: /cities/search
      operations:
      - name: searchcities
        method: GET
        description: Search Cities
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: q
          in: query
          type: string
          description: City name search term
          required: true
        - name: cursor
          in: query
          type: string
          description: Pagination cursor
        - name: size
          in: query
          type: integer
          description: Number of results per page
    - name: cities-geo_id
      path: /cities/{geo_id}
      operations:
      - name: getcitybyid
        method: GET
        description: Get City By ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: geo_id
          in: path
          type: string
          description: City geo_id
          required: true
    - name: cities-geo_id-metrics-current
      path: /cities/{geo_id}/metrics/current
      operations:
      - name: getcitymetricscurrent
        method: GET
        description: Get City Metrics Current
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: geo_id
          in: path
          type: string
          description: City geo_id
          required: true
    - name: counties-search
      path: /counties/search
      operations:
      - name: searchcounties
        method: GET
        description: Search Counties
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: q
          in: query
          type: string
          description: County name search term
          required: true
        - name: cursor
          in: query
          type: string
          description: Pagination cursor
        - name: size
          in: query
          type: integer
          description: Number of results per page
    - name: jurisdictions-search
      path: /jurisdictions/search
      operations:
      - name: searchjurisdictions
        method: GET
        description: Search Jurisdictions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: q
          in: query
          type: string
          description: Jurisdiction name search term
          required: true
        - name: cursor
          in: query
          type: string
          description: Pagination cursor
        - name: size
          in: query
          type: integer
          description: Number of results per page
    - name: states-search
      path: /states/search
      operations:
      - name: searchstates
        method: GET
        description: Search States
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: q
          in: query
          type: string
          description: State name search term
          required: true
        - name: cursor
          in: query
          type: string
          description: Pagination cursor
        - name: size
          in: query
          type: integer
          description: Number of results per page (1-100, default 50)
    - name: zipcodes-search
      path: /zipcodes/search
      operations:
      - name: searchzipcodes
        method: GET
        description: Search Zipcodes
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: q
          in: query
          type: string
          description: Zip code search term
          required: true
        - name: cursor
          in: query
          type: string
          description: Pagination cursor
        - name: size
          in: query
          type: integer
          description: Number of results per page
    authentication:
      type: apikey
      key: X-API-Key
      value: '{{env.SHOVELS_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: shovels-geography-rest
    port: 8080
    description: REST adapter for Shovels API — Geography. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/cities/search
      name: cities-search
      description: REST surface for cities-search.
      operations:
      - method: GET
        name: searchcities
        description: Search Cities
        call: shovels-geography.searchcities
        with:
          q: rest.q
          cursor: rest.cursor
          size: rest.size
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/cities/{geo-id}
      name: cities-geo-id
      description: REST surface for cities-geo_id.
      operations:
      - method: GET
        name: getcitybyid
        description: Get City By ID
        call: shovels-geography.getcitybyid
        with:
          geo_id: rest.geo_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/cities/{geo-id}/metrics/current
      name: cities-geo-id-metrics-current
      description: REST surface for cities-geo_id-metrics-current.
      operations:
      - method: GET
        name: getcitymetricscurrent
        description: Get City Metrics Current
        call: shovels-geography.getcitymetricscurrent
        with:
          geo_id: rest.geo_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/counties/search
      name: counties-search
      description: REST surface for counties-search.
      operations:
      - method: GET
        name: searchcounties
        description: Search Counties
        call: shovels-geography.searchcounties
        with:
          q: rest.q
          cursor: rest.cursor
          size: rest.size
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/jurisdictions/search
      name: jurisdictions-search
      description: REST surface for jurisdictions-search.
      operations:
      - method: GET
        name: searchjurisdictions
        description: Search Jurisdictions
        call: shovels-geography.searchjurisdictions
        with:
          q: rest.q
          cursor: rest.cursor
          size: rest.size
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/states/search
      name: states-search
      description: REST surface for states-search.
      operations:
      - method: GET
        name: searchstates
        description: Search States
        call: shovels-geography.searchstates
        with:
          q: rest.q
          cursor: rest.cursor
          size: rest.size
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/zipcodes/search
      name: zipcodes-search
      description: REST surface for zipcodes-search.
      operations:
      - method: GET
        name: searchzipcodes
        description: Search Zipcodes
        call: shovels-geography.searchzipcodes
        with:
          q: rest.q
          cursor: rest.cursor
          size: rest.size
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: shovels-geography-mcp
    port: 9090
    transport: http
    description: MCP adapter for Shovels API — Geography. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: search-cities
      description: Search Cities
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: shovels-geography.searchcities
      with:
        q: tools.q
        cursor: tools.cursor
        size: tools.size
      outputParameters:
      - type: object
        mapping: $.
    - name: get-city-id
      description: Get City By ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: shovels-geography.getcitybyid
      with:
        geo_id: tools.geo_id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-city-metrics-current
      description: Get City Metrics Current
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: shovels-geography.getcitymetricscurrent
      with:
        geo_id: tools.geo_id
      outputParameters:
      - type: object
        mapping: $.
    - name: search-counties
      description: Search Counties
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: shovels-geography.searchcounties
      with:
        q: tools.q
        cursor: tools.cursor
        size: tools.size
      outputParameters:
      - type: object
        mapping: $.
    - name: search-jurisdictions
      description: Search Jurisdictions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: shovels-geography.searchjurisdictions
      with:
        q: tools.q
        cursor: tools.cursor
        size: tools.size
      outputParameters:
      - type: object
        mapping: $.
    - name: search-states
      description: Search States
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: shovels-geography.searchstates
      with:
        q: tools.q
        cursor: tools.cursor
        size: tools.size
      outputParameters:
      - type: object
        mapping: $.
    - name: search-zipcodes
      description: Search Zipcodes
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: shovels-geography.searchzipcodes
      with:
        q: tools.q
        cursor: tools.cursor
        size: tools.size
      outputParameters:
      - type: object
        mapping: $.