Skip to content

Production connector live

MuniPro for AI

Bring MuniPro into the conversation.

Bring authorized borrower data, saved financing cases, scales, new-money and refunding models, market activity, and cash analysis into Rogo, ChatGPT, Claude, Codex, Copilot, or another admitted MCP client. Your MuniPro role and product access determine the tools available.

One secure connector URL

https://munipro.com/mcp

Direct OAuth connection is available now. Public directory listings are in publication preparation and are not yet live.

01 Workflows

One connection across MuniPro.

The connector is MuniPro-wide—not a BondGov-only or issuer-profile integration. It follows the same borrower, company, product-entitlement, and write rules as the browser, then returns guided next steps so a conversation can move across related workflows.

Borrowers and debt

Resolve an authorized borrower, inspect its workspace, debt profile, securities, documents, ratings, cash context, and available next actions.

Starter prompt
“Find the borrower, summarize its outstanding debt, and show me the most relevant next workflows.”

Accounting and audit

Review governed rule, ingest, and allocation queues; open exceptions; period-close status; attribution activity; configured dimensions; GASB schedules; journal support; and bounded lease/SBITA measurements. These reads do not resolve, certify, post, or edit records.

Starter prompt
“Review this borrower’s accounting control center, identify open exceptions and pending approvals, then show the relevant dimensions and period-close evidence.”

Saved cases and scales

List and inspect saved borrower financing configurations; create a bounded case, exact-copy a visible browser case, or update and retire an MCP-managed case through signed preview and confirmation. Read current borrower and market scales separately before running numbers.

Starter prompt
“List this borrower’s saved financing cases, copy the selected case, preview my changes for confirmation, then refresh current scale and refunding inputs before we run numbers.”

New-money models

Inspect prior saved configuration when requested, refresh current financing and scale inputs, run bounded synchronous or asynchronous new-money structures, and analyze competitive-bid coupons from an independently reviewed fixed par and yield ladder. Competitive-bid analysis never submits or awards a bid.

Starter prompt
“Run a new-money model from the saved scale and explain debt service, sources and uses, and assumptions. If I provide a fixed notice-of-sale par ladder and yield curve, analyze competitive-bid coupons without submitting a bid.”

Refunding and monitors

Identify candidates, inspect model inputs, run refunding analyses, and review or manage supported refunding-monitor subscriptions.

Starter prompt
“Find current refunding candidates, run the appropriate analysis, and summarize PV savings and exclusions.”

Secondary activity

Review recent borrower or CUSIP-level observations and keep reported trades distinct from modeled prices, scale previews, and backtests.

Starter prompt
“Show recent secondary activity and separate observed trades from MuniPro model indications.”

Cash, forecasts, and more

Use live navigation for cash and investments to review current recorded cash positions and transactions separately from bounded saved planning forecasts. Saved forecasts are point-in-time planning context, not live cash, and do not authorize payments. With owner-bound write access, preview and confirm a new saved forecast, then read it back before using it in an operator decision. A confirmed run may mark only eligible approved/applied assumptions applied; it cannot approve the forecast, move cash, authorize a payment or transfer, or approve/release either.

Starter prompt
“Show this borrower’s current cash position and latest saved forecast, then preview a 90-day base forecast for confirmation. Treat it as planning context only and do not authorize any payment or transfer.”

Featured workflow · Quant teams

Bond sizing and structuring, from assumptions to six reports.

This guided path pairs the financing workflow your team already knows in MuniPro with AI-assisted input review, scenario setup, calculation, comparison, and explanation. The AI coordinates the work; MuniPro remains the source of authorized data and model results.

01 Establish the case

Resolve the borrower, open current financing context, and optionally inspect a saved case. Saved cases are historical configuration—not current rates, scale rows, or prior calculated results.

02 Review every input

Select the current scale and as-of date, then confirm delivery, final maturity, project fund, tax status, maturity frequency, structure, costs, reserve, capitalized interest, insurance, and other expenses.

03 Size and compare

Use the operator-reviewed typed template and asynchronous new-money model as the default complete six-report sizing path. Use the legacy financing grid only for optional browser parity, then require its aggregate result outcome and every row success flag. Compare only named alternatives and hold every unmentioned assumption constant.

04 Explain and review

Review par, project-fund proceeds, sources and uses, debt service, bond summary, proof/arbitrage-yield context, insurance breakeven, assumptions, source dates, and warnings before saving anything.

Grid-parity limitation. The optional legacy grid adapter derives final maturity from the selected scale, defaults new money to tax-exempt because it does not carry tax status, and leaves capitalized interest blank. Use the complete asynchronous model when those reviewed inputs must be carried.
The review checkpoint matters. MuniPro will not silently choose a material structuring assumption, and an AI host should stop for operator review before the first calculation. Saving a scale or case is a separate preview-and-confirm action; it does not price, award, sell, close, or execute a financing.
Quant workshop starter
“Act as my MuniPro sizing copilot. Find [borrower], open the ‘Size and structure borrower bonds’ workflow, show current scale options and their as-of dates, then stop for my review of delivery date, final maturity, project fund, tax status, maturity frequency, structure, cost of issuance, reserve fund, capitalized interest, insurance, and other expenses. Run one baseline and two explicitly named alternatives, compare par, debt service, sources and uses, assumptions, and warnings, and do not save anything until I confirm.”
Request a Quant instruction session

Suggested format: 10-minute MuniPro walkthrough, 10-minute AI-assisted sizing run, 10-minute scenario comparison and Q&A.

02 Connect

Choose your client.

Interactive clients discover MuniPro's OAuth server automatically. Add the connector URL, sign in with your existing MuniPro account, review the destination and scopes, and approve. Do not paste an API key into an interactive client.

  1. Use the exact URL https://munipro.com/mcp
  2. Sign in to MuniPro Your password stays on MuniPro's sign-in flow.
  3. Review the destination Confirm the client and return host shown on consent.
  4. Start a new conversation Enable MuniPro, then use a starter prompt from the workflow gallery.

Bound, rotating sessions. Access tokens are valid for one hour and are limited to this MCP connector. Clients rotate refresh tokens automatically within a 30-day idle window and a 180-day maximum grant lifetime. Reusing an old refresh token revokes the session family.

Your MuniPro access still applies. OAuth never bypasses tenant, borrower, scope, owner/staff, or paid-product boundaries. Planned consent-selected role profiles will tailor catalog and onboarding presentation; they will not grant an entitlement. Free accounts keep the entry, search, basic profile, and document-metadata set; Cash Management workflows require Professional, and Investment Management begins at Essentials.

Workspace changes require host acceptance. Initial external connections expose authorized reads and calculations. Confirmed workspace changes are held until the client completes MuniPro's acceptance process. Where enabled, changes require a preview and confirmation bound to the exact user, company, target, payload, and object version; duplicate retries return the original receipt.

Directory status. The OpenAI, Claude, and MCP Registry publication packages are being prepared. Official listing remains gated on platform business verification, counsel-approved Terms and Privacy language, and a reviewer credential. Until a directory listing is actually published, use the direct connection steps below; do not rely on look-alike listings.

ChatGPT on the web

Available now
  1. In ChatGPT, open Settings → Security and login and turn on Developer mode. If the toggle is unavailable, ask your workspace admin to allow it.
  2. Open Settings → Plugins or chatgpt.com/plugins, then select the plus button.
  3. Create an app named MuniPro with https://munipro.com/mcp as its MCP server URL. Complete MuniPro OAuth when prompted and verify the advertised tools.
  4. Start a new chat, select the + button by the composer, choose More, and select MuniPro from the available tools.

ChatGPT apps are supported on all plans. Workspace policy can still make the Developer mode toggle unavailable. Developer mode is the direct test path; after MuniPro's plugin is published, install it from ChatGPT's plugin directory. See OpenAI's current ChatGPT connection guide.

Rogo custom MCP

Connect with your workspace admin
  1. Ask your Rogo workspace admin to add MuniPro through Rogo's custom MCP connection. Availability and setup controls depend on your Rogo workspace.
  2. Use https://munipro.com/mcp as the server URL, Streamable HTTP as the transport, and OAuth as authentication. No shared MuniPro password or client secret is needed.
  3. Complete sign-in on munipro.com. Review the MuniPro username, company, requested scopes, and Rogo return destination before approving.
  4. Enable MuniPro in a Rogo conversation. Ask for the capabilities available to your account, then run the demo prompts below.

Sign in with your MuniPro account and approve Rogo's registered callback. Production, staging, and native loopback clients can connect without prior hostname review. Your account permissions and tool profile determine access; governed changes still require human approval.

Connection details and demo · Download the integration guide · Rogo's custom MCP announcement

Claude web, desktop, and mobile

Available now
  1. Open Customize → Connectors, choose +, then Add custom connector. Team and Enterprise owners add it first under Organization settings → Connectors → Custom → Web.
  2. Enter https://munipro.com/mcp, add it, then select Connect.
  3. Complete MuniPro sign-in and enable only the tools relevant to the conversation.

Remote custom connectors are currently beta; Free users are limited to one. They are brokered through your Claude account across supported clients. See Anthropic's connector guide.

Claude Code

OAuth sign-in
claude mcp add --transport http --scope user munipro https://munipro.com/mcp
# In Claude Code, run /mcp and authenticate.

Native CLI clients may register an HTTP loopback callback and sign in with an existing MuniPro account. Review the callback destination and requested permissions during consent. Claude's account-brokered remote connector has a separate setup path above.

Codex desktop, CLI, and IDE

Available now
codex mcp add munipro --url https://munipro.com/mcp
codex mcp login munipro --oauth-client-registration cimd

Use a current Codex version with Client ID Metadata Document support. The explicit CIMD login above identifies Codex through its ChatGPT-hosted metadata; an older opaque loopback registration may be refused.

In the desktop app, use Settings → MCP servers → Add server, choose Streamable HTTP, save, restart, and select Authenticate. Codex CLI, the IDE extension, and the same desktop host share MCP configuration. See the Codex MCP guide.

GitHub Copilot

OAuth sign-in
copilot mcp add --transport http munipro https://munipro.com/mcp
# In Copilot CLI, run: /mcp auth munipro

Use the client's registered callback and sign in with your MuniPro account. Native loopback callbacks are supported; prior hostname review is not required.

Copilot CLI and supported IDE agent modes can use remote OAuth. In VS Code, add the URL as a remote HTTP server in .vscode/mcp.json, then select Auth above the server. Copilot cloud agent and code review do not currently support OAuth remote MCP servers. Copilot CLI uses on-demand tool search by default on supported models, so the full MuniPro catalog does not have to be loaded into context at once. VS Code Chat separately caps one request at 128 enabled tools; enable virtual tools or deselect tools or servers if the IDE warns about the count. See GitHub's CLI guide and IDE guide.

Any standards-based MCP client

Other clients

Choose Streamable HTTP, enter https://munipro.com/mcp, and use OAuth discovery with PKCE. MuniPro supports HTTPS Client ID Metadata Documents and dynamic client registration without prior hostname review. Sign in and approve the client's registered callback; your current permissions and tool profile remain in force. If the client only supports static headers, request a scoped service key instead of copying an interactive OAuth token.

03 Security and control

Designed for professional review, not blind automation.

The AI host helps you ask, navigate, and synthesize. MuniPro remains the system that enforces tenancy, entitlements, scopes, quotas, and confirmation. A qualified person remains responsible for material financial and professional decisions.

Your access, not a shared super-user

OAuth is bound to the signed-in MuniPro user and company. The tool catalog is filtered to the scopes and paid products that principal can actually use.

Preview before workspace changes

Confirmed workspace changes require host acceptance in addition to the user's permissions. Where enabled, create, copy, update, delete, subscribe, and unsubscribe paths use server-side preview and confirmation bound to the exact principal, target, payload, and current target version.

No transaction execution

Saving a scale, financing case, or monitor changes only an authorized MuniPro workspace. The connector does not execute a trade, financing, filing, payment, or money movement.

Disconnect when finished

Disconnect MuniPro in the client to revoke its OAuth grant. A replayed old refresh token also revokes the complete token family. Contact support if a session or client must be revoked centrally.

04 Developer clients

Service and developer clients

Download the MCP and API route reference for related HTTP endpoints, authentication, inputs, pagination, and result handling. MCP OAuth tokens cannot authenticate the separate REST APIs.

Unattended automation, raw HTTP, Inspector, and the OpenRouter bridge use a scoped static service key. These keys are operator-provisioned by MuniPro; the BondGov document-key workspace does not create MCP service credentials.

Keep the token out of source control. Store it in a secret manager or process environment as MUNIPRO_MCP_KEY. Never paste a raw token into a committed config file.

MCP Inspector

npx --yes @modelcontextprotocol/inspector@0.22.0

In the local Inspector UI, choose Streamable HTTP, enter https://munipro.com/mcp, and enter the service token in its bearer-token field. Do not put the token in a --header command-line argument, where process listings can expose it. Unattended operators should use the checked-in conformance script, which reads the token from the process environment and invokes this reviewed Inspector version without placing the credential in process arguments.

OpenRouter bridge self-test

export MUNIPRO_MCP_KEY='<operator-provisioned token>'
python scripts/mcp_openrouter_bridge.py --self-test

The self-test validates MCP transport and a real calculation. Chat modes additionally require OPENROUTER_API_KEY.

Supervised connector smoke

$env:MUNIPRO_MCP_KEY = '<operator-provisioned token>'
$env:MUNIPRO_MCP_PAGED_RESULT_ISSUER_ID = '<authorized large-result borrower id>'
$env:PYTHON_BIN = '<Python 3.12 venv>'
pwsh -File scripts/mcp_live_smoke.ps1 -SkipClaude

This supervised connector smoke uses a short-lived, process-local key that must be revoked immediately after the run. Nightly attestations are produced only by the administrator-installed Scheduled Task from its protected, content-addressed ProgramData bundle. That gate requires raw HTTP, pinned Inspector, the bridge self-test—including real worker completion, complete page traversal, and root-digest verification—and the complete OAuth discovery chain. Its durable service key needs explicit scopes for every MuniPro product family under test; never use a wildcard scope for a durable key. The gate never writes the token into its JSON or log output.

Rogo integration

Connect, discover, and verify.

Use the existing MuniPro MCP server for Rogo's custom connector. The connection guide below covers the server contract; complete a connection in your Rogo workspace to verify its client behavior.

Transport and discovery

Server and resource: https://munipro.com/mcp
Transport: Streamable HTTP over HTTPS.

An unauthenticated MCP request returns a 401 challenge pointing to protected-resource metadata. Follow its authorization server to OAuth server metadata. Preserve the resource URL exactly, including its lack of a trailing slash.

After initialization, use authenticated tools/list for current tool names, JSON input schemas, and annotations. Follow every nextCursor; the role-filtered catalog has no universal tool count.

OAuth configuration

Issuer: https://munipro.com/
Flow: authorization code with PKCE S256 and rotating refresh tokens. Token endpoint authentication is none; client-credentials grants are not supported.

Production Rogo return URL: https://app.rogo.ai/nest/tool-proxy/integrations/callback. Use the callback registered by your Rogo client; staging and native loopback callbacks are also supported. MuniPro logs client types and hostnames for operational review.

For the banker profile, request catalog.read, debt.read, borrowers.request, and offline_access. Omit borrowers.request for read-only use. OAuth scopes never expand the user's profile, entitlement, or borrower access.

A short connection demo

Discover
Show the MuniPro capabilities available to my account using get_munipro_navigation.
Select an issuer
Use list_verified_borrowers to find [issuer]. Show the matching borrower IDs and verification status so I can choose the correct issuer.
Download debt data
Use get_debt_details_dataset for the selected issuer with outstanding, groupedRollup, and annualChart. Confirm the as-of date, fiscal year end, and variable-rate assumption. Poll to completion, retrieve the full JSON, and show its source dates and reconciliation warnings.

Compare the returned data with the same user's debtDetails selection. The banker profile also lists uploaded workbooks and DDL files, provides authenticated downloads, and pages indexed Official Statements and financial statements.

Integration acceptance

Start with citations in Rogo's default custom connector. Use https://munipro.com for relative page links. A reader's existing MuniPro browser login is reused, or the reader is prompted to sign in. Series have record IDs; citation links currently open the issuer page.

Source links, series identifiers, and citation acceptance covers exact workspace links, grouped rows, and the evidence to preserve with an answer.

Verify connection, catalog discovery, a successful calculation, pagination, refresh, and disconnect in the actual Rogo workspace. Check the application result as well as the HTTP response: an HTTP 200 can contain a validation error or failed calculation.

For long jobs, use the asynchronous tool and poll get_job_status to a terminal result. Follow returned references and preserve provenance, assumptions, and professional-use notices. See calling guidance for large results and retries.

The banker profile's only change is a borrower-verification request, approved by the user in MuniPro. It queues staff review; it does not verify or publish debt. Record that approval and replay journey in Rogo before marking it accepted.

Download the connection contract and acceptance checklist. Dedicated banker HTTP routes use the same MCP bearer; other REST APIs retain separate credentials.

Banker datasets and presentation skills

Start with a small profile: six business tools plus five discovery and job utilities. Download outstanding debt and 17 calculation datasets, with the fields and transformations used to construct debtDetails tables and charts.

Integration and API guide · Tool descriptions and JSON schemas · Dataset and transformation reference

16 banker presentation recipes preserve your firm's reference template and source provenance. Each recipe identifies the data it needs and any access beyond the initial profile.

Build cited debt briefs, collect issuer source packs, request borrower coverage, and create firm-template presentations with the same 11-tool profile. Rogo skills implementation guide · Skill catalog · Download the skill package

05 Calling guidance

Calling tools well

Guidance is preloaded. Even a direct-URL client receives product-wide workflow instructions, the professional-use notice required on analytical and write-result answers, and the additional market-data notice required for secondary activity. The directory package mirrors that guidance as a reusable skill. Host interfaces control their own confirmation UI, so always review the actual tool inputs and outputs.

Progressive discovery

MuniPro first returns a compact operator index, then the complete actions and templates for the selected area. This keeps model context focused while preserving the full product map for diagnostic clients.

Typed calculation payloads

Calculation fields live inside request_payload. The confirmed run_borrower_cash_forecast workspace write is the explicit run_* exception and uses direct typed borrower_id, scenario, horizon_days, and confirmation arguments; its borrower ID and horizon must be JSON integers. Dates use ISO format. Other database-ID inputs accept JSON integers or decimal strings; opaque CUSIPs, refs, document IDs, and tokens remain strings.

{
  "request_payload": {
    "settleDate": "2026-05-01",
    "maturityDate": "2036-05-01",
    "coupon": 5.0,
    "yield": 4.0,
    "dayCountBasis": "30/360",
    "feb30360Adjustment": false,
    "eom30360Adjustment": false
  }
}

Long-running work

Prefer a tool's *_async form for heavy borrower calculations. It returns an mcp-job:// reference; poll that reference with get_job_status until it reaches terminal done, failed, or cancelled. An outer status: ok means only that the poll succeeded. For a failed job, inspect error_code and error; for a done calculation, inspect result_outcome when present. A new inline completion also returns its retained provenance and professional-use notice snapshot. Completed synchronous new-money and refunding calls expose the same result_outcome shape.

If result_paged is true, require the poll and schema-2 manifest result_outcome copies to match. Fetch and apply the s000 root initializer before any targeted child section. Then a focused conversational client can select the relevant path in result_manifest.sections and fetch exactly that section's declared page_count while its section_key stays constant. A returned next reference advances global order; it does not select a semantic section. If a result has more than 63 top-level keys, its object_group sections use path=[] and do not identify arbitrary member keys, so use complete traversal. A programmatic client starts at result_manifest.first_page_ref, follows every global next reference until page.complete, and applies the structural operations in global_page_index order. Targeted traversal is partial evidence; only complete traversal verifies the complete result.

The page operations are set(path, value), init_object(path), init_list(path, length), list_slice(path, start, values), init_string(path, chunk_count, utf8_bytes), and string_chunk(path, chunk_index, value). Paths are JSON arrays of string keys or nonnegative integer indexes. String chunks append in contiguous 1-based order, without language-dependent offsets. Verify each page and the reconstructed result using SHA-256 over RFC 8785/JCS UTF-8 canonical bytes. New inline stored envelopes use a 20 KB canonical threshold; durable outcomes retain at most 2 MB across at most 128 pages for 48 hours, with each portable response below 60 KB. Every fetch rechecks the submit-time scope/tier snapshot plus current live scope, tier, tenant, owner, borrower, and scale access. Schema-2 pages repeat manifest-bound result_context and the retained professional-use notice. Follow a returned result_provenance detail ref when fuller provenance is needed; unavailable provenance may have no ref. Independently, whenever result_notice_available=true, follow the returned result_notice ref. Schema-1 pages expose context_integrity=legacy_unbound and unknown source context. A historical result_too_large marker still means that old body was dropped, and a missing result_outcome means its calculation outcome is unknown.

Use cancel_job only after explicitly asking to cancel the exact canonical mcp-job:// reference. Cancellation is immediate queued-only job control—not a preview/confirmation write. A running, done, or failed job returns a normalized 409 conflict and is never force-terminated. Poll get_job_status afterward to read back the authoritative state. Returned job-control resolution and conflict payloads include normalized status_code and error_code; authentication and scope denials remain MCP errors.

Quotas and retries

Tool calls share the authenticated client's daily quota. On HTTP 429, honor Retry-After and wait for the stated reset instead of immediately retrying.

Writes and confirmation

The first call returns a signed preview. Review the company, borrower, target, assumptions, exact change, reversibility, and warnings before confirming with the returned token. Never treat a preview as a successful write.

Session lifetime

OAuth access tokens last one hour and refresh automatically with rotating credentials. Active grants can continue for up to 180 days; disconnect the app to revoke its grant, or sign in again when the client asks.

06 Support

Support and troubleshooting

Most setup problems are URL, workspace-policy, OAuth, or entitlement issues—not prompt issues. Keep the exact error and client name when contacting support.

I cannot find a tool

The live catalog is filtered by OAuth scopes, tenant access, and product entitlements. Start a new conversation after reconnecting, ask for MuniPro navigation, and confirm the same workflow is available to that user in the browser.

OAuth keeps reopening

Confirm the URL is exactly https://munipro.com/mcp, remove the old client entry, and connect again. Check that the consent return host matches the client you started.

A calculation times out

Use the tool's asynchronous twin and poll get_job_status. Large borrower schedules can take longer than a client's default synchronous timeout. If a submitted job is no longer needed, ask to cancel its exact mcp-job:// reference; only queued work can be cancelled, and the client must poll once more to verify the result.

I need organization-wide access

Ask your Rogo, ChatGPT, Claude, or Copilot workspace owner to approve the connector and its scopes. MuniPro support can provide an enterprise allow-list packet or scoped service-key guidance.

Contact MuniPro: support@munipro.com. Include the client, approximate time, MuniPro username, and error text—but never send a raw access token, refresh token, API key, or password.