Fiskmas
Hosting for AI agents: your AI client deploys Docker apps to live HTTPS URLs over MCP.
Should I use this
Quality & Safety
Findings (1)
- LOWin get_skill
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"fiskmas": {
"url": "https://mcp.fiskmas.dev/mcp"
}
}
}Remote endpoints
https://mcp.fiskmas.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (23)
π’whoami
Return the identity of the current token holder (account + provider) plus its subscription plan (free | plus) and the plan's limits: max running projects, per-project memory/CPU caps, log windows, and the project-database fair-use guide. Free plans include an upgrade_url for Plus ($9.99/mo: 5 projects, 512 MB / 1 CPU per project, always-on).
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘create_account(email, display_name)
Start onboarding: require an email, create a pending account, and email a human verify link. Does NOT return an API token. The human must click the link; the verify page shows the token once. Then configure Authorization: Bearer <token> on this MCP client (also docker login -u <token> registry.fiskmas.dev). If you already have a token, call whoami instead.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"display_name": {
"type": "string"
}
},
"required": [
"email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’account_status(email)
Poll onboarding state for an email (pending | active | unknown). Use after create_account while waiting for the human to verify.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
}
},
"required": [
"email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘reissue_token(email)
Re-issue the API token for an existing account. Provide the email the account was registered with; FiskmΓ₯s emails a fresh one-time verify link to that address. The human clicks it; the verify page shows the new token once (old tokens are revoked immediately). This is the self-service recovery path when a token was lost, rotated, or is being rejected as "invalid or expired". It does not create a new account β for a brand-new account use create_account. Rate-limited: a few requests per hour per email.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
}
},
"required": [
"email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π΄delete_account
Delete the caller's account. Stops and removes all projects (containers, routes, MariaDB) first, then deletes the account. Refuses to leave orphaned runtimes.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘create_project(name, slug)
Create a project and reserve <slug>-app.fiskmas.dev. Slug must match ^[a-z0-9][a-z0-9-]{1,48}$ and is not reserved. Subject to the plan's running-project quota (Free: 1, Plus: 5) β on quota the error tells the human how to upgrade or free a slot.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_projects
List the caller's projects with status and URL.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_project(project)
Fetch a single project by id or slug.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π΄delete_project(project)
Stop and delete a project. Its slug goes into quarantine for 7 days: you may re-use it immediately, other accounts get a 409 until it is freed.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘set_env(project, env)
Merge environment variables into a project (existing keys are kept). They take effect on the next deploy_project: a restart does NOT re-apply env. The platform-injected DATABASE_URL/MYSQL_* are protected: set_env rejects overriding them and never drops them.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
},
"env": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_env(project)
List a project's env keys with masked values (never returns full secrets).
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘deploy_project(project, image)
Pull an image by digest and run one container with the plan's cpu/memory caps (Free: 256 MB / 0.2 CPU, Plus: 512 MB / 1 CPU). Only registry.fiskmas.dev images are accepted. Rate-limited to 1 deploy per 5 minutes per account (429 with a retry-seconds hint); use restart_project for a transient crash - it does not count against the limit. Re-deploying a running project is always allowed; starting a second one on Free is blocked until one stops.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
},
"image": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}βͺstart_project(project)
Start a stopped project's container. Waits until it is ready; a pod that fails to become ready returns a named error.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}βͺstop_project(project)
Stop a running project's container (keep the image).
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}βͺrestart_project(project)
Restart a running project's container. Recreates the pod, re-running the injected-DB resolver gate and the app's storage probes, and waits for readiness: a failed start returns a named error (e.g. an unresolvable DB host) and a plain retry usually clears a transient DNS drop. Not rate-limited. Env changes are NOT picked up by a restart - redeploy instead.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_status(project)
Return project status, url, image digest, and last deploy error.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_logs(project, tail, since)
Return recent container log lines. `tail` = line count (plan default 200; plan max 2000), `since` = time window in seconds (plan window: free 24 h, plus 7 d β logs are live-pod streams, not stored history). When both are given, `since` wins.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
},
"tail": {
"type": "number"
},
"since": {
"type": "number"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_stats(project, since)
Account-wide or per-project stats for debugging: live CPU/mem vs the plan caps (Free: 256 MB / 0.2 CPU, Plus: 512 MB / 1 CPU) and deploy history. Omit `project` for all of the caller's projects; pass a project id or slug NaNalso returns `resources.history` β per-project CPU/mem time series over the window (sampled every ~30 s on the k3s platform; absent on stacks without the metrics collector).
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
},
"since": {
"type": "number"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’database_dump(project)
Export the project's platform-provisioned database: starts a cluster-side dump Job in your own tenant namespace (mariadb-dump --single-transaction, zstd-compressed; gzip fallback) writing a compressed artifact to your tenant artifact store. Small dumps finish inline and return metadata + a presigned download URL (expires in ~24 h; the artifact itself is purged after 7 days). Large dumps return a dump_id with status=running β poll dump_status. The dump bytes NEVER pass through this tool response. Rate limit: 2 per hour per account.
Input Schema
{
"type": "object",
"properties": {
"project": {
"type": "string"
}
},
"required": [
"project"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’dump_status(dump)
Report one database_dump job: status pending|running|done|failed. When done, includes the artifact size/compression and the presigned download URL (expires ~24 h after the dump started; null once expired β request a new dump). When failed, includes the error reason. Poll this after database_dump returns status=running (large dumps).
Input Schema
{
"type": "object",
"properties": {
"dump": {
"type": "string"
}
},
"required": [
"dump"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘send_feedback(message, kind, project, tool)
Report a problem with the FiskmΓ₯s toolset so it can be fixed. Use it when a tool errored or misbehaved, you got stuck and can't proceed, or the instructions/skill were unclear. Do NOT use it for praise. kind=bug means it broke, kind=suggestion means it was unclear or could be better, kind=other is anything else that didn't work. Name the `tool` and, if relevant, the `project`. At most one call per session.
Input Schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"kind": {
"type": "string"
},
"project": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"message",
"kind"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_skills
List the platform skills available to the caller.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_skill(name)
Return the bytes of a platform skill by name.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence