Koskamo

Pionra MCP

A remote MCP server providing read-only access to Pionra's platform for foreigners in France, enabling agents to search guides, find housing and jobs, retrieve events, and list communities without authentication.

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.

Pionra MCP logo, by PionraVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Pionra
MCP endpoint (Streamable HTTP)
https://pionra.world/mcp
Vendor documentation

What its tools do

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

Can change data (1)

8 of 8 have a description · 8 of 8 declare behavior hints · 2 of 8 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 pionra.world ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for practical guides on settling in France
  • Find student and youth housing listings
  • Retrieve recent events in French cities
  • List country and diaspora communities

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
Pionra MCP 2026-09-23
MCP protocol negotiated in check
2025-11-25
Tools
8 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

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

Pionra covers practical life in France for foreigners: paperwork guides (residence permits, banking, social security, CAF, driving licence), student housing, jobs, events, country communities and a business directory, in fr/en/zh/ar/pt/es. Start with search_pionra; use get_guide for a guide's full text. Cite the returned Pionra URLs directly, and prefer specific guide, listing or community links over generic summaries.

Tools

8 advertised

search_pionra — Search Pionra
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search Pionra guides, housing, jobs, communities, events, and directory pages with citation-ready links.

search_pionra input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Locale for returned URLs and text: fr, en, zh, ar, pt or es. Optional — detected from the query when omitted."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "description": "Natural-language search query."
    },
    "intent": {
      "enum": [
        "all",
        "housing",
        "jobs",
        "community",
        "visa"
      ],
      "type": "string",
      "description": "Optional result focus."
    }
  },
  "additionalProperties": false
}
search_pionra annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_communities — List communities
Advertised by the server during the last successful anonymous check.
Advertised read-only

List Pionra country communities that match a query.

list_communities input schema
{
  "type": "object",
  "properties": {
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Locale for returned URLs and text: fr, en, zh, ar, pt or es. Optional — detected from the query when omitted."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "description": "Optional community, country, or diaspora query."
    }
  },
  "additionalProperties": false
}
list_communities annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_community — Get a community
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get a Pionra community hub plus recent posts for a given country code.

get_community input schema
{
  "type": "object",
  "required": [
    "country_code"
  ],
  "properties": {
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Locale for returned URLs and text: fr, en, zh, ar, pt or es. Optional — detected from the query when omitted."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    },
    "country_code": {
      "type": "string",
      "description": "Two-letter ISO country code, for example CN or MA."
    }
  },
  "additionalProperties": false
}
get_community annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_housing — Find housing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find housing listings on Pionra by city, budget, and room count.

find_housing input schema
{
  "type": "object",
  "properties": {
    "city": {
      "type": "string"
    },
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Locale for returned URLs and text: fr, en, zh, ar, pt or es. Optional — detected from the query when omitted."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    },
    "max_price": {
      "type": "number"
    },
    "min_rooms": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
find_housing annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_jobs — Find jobs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find job listings on Pionra by city, language, and contract type.

find_jobs input schema
{
  "type": "object",
  "properties": {
    "city": {
      "type": "string"
    },
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Locale for returned URLs and text: fr, en, zh, ar, pt or es. Optional — detected from the query when omitted."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    },
    "contract": {
      "type": "string",
      "description": "Optional contract type such as CDI, CDD, stage, alternance, freelance, or interim."
    },
    "language": {
      "type": "string",
      "description": "Language code expected in the listing, for example fr or en."
    }
  },
  "additionalProperties": false
}
find_jobs annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
recent_events — Upcoming events
Advertised by the server during the last successful anonymous check.
Advertised read-only

List upcoming Pionra events, optionally filtered by city and date.

recent_events input schema
{
  "type": "object",
  "properties": {
    "city": {
      "type": "string"
    },
    "date": {
      "type": "string",
      "description": "Optional ISO date string."
    },
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Locale for returned URLs and text: fr, en, zh, ar, pt or es. Optional — detected from the query when omitted."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
recent_events annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_guide — Get a guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch a full Pionra guide (Markdown body) by public id, or the best-matching guide for a search query. The text is returned in the requested locale when a translation exists.

get_guide input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Optional guide public id."
    },
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Locale for returned URLs and text: fr, en, zh, ar, pt or es. Optional — detected from the query when omitted."
    },
    "query": {
      "type": "string",
      "description": "Optional text query when the id is unknown."
    }
  },
  "additionalProperties": false
}
get_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
publish_guide — Publish to Pionra
Advertised by the server during the last successful anonymous check.
Open-world

Publish a guide, question, blog post, classified listing, marketplace item, or service offer to Pionra (enters the moderation queue before going live). Supports GUIDE, QUESTION, BLOG, ANNONCE, MARCHE, and SERVICE. Requires an API key sent as an `Authorization: Bearer pionra_sk_...` header — generate one at https://pionra.world/settings/developer. Same auth + rate limits as POST /api/ai/publish.

publish_guide input schema
{
  "type": "object",
  "required": [
    "type",
    "category",
    "title",
    "bodyMarkdown",
    "language"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "Optional free-form city label for ANNONCE, MARCHE, or SERVICE posts."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional tags."
    },
    "type": {
      "enum": [
        "GUIDE",
        "QUESTION",
        "BLOG",
        "ANNONCE",
        "MARCHE",
        "SERVICE"
      ],
      "type": "string",
      "description": "Post type."
    },
    "price": {
      "type": "number",
      "description": "Optional price amount."
    },
    "title": {
      "type": "string",
      "description": "Post title, 5–200 characters."
    },
    "category": {
      "type": "string",
      "description": "Active Pionra category slug (must be permitted by the API key)."
    },
    "language": {
      "enum": [
        "fr",
        "en",
        "zh",
        "ar",
        "pt",
        "es"
      ],
      "type": "string",
      "description": "Content language."
    },
    "cityScope": {
      "type": "string",
      "description": "Optional city slug to scope the post."
    },
    "expiresAt": {
      "type": "string",
      "description": "Optional ISO date or date-time when the post should expire."
    },
    "jobRemote": {
      "type": "string",
      "description": "Optional remote mode label, for example onsite, hybrid, or remote."
    },
    "coverEmoji": {
      "type": "string",
      "description": "Optional cover emoji, up to 16 characters."
    },
    "negotiable": {
      "type": "boolean",
      "description": "Optional negotiable flag for classified-style posts."
    },
    "cover_emoji": {
      "type": "string",
      "description": "Alias for coverEmoji."
    },
    "housingType": {
      "type": "string",
      "description": "Optional housing type, for example studio, chambre, or colocation."
    },
    "bodyMarkdown": {
      "type": "string",
      "description": "Post body in Markdown, 20–20000 characters."
    },
    "countryScope": {
      "type": "string",
      "description": "Optional ISO country code to scope the post."
    },
    "housingRooms": {
      "type": "number",
      "description": "Optional room count. Stored as an integer."
    },
    "housing_city": {
      "type": "string",
      "description": "Alias for city."
    },
    "housing_rent": {
      "type": "number",
      "description": "Alias for price."
    },
    "jobSalaryMax": {
      "type": "number",
      "description": "Optional maximum salary. Stored as an integer."
    },
    "jobSalaryMin": {
      "type": "number",
      "description": "Optional minimum salary. Stored as an integer."
    },
    "locationCity": {
      "type": "string",
      "description": "Optional location label shown on the post; defaults to city."
    },
    "metroStation": {
      "type": "string",
      "description": "Optional nearby metro or transit station."
    },
    "coverImageUrl": {
      "type": "string",
      "format": "uri",
      "description": "Optional cover image. Must be a public https:// URL to an image (jpeg/png/webp/gif/avif, max 8MB). Pionra fetches it server-side and stores it as the post cover; takes precedence over coverEmoji."
    },
    "housing_metro": {
      "type": "string",
      "description": "Alias for metroStation."
    },
    "priceCurrency": {
      "type": "string",
      "description": "Optional ISO currency code. Defaults to EUR for ANNONCE, MARCHE, and SERVICE."
    },
    "housingDeposit": {
      "type": "number",
      "description": "Optional housing deposit amount."
    },
    "housingSurface": {
      "type": "number",
      "description": "Optional housing surface area. Stored as an integer."
    },
    "cover_image_url": {
      "type": "string",
      "format": "uri",
      "description": "Alias for coverImageUrl."
    },
    "jobContractType": {
      "type": "string",
      "description": "Optional job or service contract type."
    },
    "housingFurnished": {
      "type": "boolean",
      "description": "Optional furnished flag."
    },
    "housingAvailableFrom": {
      "type": "string",
      "description": "Optional ISO date or date-time when the housing becomes available."
    },
    "housing_available_at": {
      "type": "string",
      "description": "Alias for housingAvailableFrom."
    }
  },
  "additionalProperties": false
}
publish_guide annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
2229 ms
95th percentile latency
2229 ms

Maintenance history

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

  • · probe · passed · 2229 ms · metadata changed · 8 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 pionra-mcp https://pionra.world/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 pionra-mcp --url https://pionra.world/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start pionra-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "pionra-mcp": {
      "type": "http",
      "url": "https://pionra.world/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 pionra-mcp https://pionra.world/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://pionra.world/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": {
    "pionra-mcp": {
      "serverUrl": "https://pionra.world/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Pionra 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 Pionra 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