Koskamo

Portaur MCP

An official MCP server operated by Portaur LLC that allows AI assistants to query public company information, services, and pricing models, or submit messages and callback requests to the Portaur team. It also offers a customer-specific endpoint for authenticated users to view proposals, contracts, payments, and billing schedules.

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.

Portaur MCP logo, by Portaur LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Portaur LLC
MCP endpoint (Streamable HTTP)
https://portaur.com/mcp
Vendor documentation

What you can do with it

  • Ask about Portaur's services and company information
  • Leave a message or request a callback for the Portaur team
  • View status of proposals and contracts for authenticated customers
  • Check recorded payments and billing schedules for authenticated customers

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
portaur 1.0.0
MCP protocol
2025-06-18
Tools
8 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

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

Portaur LLC builds AI and web software for businesses. The read tools answer from facts Portaur publishes on portaur.com, and ask_portaur answers one question in Portaur's own words. send_message and request_callback leave a request for a person at Portaur, only when the person you are helping asks for it: each sends one confirmation email to the address given, and nothing reaches a person's phone until it is confirmed. Portaur gives no prices through this connection.

Tools

8 advertised

about_portaur — About Portaur
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns facts about Portaur LLC, the company behind portaur.com: who it is, its mission, its founder, how to reach it, and the public pages that say more. Read only. The facts are the ones Portaur publishes on its own site. It never returns prices, client names or anything private.

about_portaur input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
about_portaur annotations
{
  "title": "About Portaur",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
list_services — List Portaur services
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the services Portaur offers, each with its name, a plain language summary and a fuller description, exactly as portaur.com states them. Read only. It never returns prices; pricing_approach explains how pricing works.

list_services input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
list_services annotations
{
  "title": "List Portaur services",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
contact_options — How to reach Portaur
Advertised by the server during the last successful anonymous check.
Advertised read-only

Explains the ways to reach a person at Portaur and what each needs: a written message, a request for a phone call back, or an email. It also explains the confirmation email that follows a request. Read only. Call it before send_message or request_callback to learn what to ask the person for.

contact_options input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
contact_options annotations
{
  "title": "How to reach Portaur",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
pricing_approach — How Portaur prices work
Advertised by the server during the last successful anonymous check.
Advertised read-only

Explains how Portaur prices its work. Read only. It returns no figures: Portaur never quotes a price through an assistant, and every project is scoped with a person.

pricing_approach input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
pricing_approach annotations
{
  "title": "How Portaur prices work",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
ask_portaur — Ask Portaur a question
Advertised by the server during the last successful anonymous check.
Advertised read-only

Asks Portaur's own assistant one question about Portaur and returns its answer, written from the same facts as the website. Read only: the question is answered once and not kept. Use it for a question the other read tools do not answer. It answers only about Portaur, never gives prices, and has a daily limit; once the limit is reached it says so.

ask_portaur input schema
{
  "type": "object",
  "required": [
    "question"
  ],
  "properties": {
    "question": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 1,
      "description": "One question about Portaur."
    }
  },
  "additionalProperties": false
}
ask_portaur annotations
{
  "title": "Ask Portaur a question",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
send_message — Leave a message for Portaur
Advertised by the server during the last successful anonymous check.
Open-world

Leaves a written message for a person at Portaur on behalf of the person you are helping. Needs their name, their email address and the message; a subject is optional. Use it only when the person asked you to contact Portaur. It stores the message in Portaur's inbox and sends one email to the address given, asking the person to confirm; nothing reaches a person's phone until they do. Returns a handle for request_status. It never sends anything to anyone else, never calls or texts anyone, and never quotes a price.

send_message input schema
{
  "type": "object",
  "required": [
    "name",
    "email",
    "body"
  ],
  "properties": {
    "body": {
      "type": "string",
      "maxLength": 10000,
      "minLength": 1,
      "description": "The message, in their words."
    },
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "The name of the person you are writing for."
    },
    "email": {
      "type": "string",
      "maxLength": 255,
      "minLength": 3,
      "description": "Their email address. Portaur sends one confirmation email here."
    },
    "subject": {
      "type": "string",
      "maxLength": 300,
      "description": "A short subject line. Optional."
    }
  },
  "additionalProperties": false
}
send_message annotations
{
  "title": "Leave a message for Portaur",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
request_callback — Ask Portaur to call back
Advertised by the server during the last successful anonymous check.
Open-world

Asks a person at Portaur to telephone the person you are helping. Needs their name, email address, phone number and the reason for the call; a preferred time window is optional. Use it only when the person asked to be called. It stores the request in Portaur's inbox and sends one email to the address given, asking the person to confirm; Portaur's phone is alerted only after they do. A person makes the call by hand: nothing ever dials or texts the number. Returns a handle for request_status. It never sends anything to anyone else and never quotes a price.

request_callback input schema
{
  "type": "object",
  "required": [
    "name",
    "email",
    "phone",
    "reason"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "The name of the person who wants a call."
    },
    "email": {
      "type": "string",
      "maxLength": 255,
      "minLength": 3,
      "description": "Their email address. Portaur sends one confirmation email here."
    },
    "phone": {
      "type": "string",
      "maxLength": 40,
      "minLength": 7,
      "description": "The number to call: 7 to 15 digits, with spaces and + ( ) . allowed."
    },
    "reason": {
      "type": "string",
      "maxLength": 10000,
      "minLength": 1,
      "description": "What the call is about."
    },
    "window": {
      "type": "string",
      "maxLength": 200,
      "description": "When they would like the call, with their time zone. Optional."
    }
  },
  "additionalProperties": false
}
request_callback annotations
{
  "title": "Ask Portaur to call back",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
request_status — Check a request
Advertised by the server during the last successful anonymous check.
Advertised read-only

Says how a request made with send_message or request_callback is doing, given the handle that tool returned: waiting for the person to confirm their email, confirmed and the owner has been told, or not found. Read only. It never returns the message or the address.

request_status input schema
{
  "type": "object",
  "required": [
    "handle"
  ],
  "properties": {
    "handle": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]+$",
      "maxLength": 32,
      "minLength": 1,
      "description": "The handle send_message or request_callback returned."
    }
  },
  "additionalProperties": false
}
request_status annotations
{
  "title": "Check a request",
  "readOnlyHint": true,
  "openWorldHint": 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
222 ms
95th percentile latency
222 ms

Maintenance history

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

  • · probe · passed · 222 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 portaur-mcp https://portaur.com/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 portaur-mcp --url https://portaur.com/mcp

Cursor

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

Cline

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

VS Code

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

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "portaur-mcp": {
      "url": "https://portaur.com/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": {
    "portaur-mcp": {
      "serverUrl": "https://portaur.com/mcp"
    }
  }
}

Let your agent find its tools

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