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: $.