MCP connection
GoldNovaAI is a remote MCP server at https://goldnovaai.com/api/mcp. A workspace owner or admin connects an MCP-compatible client; the client then uses a scoped set of tools. An MCP connection never has more authority than the workspace role and scopes you grant it; it cannot manage billing, API keys or secrets.
Connecting
- OAuth 2.1 (clients that support remote MCP connectors): the client discovers the server, you sign in, choose the workspace and approve the permissions. Access tokens last 1 hour, refresh tokens 30 days, and tokens are bound to this endpoint.
- Static bearer credential: create one in Organization & API → Integrations → MCP, choose its scopes and send
Authorization: Bearer gnk_…. The secret is shown once and only a hash is stored.
Connected through the OAuth flow in real clients during release testing (2026-10-16, read-only, synthetic data): ChatGPT custom connectors and the claude.ai connector. Treat other clients, including Claude Code, as untested. Other clients that follow the MCP specification should work but have not been tested.
Workspace isolation
A credential belongs to exactly one organization; the organization is derived from the credential, never from anything the client sends. Every read and write goes through the same organization-filtered code as the REST API. Another organization’s call id behaves as “not found”. Research data is additionally limited to the person who made the connection.
Scopes
A new connection is read-only by default. Tools outside a connection’s scopes are not offered and cannot be called.
| Scope | Allows | Writes |
|---|---|---|
calls:read | List calls and read call details. | no |
calls:write | Add calls to the workspace. Counts toward the call allowance of the current period. | yes |
qa:read | Read call reports, findings and the evidence quoted from the transcript. | no |
qa:evaluate | Re-evaluate a call against the current policy. | yes |
policy:read | Read the rules every call is checked against. | no |
usage:read | Read the plan and this period’s usage: QA calls, audio transcription minutes and AI assessments against their allowances. | no |
research:read | Read research projects, quotes, themes and findings created by the person who made this connection. | no |
research:write | Create research projects owned by the person who made this connection. | yes |
Tools
Calls
list_calls(calls:read): List recent calls with result, QA score and finding counts. Filter by result, severity, agent, source or date. Paginated.get_call(calls:read): Get one call’s details. The transcript is returned only when include_transcript is true.ingest_call(calls:write): Add a call with a transcript. Idempotent on external_call_id. Evaluation runs after the call is accepted. Counts toward the monthly allowance.
QA
get_call_report(qa:read): Get the QA report for a call: result, score, highest severity, findings with quoted evidence, and rule results.list_findings(qa:read): List findings (potential violations and review items) with their quoted evidence, for one call or across the most recent flagged calls.evaluate_call(qa:evaluate): Re-evaluate a call against the current QA policy. Runs in the background; read the report afterwards.
Policy
get_qa_policy(policy:read): Get the QA policy: every rule with its type, severity and enabled state.
Usage
get_usage(usage:read): Get the plan and this period’s usage of QA calls, audio minutes and AI assessments, the allowances and when they reset.
Research
list_research_projects(research:read): List the research projects created by the person who made this connection.get_research_project(research:read): Get a research project with its interviews, themes and findings (summaries).search_research(research:read): Search quotes, themes and findings in the connection owner’s research projects.get_research_quote(research:read): Get one quote with its source interview and timestamp.get_research_finding(research:read): Get one finding with the quotes that support it.create_research_project(research:write): Create a research project (title and research question). Interviews are added in the app.
There is no tool for passwords, billing, account or organization deletion, API keys, provider secrets or configuration.
Tool errors
A failed tool call returns an error with one of these codes and a message written for the agent (no backend details).
invalid_input,not_found(also for another workspace’s data),forbidden,insufficient_scope,rate_limited(120 requests per minute per connection,Retry-After: 30),quota_exceeded,conflict,not_ready,unavailable,internal_error.- An invalid, revoked or expired credential gets HTTP
401 invalid_token; a REST API key on this endpoint (or an MCP credential on the REST API) gets403. ingest_callaccepts scalar metadata values only and norecordingUrl, which is narrower than the REST API.
Limits and revocation
- One JSON-RPC message per request (batches are refused); rate limited per connection; write tools count against the same allowances as the REST API.
- Revoke a connection or an OAuth grant in Organization & API → Integrations → MCP; the next request is refused with
401. - Connections are audited (who authorized, which tool was called), without transcript content.