Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Power Portals Pro

NUGET · POWERPORTALSPRO.MCP · SCANNED SEP 20

Component API, code samples and Dataverse metadata for building Power Portals Pro portals.

70 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency32
Schema Quality & AI Usability73
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 11537 tokens (~180/item across 64 items; 64 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management17
  • Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 64 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Power Portals Pro MCP server?

Power Portals Pro runs locally as a NuGet package, launched with dnx PowerPortalsPro.Mcp@9.0.0 --yes. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

nuget · PowerPortalsPro.Mcp

# add to Claude Code
claude mcp add power-portals-pro-powerportalspro-mcp -- dnx PowerPortalsPro.Mcp@9.0.0 --yes
// .cursor/mcp.json
{
  "mcpServers": {
    "power-portals-pro-powerportalspro-mcp": {
      "command": "dnx",
      "args": [
        "PowerPortalsPro.Mcp@9.0.0",
        "--yes"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "power-portals-pro-powerportalspro-mcp": {
      "command": "dnx",
      "args": [
        "PowerPortalsPro.Mcp@9.0.0",
        "--yes"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add power-portals-pro-powerportalspro-mcp -- dnx PowerPortalsPro.Mcp@9.0.0 --yes
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "power-portals-pro-powerportalspro-mcp": {
      "type": "local",
      "command": [
        "dnx",
        "PowerPortalsPro.Mcp@9.0.0",
        "--yes"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  power-portals-pro-powerportalspro-mcp:
    command: "dnx"
    args: ["PowerPortalsPro.Mcp@9.0.0", "--yes"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "power-portals-pro-powerportalspro-mcp": {
      "Transport": "stdio",
      "Command": "dnx",
      "Arguments": [
        "PowerPortalsPro.Mcp@9.0.0",
        "--yes"
      ]
    }
  }
}
// mcp.json
{
  "mcpServers": {
    "power-portals-pro-powerportalspro-mcp": {
      "command": "dnx",
      "args": [
        "PowerPortalsPro.Mcp@9.0.0",
        "--yes"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 +15
    • Malware scan: unverified → pass security
  • 18 Sept 26 −14
    • Malware scan: pass → unverified security
    • Schema quality: 10216 → 11537 functional
    • Stability: unverified → 0.10 functional
    • Package version: 8.1.0 → 9.0.0 functional
  • 16 Sept 26 +15
    • Malware scan: unverified → pass security
  • 15 Sept 26 53

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed nuget/PowerPortalsPro.Mcp@9.0.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem nuget
Reason Signature present, unreadable

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 64 exposed · ~11,537 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
list_security_roles ~87

List the Dataverse security roles available in the root business unit, so a role can be chosen by name before assigning it. Use it before create_dataverse_application_user or assign_application_user_role rather than guessing a name — role names vary between environments and an assignment silently does nothing if the name does not match.

NameTypeReqDescription
nameContainsstring|nullOnly list roles whose name contains this.

No output schema declared.

No examples provided.

list_solutions ~118

List the solutions installed in this environment and the Power Portals Pro releases available to install, so you can see whether the environment is behind. The framework needs PowerPortalsProCore; PowerPortalsProLocalization is optional and only backs the translation-memory features; PowerPortalsProEnhancedAuthorization is optional and assigns Power Pages web roles to new users on portals using enhanced authorization (it requires Power Pages in the environment). Use this before install_solution, and when a portal fails in ways that suggest missing tables or a 402 from every data endpoint.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_tables ~96

Find Dataverse tables in this project's environment by name. Returns logical names — the names you write in code — alongside display names. A search term is required: a real environment has over a thousand tables. Use this to confirm a table's logical name before writing it.

NameTypeReqDescription
searchstringyesText to match against the logical name, schema name or display name, e.g. "contact", "invoice", "ppp_".

No output schema declared.

No examples provided.

list_views ~90

List a Dataverse table's saved views WITH THEIR REAL GUIDs. MainGrid and SubGrid take view ids (DefaultViewId, ViewIds), and those ids exist only in this environment — they cannot be guessed or remembered. Always call this before writing a grid that binds to views, instead of leaving a placeholder.

NameTypeReqDescription
tablestringyesThe table's logical name, e.g. "contact".

No output schema declared.

No examples provided.

publish_customizations ~146

Publish all pending customizations in the environment, so changes made in the maker portal become live. Reach for this when the portal is serving stale metadata — a column you just added not appearing, a renamed label still showing the old text, a new option-set value missing from a choice. It is the same action as 'Publish all customizations' in the maker portal, so it publishes EVERYTHING pending in the environment, not only your own changes: on a shared development environment that can make a colleague's half-finished work live. Not needed after install_solution — importing a managed solution publishes what it brings. Safe to re-run, and on a large environment it can take several minutes.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

read_records ~280

Read records from any table in the environment. Either name a `table` for a straight page of it, or pass `fetchXml` for anything more — filters, joins, ordering, aggregates. The FetchXML a saved view carries (from list_views) can be run verbatim, which is how you see the rows a portal grid will actually show. Use this to find out what real data looks like: the option-set value a row really carries, whether a lookup is populated, whether the record your code just wrote came out right. Reads as the connected service principal or user, NOT as a portal user — none of the portal's table, column or row security applies, so this cannot tell you what a given portal user would see. Read-only: there is no tool that creates, changes or deletes a business record.

NameTypeReqDescription
columnsstring|nullComma-separated columns to return, e.g. "name,telephone1". Omit for every column.
fetchXmlstring|nullA FetchXML query to run verbatim. Takes precedence over `table`.
tablestring|nullLogical name of the table, e.g. "contact". Omit when passing fetchXml.
topintegerMaximum rows (1-250, default 20). Ignored when fetchXml sets its own count.

No output schema declared.

No examples provided.

remove_application_user_column_profile ~142

Take a Dataverse application user out of a column security profile. Unless it holds System Administrator or another profile covering the same columns, creating portal users starts failing immediately and password sign-in can no longer read stored hashes. Only a direct membership can be removed; a profile held through a team is changed on the team. Needs System Administrator on the environment. The user is asked to confirm.

NameTypeReqDescription
clientIdstringyesThe Entra application (client) id.
confirmstring|nullRequired when the client cannot prompt the user: the client id, echoed back.
profileNamestringyesThe column security profile's exact name.

No output schema declared.

No examples provided.

remove_application_user_role ~149

Take a security role away from a Dataverse application user. The reason to reach for this is narrowing an application user that was given System Administrator to get things working — assign the narrower role first, then remove the broad one, so there is no window where the portal can do nothing. Removing the only role a user holds stops every Dataverse call it makes. Needs System Administrator on the environment. The user is asked to confirm.

NameTypeReqDescription
clientIdstringyesThe Entra application (client) id.
confirmstring|nullRequired when the client cannot prompt the user: the client id, echoed back.
securityRolestringyesThe security role's exact name.

No output schema declared.

No examples provided.

search_docs ~252

Search PowerPortalsPro documentation, component API reference and code samples. Returns ranked results with an id and a short excerpt; pass an id to get_doc, get_component_api or get_example for the full content. Use this for open questions ("how do I filter a grid per user"). If you already know the component name, call get_component_api directly instead. Search in English: the documentation is English, so translate the user's question first if they asked in another language. Answer them in theirs — and note that component, parameter and column names are always English in code, whatever language the conversation is in.

NameTypeReqDescription
kindstring|nullRestrict to one kind of result: "doc", "type" or "sample". Omit for all three.
limitintegerMaximum results (1-25, default 8).
querystringyesWhat to look for, in English. Component names, parameter names and plain questions all work.
stackstring|nullRestrict to one UI stack: "blazor" or "react". Omit to search both. Results for the wrong stack are actively harmful, so set this whenever you know which stack the project uses.

No output schema declared.

No examples provided.

set_app_service_settings ~213

Add or update application settings on a web app, merging with what is already there rather than replacing it. Use the double-underscore form of a configuration key — D365:ClientId becomes D365__ClientId — because the colon form does not work on Linux App Service. Prefer a Key Vault reference (@Microsoft.KeyVault(SecretUri=...)) over a literal for anything secret. The user is asked to confirm and is shown which names are being set, never their values. The app restarts.

NameTypeReqDescription
confirmstring|nullRequired when the client cannot prompt the user: the exact app name, echoed back.
namestring|nullThe web app name. Omit to use the one recorded in this workspace's binding.
resourceGroupstring|nullThe resource group, when the name is ambiguous.
settingsobjectyesThe settings to set, as a JSON object of name to value, e.g. {"ASPNETCORE_ENVIRONMENT":"Production"}.

No output schema declared.

No examples provided.

update_portal_role ~201

Change a Portal Role: rename it, set its description, or activate/deactivate it. Only the arguments you pass are changed. Deactivating is the safe way to switch a role off — an inactive role grants nothing and mints no claim, but its assignments survive, so reactivating restores everyone who held it. Renaming is the dangerous one: the name is the only thing joining the record to the AddPortalRole call, so renaming here without changing the code silently revokes the role from everybody holding it.

NameTypeReqDescription
activeboolean|nulltrue to activate, false to deactivate. Omit to leave the state alone.
descriptionstring|nullA new description. Pass an empty string to clear it.
namestringyesThe current name of the role to change.
newNamestring|nullA new name. Change the matching AddPortalRole call too, or the role stops granting anything.

No output schema declared.

No examples provided.

update_portal_role_configuration ~162

Change how a role is handed to newly registered users: switch its assignment mode, replace its FetchXML criteria, or activate/deactivate the row. Only the arguments you pass are changed. Criteria is validated before writing, the same as on create. Assignment needs both this row and the role it names to be active.

NameTypeReqDescription
activeboolean|nulltrue to activate, false to deactivate. Omit to leave the state alone.
assignmentModestring|nullNew assignment mode: "automatic", "criteria" or "none".
criteriastring|nullNew FetchXML criteria, rooted in "contact". Pass an empty string to clear it.
roleNamestringyesName of the Portal Role whose configuration row should change.

No output schema declared.

No examples provided.

update_portal_website ~172

Change a Power Portals Pro Website record: correct its URL, set a new licence key, or activate/deactivate it. Only the arguments you pass are changed. Deactivating has the same effect as deleting — every data endpoint on that host starts returning 402 — but is reversible, so prefer it. Licence key values are never read back, only written.

NameTypeReqDescription
activeboolean|nulltrue to activate, false to deactivate. Omit to leave the state alone.
licenseKeystring|nullA new licence key. Pass an empty string to clear it, which makes the check fail.
newUrlstring|nullA corrected URL. The licence check matches this against the request's host.
urlstringyesThe current URL of the record to change.

No output schema declared.

No examples provided.

whats_new ~96

Return PowerPortalsPro release notes, newest first. Use it to check when a feature arrived or whether something changed behaviour, especially if the project's pinned version is older than this server's.

NameTypeReqDescription
limitintegerMaximum releases to return (1-10, default 3).
sinceVersionstring|nullOnly include releases after this version, e.g. "6.1". Omit for the most recent few.

No output schema declared.

No examples provided.

Common questions

What is the Power Portals Pro MCP server?

Power Portals Pro is an MCP server listed in the public MCP registry as io.github.Power-Portals-Pro/powerportalspro-mcp. Component API, code samples and Dataverse metadata for building Power Portals Pro portals. This page covers its NuGet package (PowerPortalsPro.Mcp).

Is the Power Portals Pro MCP server safe to use?

Power Portals Pro scores 70 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Power Portals Pro MCP server expose?

Power Portals Pro exposes 64 tools: read_records, whats_new, update_portal_role_configuration, list_portal_roles, get_component_api, and 59 more. Their descriptions and schemas cost roughly 11,537 tokens of context every time the server is loaded.

Is the Power Portals Pro MCP server still maintained?

Power Portals Pro is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.