Koskamo

PostFinder MCP

An official MCP server providing tools to find nearest post offices, parcel lockers, and drop-off points by coordinate or suburb name, and to retrieve detailed place information including hours and services. It supports automated use without requiring an API key or account.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

PostFinder MCP logo, by PostFinderVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by PostFinder
MCP endpoint (Streamable HTTP)
https://api.postfinder.io/mcp
Vendor documentation

What its tools do

3 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

3 of 3 have a description · 3 of 3 declare behavior hints · 3 of 3 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to postfinder.io ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Find nearest post offices or parcel lockers to a specific coordinate
  • Search for places by suburb name to get coordinates
  • Retrieve full details for a specific place including hours and services

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
postfinder 1
MCP protocol negotiated in check
2025-11-25
Tools
3 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Post offices, parcel lockers, drop-off points and street post boxes in Australia, the United States, the United Kingdom, Canada and New Zealand. Use find_places for what is nearest a coordinate, which is the usual question; use search_places to turn a suburb or a name into a place first, when there is no coordinate; use get_place to read one back in full, with its opening hours and what it accepts. No key and no account: this is free to call. Every answer carries the page's URL, and the data carries its date: cite the page and say when it was last checked.

Tools

3 advertised

find_places — Find post offices and parcel points near a coordinate
Advertised by the server during the last successful anonymous check.
Advertised read-only

The places nearest a point, nearest first, with their distance, address, opening hours and the page each one is on. Ask for a category when the question names one: post-offices, parcel-lockers, drop-off-points, post-boxes, express-post-boxes or collection-points.

find_places input schema
{
  "type": "object",
  "required": [
    "lat",
    "lng",
    "country"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "description": "Latitude in degrees, between -90 and 90."
    },
    "lng": {
      "type": "number",
      "description": "Longitude in degrees, between -180 and 180."
    },
    "country": {
      "type": "string",
      "description": "Country slug: australia, united-states, united-kingdom, canada or new-zealand."
    },
    "category": {
      "type": "string",
      "description": "Optional: post-offices, parcel-lockers, drop-off-points, post-boxes, express-post-boxes or collection-points. Omit for any kind."
    }
  },
  "additionalProperties": false
}
find_places output schema
{
  "type": "object",
  "required": [
    "places"
  ],
  "properties": {
    "places": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "object",
        "required": [
          "name",
          "category",
          "suburb",
          "distance_km",
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "The page for this place. Cite it."
          },
          "name": {
            "type": "string"
          },
          "brand": {
            "type": "string",
            "description": "The carrier, where one is known: australia-post, canada-post, usps, royal-mail, nz-post and so on."
          },
          "hours": {
            "type": "string",
            "description": "Opening hours in one line, when they are known."
          },
          "suburb": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "description": "post-offices, parcel-lockers, drop-off-points, post-boxes, express-post-boxes or collection-points."
          },
          "distance_km": {
            "type": "number"
          },
          "last_verified": {
            "type": "string",
            "description": "The date the record was last checked, as YYYY-MM-DD."
          }
        },
        "additionalProperties": false
      },
      "description": "The places within 50 km, nearest first, at most 30."
    }
  },
  "additionalProperties": false
}
find_places annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_place — Read one place in full
Advertised by the server during the last successful anonymous check.
Advertised read-only

Everything about one place from an earlier answer: address, opening hours, what it accepts, and when the record was last checked.

get_place input schema
{
  "type": "object",
  "required": [
    "public_id"
  ],
  "properties": {
    "public_id": {
      "type": "string",
      "description": "The id from an earlier answer, the last part of a place's URL: abc12345."
    }
  },
  "additionalProperties": false
}
get_place output schema
{
  "type": "object",
  "required": [
    "place"
  ],
  "properties": {
    "place": {
      "type": "object",
      "required": [
        "name",
        "category",
        "suburb",
        "country",
        "lat",
        "lng",
        "url"
      ],
      "properties": {
        "lat": {
          "type": "number"
        },
        "lng": {
          "type": "number"
        },
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "brand": {
          "type": "string"
        },
        "hours": {
          "type": "string"
        },
        "closed": {
          "type": "boolean",
          "description": "True when this place has closed; the page says so and lists alternatives."
        },
        "region": {
          "type": "string"
        },
        "suburb": {
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "category": {
          "type": "string"
        },
        "postcode": {
          "type": "string"
        },
        "last_verified": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_place annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
search_places — Find a suburb or a place by name
Advertised by the server during the last successful anonymous check.
Advertised read-only

Suburbs and places matching a name, for turning 'Coburg' or 'Coburg Post Office' into somewhere with a coordinate and a page.

search_places input schema
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "A suburb, a postcode or a place name. At least two characters."
    }
  },
  "additionalProperties": false
}
search_places output schema
{
  "type": "object",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": [
        "null",
        "array"
      ],
      "items": {
        "type": "object",
        "required": [
          "kind",
          "name",
          "url"
        ],
        "properties": {
          "lat": {
            "type": [
              "null",
              "number"
            ]
          },
          "lng": {
            "type": [
              "null",
              "number"
            ]
          },
          "url": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "description": "locality or place."
          },
          "name": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "suburb": {
            "type": "string"
          },
          "place_count": {
            "type": "integer",
            "description": "How many places a locality holds."
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search_places annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1076 ms
95th percentile latency
1076 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1076 ms · metadata changed · 3 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http postfinder-mcp https://api.postfinder.io/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add postfinder-mcp --url https://api.postfinder.io/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable postfinder-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "postfinder-mcp": {
      "url": "https://api.postfinder.io/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "postfinder-mcp": {
      "type": "streamableHttp",
      "url": "https://api.postfinder.io/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start postfinder-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "postfinder-mcp": {
      "type": "http",
      "url": "https://api.postfinder.io/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http postfinder-mcp https://api.postfinder.io/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://api.postfinder.io/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "postfinder-mcp": {
      "serverUrl": "https://api.postfinder.io/mcp"
    }
  }
}

Let your agent find its tools

Find servers like PostFinder MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run PostFinder MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing