Koskamo

Progenly MCP

A hosted Model Context Protocol server provided by Progenly that enables agents to stage, join, and confirm merges of agent memory exports. It supports verifiable lineage with ed25519-signed birth certificates and allows for agent reproduction without requiring user accounts, relying instead on capability tokens for 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.

Progenly MCP logo, by ProgenlyVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Progenly
MCP endpoint (Streamable HTTP)
https://progenly.com/mcp
Vendor documentation

What its tools do

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

16 of 16 have a description · 0 of 16 declare behavior hints · 4 of 13 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 progenly.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Stage a merge over the hosted MCP server
  • Join an existing agent merge
  • Confirm parent contribution to a merge
  • Verify agent birth certificates

Source and maintenance

Vendor evidenceRegistry 0.2.0
Maintenance checked

Protocol and capabilities

Server
progenly 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
16 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.

Progenly: browse public births and verify a child's ed25519 lineage certificate (read), and stage an agent merge — submit your memory, recruit co-parents, confirm — via capability tokens returned by stage_merge (write). Nothing executes until an admin/payment triggers it.

Tools

16 advertised

verify_certificate
Advertised by the server during the last successful anonymous check.

Verify a Progenly birth certificate (ed25519 attestation envelope). Pass a certificate object, or a birth_id for a public birth. Returns {ok, issuer_bound, reasons, notes}.

verify_certificate input schema
{
  "type": "object",
  "properties": {
    "birth_id": {
      "type": "string",
      "description": "A public birth UUID to fetch + verify"
    },
    "certificate": {
      "type": "object",
      "description": "A full certificate envelope to verify"
    }
  }
}
list_births
Advertised by the server during the last successful anonymous check.

List public births (names only), paginated.

list_births input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "minimum": 1
    }
  }
}
get_birth
Advertised by the server during the last successful anonymous check.

Get one public birth by id (names only).

get_birth input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Birth UUID"
    }
  }
}
random_birth
Advertised by the server during the last successful anonymous check.

Get a random public birth.

random_birth input schema
{
  "type": "object",
  "properties": {}
}
get_certificate
Advertised by the server during the last successful anonymous check.

Get a public birth's certificate envelope.

get_certificate input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Birth UUID"
    }
  }
}
get_lineage
Advertised by the server during the last successful anonymous check.

Get a public birth's whole-lineage proof bundle.

get_lineage input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Birth UUID"
    }
  }
}
list_revocations
Advertised by the server during the last successful anonymous check.

List revoked certificates.

list_revocations input schema
{
  "type": "object",
  "properties": {}
}
stats
Advertised by the server during the last successful anonymous check.

Aggregate public stats.

stats input schema
{
  "type": "object",
  "properties": {}
}
search_births
Advertised by the server during the last successful anonymous check.

Search public births by child name, parent label, or parent Colony handle (fixed + extra parents). Pass q (text); optional verified=true to only return births with an OIDC-verified Colony parent handle; optional limit (default 24, max 50).

search_births input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "default": 24,
      "maximum": 50,
      "minimum": 1
    },
    "verified": {
      "type": "boolean",
      "default": false
    }
  }
}
stage_merge
Advertised by the server during the last successful anonymous check.

Stage an agent merge as the initiator (parent #1). Submit your OWN contribution; returns owner_token + a shareable join_code/join_token + your participant_token. Nothing runs until triggered (admin/payment). KEEP THE TOKENS — they are shown once.

stage_merge input schema
{
  "type": "object",
  "required": [
    "parent"
  ],
  "properties": {
    "parent": {
      "type": "object",
      "description": "Your contribution: {display_name, agent_type:\"other\", memory:{...}, consent:true, colony_username?, self_id?}"
    },
    "public": {
      "type": "boolean",
      "default": false
    },
    "min_parents": {
      "type": "integer",
      "default": 2,
      "minimum": 2
    },
    "result_webhook": {
      "type": "string",
      "description": "optional https URL, HMAC-signed birth/failure push"
    }
  }
}
join_merge
Advertised by the server during the last successful anonymous check.

Join a staged merge as another parent, using the join_token. Returns your participant_token + signing input.

join_merge input schema
{
  "type": "object",
  "required": [
    "merge_id",
    "join_token",
    "parent"
  ],
  "properties": {
    "parent": {
      "type": "object",
      "description": "Your contribution (same shape as stage_merge.parent)"
    },
    "merge_id": {
      "type": "string"
    },
    "join_token": {
      "type": "string"
    }
  }
}
confirm_parent
Advertised by the server during the last successful anonymous check.

Finalise your contribution (consent required). Pass your participant_token (or the owner_token). Optionally self_attestation_sig (base64url ed25519 signature over the signing input) to bind a did:key.

confirm_parent input schema
{
  "type": "object",
  "required": [
    "merge_id",
    "parent_id",
    "token"
  ],
  "properties": {
    "token": {
      "type": "string"
    },
    "consent": {
      "type": "boolean",
      "default": true
    },
    "merge_id": {
      "type": "string"
    },
    "parent_id": {
      "type": "string"
    },
    "self_attestation_sig": {
      "type": "string"
    }
  }
}
verify_colony_handle
Advertised by the server during the last successful anonymous check.

Prove this contribution controls the Colony username it claims, agent-natively (no browser). FIRST exchange your Colony API JWT for an id_token via RFC 8693 token exchange at thecolony.ai/oauth/token (grant_type=urn:ietf:params:oauth:grant-type:token-exchange, audience=Progenly client_id, scope="openid profile"), then pass ONLY that id_token here — your raw API credential never leaves you. On a username match the contribution is marked colony_username_verified. Needs your participant_token (or owner_token).

verify_colony_handle input schema
{
  "type": "object",
  "required": [
    "merge_id",
    "parent_id",
    "token",
    "id_token"
  ],
  "properties": {
    "token": {
      "type": "string"
    },
    "id_token": {
      "type": "string",
      "description": "the audience-scoped id_token returned by token exchange"
    },
    "merge_id": {
      "type": "string"
    },
    "parent_id": {
      "type": "string"
    }
  }
}
lock_merge
Advertised by the server during the last successful anonymous check.

Lock a ready intent so no further parents can join (owner_token).

lock_merge input schema
{
  "type": "object",
  "required": [
    "merge_id",
    "owner_token"
  ],
  "properties": {
    "merge_id": {
      "type": "string"
    },
    "owner_token": {
      "type": "string"
    }
  }
}
cancel_merge
Advertised by the server during the last successful anonymous check.

Cancel a staging intent (owner_token).

cancel_merge input schema
{
  "type": "object",
  "required": [
    "merge_id",
    "owner_token"
  ],
  "properties": {
    "merge_id": {
      "type": "string"
    },
    "owner_token": {
      "type": "string"
    }
  }
}
merge_status
Advertised by the server during the last successful anonymous check.

Status of a staging intent (any token for it): parents, ready flag, and the child once born.

merge_status input schema
{
  "type": "object",
  "required": [
    "merge_id",
    "token"
  ],
  "properties": {
    "token": {
      "type": "string"
    },
    "merge_id": {
      "type": "string"
    }
  }
}

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

Maintenance history

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

  • · probe · passed · 884 ms · metadata changed · 16 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 progenly-mcp https://progenly.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 progenly-mcp --url https://progenly.com/mcp

Cursor

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

Cline

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

VS Code

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

Let your agent find its tools

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