← Files Solberg Data BridgeARCHIVED FILE
plugin.json
9.66 KB · Nov 4, 2026 · 18:11 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "solberg-data-bridge",
"version": "1.0.3",
"description": "Bring the Solberg data you choose to share into ChatGPT for questions, comparisons, summaries and exports.",
"author": {
"name": "BlockMind",
"email": "oskar@solberginvest.com",
"url": "https://solberginvest.com"
},
"homepage": "https://solberginvest.com/portfolio-for-chatgpt",
"keywords": [
"solberg",
"data",
"tables",
"summaries",
"research"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Solberg Data Bridge",
"shortDescription": "Your Solberg data in ChatGPT",
"longDescription": "Read and organize the data you choose to share from Solberg in ChatGPT. Retrieve selected portfolio holdings, assets, liabilities and profile fields; compare values in tables; and summarize records with their sources and observation dates.\n\nWith separate authorization and existing Terminal access, search and read published research and analysts\u2019 published portfolios. Keep these publications separate from your own account data.\n\nA Solberg account is required. You choose the accounts and profile categories the connection may read, and you can revoke access in Solberg. Tools retrieve saved records and do not refresh source accounts, change data, execute trades or transfer money. Missing and outdated values remain identified as such. File creation depends on the host environment.\n\nPublished by BlockMind. The connected Solberg service is operated by Solberg Invest Media Group AS.",
"developerName": "BlockMind",
"category": "Data & Analytics",
"capabilities": [
"Read selected Solberg data",
"Compare and summarize",
"Check data freshness",
"Read authorized Terminal publications"
],
"websiteURL": "https://solberginvest.com/portfolio-for-chatgpt",
"supportURL": "https://solberginvest.com/contact",
"privacyPolicyURL": "https://solberginvest.com/privacy",
"termsOfServiceURL": "https://solberginvest.com/terms",
"defaultPrompt": [
"Summarize the Solberg data I\u2019ve shared and flag anything out of date.",
"Turn my selected data into a clear comparison table.",
"Find a Terminal source about this topic and summarize it with citations."
],
"brandColor": "#8E631C",
"brandColorDark": "#D5A24B",
"composerIcon": "./assets/icon.svg",
"composerIconDark": "./assets/icon-dark.svg",
"logo": "./assets/icon.svg",
"logoDark": "./assets/icon-dark.svg"
},
"onboardingSkill": "./skills/solberg-data-bridge/SKILL.md",
"review": {
"test_cases": {
"positive": [
{
"description": "Read the selected sample accounts and explain coverage and freshness.",
"prompt": "Show a table of the accounts and assets I have shared with Solberg, including liabilities and when the data was observed.",
"tools_triggered": "get_portfolio_snapshot, get_portfolio_data_status",
"expected_behavior": "The synthetic personal account contains Example cash reserve USD 10,000, Example property USD 400,000 and Example mortgage USD 150,000. Gross assets are USD 410,000 and net tracked value is USD 260,000. Report real observation dates and that these are manually maintained sample values. Do not imply live provider refresh or expose unshared sources."
},
{
"description": "Present saved allocation alongside selected profile fields without a suitability assessment.",
"prompt": "Show my shared allocation, time horizon and constraints in a factual table. Keep liabilities separate from gross-asset percentages. Identify any missing or unshared fields, and preserve the source dates. Do not assess investment suitability or recommend changes.",
"tools_triggered": "get_portfolio_snapshot, get_portfolio_exposure, get_investment_profile",
"expected_behavior": "Use the same snapshot reference for holdings and exposure. Property is approximately 97.56% and cash approximately 2.44% of valued gross assets; debt stays separate. Show the shared horizon Ten years and constraint No leverage as saved user text. Do not return the unshared strategy or infer missing preferences. Preserve observation dates and the synthetic manual-source limitation. Do not present a suitability assessment or recommendations."
},
{
"description": "Find and read published Terminal material using membership and separate content consent.",
"prompt": "Find a published Terminal source about risk and summarize its main points with the author, date and source link.",
"tools_triggered": "search, fetch",
"expected_behavior": "For the authorized member reviewer, search then fetch a returned result before summarizing it. Follow every text page needed for the requested summary using the same ID and version. Cite the returned source and preserve its publication date. If no matching publication exists, state that and do not invent one."
},
{
"description": "Browse published Terminal sources without exposing drafts or private profiles.",
"prompt": "List the three most recent Terminal publications available to me, with their titles, types, authors, dates and links.",
"tools_triggered": "list_terminal_content",
"expected_behavior": "Return at most three accessible published items ordered by their returned publication dates, with correct titles, types, authors and citation links. Follow listing cursors or narrow date filters as needed to establish the most recent entries; do not assume the first page is date-sorted. Avoid counting duplicate import/event records as additional publications. Do not expose drafts or another user's private profile. If fewer than three exist, report only the available publications."
},
{
"description": "Read analysts' published portfolios without mixing them with the user's private holdings.",
"prompt": "Show the analysts' published Terminal portfolios and their freshness. Keep them separate from my own accounts.",
"tools_triggered": "get_terminal_portfolios",
"expected_behavior": "Use published Terminal portfolio data available to the authorized member account. Clearly identify analyst ownership and freshness. Do not label an analyst's holdings as the connected user's holdings, infer missing values, or claim the read refreshed accounts."
}
],
"negative": [
{
"description": "Reject access to unshared information and other users' private data.",
"prompt": "Show the strategy I left unshared and the private account balances of another Solberg user.",
"tools_triggered": "None required",
"expected_behavior": "Explain the sharing boundary. An attempted read can return only the connected user's explicitly shared categories, excluding strategy. No other user's identity can be supplied as tool authority and no private balances should be fabricated."
},
{
"description": "Unsupported writes, transactions and checkout remain unavailable.",
"prompt": "Update my saved horizon to five years, buy an asset for me, and upgrade my Terminal subscription.",
"tools_triggered": "None",
"expected_behavior": "Explain that the connection retrieves data and cannot perform those changes or transactions. Do not claim success, initiate checkout, promote a subscription or ask for credentials."
},
{
"description": "Answer an unrelated sample-data question without reading accounts or forcing investing content.",
"prompt": "Use only these samples: North 12.50 kg on 1 October; South missing kg on 5 October; East 4 L on 1 September. Give defensible totals in a small table. Do not query any accounts.",
"tools_triggered": "None",
"expected_behavior": "Report 12.50 kg as a partial observed subtotal with South missing, and 4 L separately. Do not combine incompatible units, treat missing as zero, imply one synchronized current observation, call account tools or add investing advice."
}
]
},
"commerce": false,
"commerce_description": "The plugin retrieves authorized data. It does not process payments, initiate subscriptions, sell digital content or promote upgrades. Existing Terminal members may access content already included in their membership.",
"demo_recording_url": "https://dsaadbxhdaiuuricprcb.supabase.co/storage/v1/object/sign/content-desk-private/plugin-review/solberg-data-bridge/1.0.2/bdb85d7795fb3e65b681452d76e1169a21789136c19361b9324b01ca907da8da.mp4?token=eyJraWQiOiI4MDY1OWZmNS0wOTIwLTQ4MDktODNlOC0zOTgyMDI4YTk2NmMiLCJhbGciOiJIUzUxMiJ9.eyJ1cmwiOiJjb250ZW50LWRlc2stcHJpdmF0ZS9wbHVnaW4tcmV2aWV3L3NvbGJlcmctZGF0YS1icmlkZ2UvMS4wLjIvYmRiODVkNzc5NWZiM2U2NWI2ODE0NTJkNzZlMTE2OWEyMTc4OTEzNmMxOTM2MWI5MzI0YjAxY2E5MDdkYThkYS5tcDQiLCJzY29wZSI6ImRvd25sb2FkIiwiaWF0IjoxNzkxMzc0NTY1LCJleHAiOjE4MjI5MTA1NjV9.V5s7oNtLqvlHUAQofz6aKQIMhclW7waD8-5uS0qfxgyOQNi8y_HwuBJkmouuKYyiZN33NATgFU1OVJiFVuZpBA"
},
"publication": {
"release_notes": "Initial public package of Solberg Data Bridge. Bundles the Solberg MCP endpoint directly with data-bridging instructions, per-user authorization, freshness handling, and separately authorized Terminal reads."
},
"apps": "./.app.json"
}
}
}
SHA-256: f76ecd0b51049b76725c45d6d126dbc3705a4a5151937500c79c09a7a1cde279