Skip to main content
Your client lists every available tool automatically (tools/list) with full input schemas, you rarely need to call one by name. This page is the map of what’s available, the scope each requires, and how calls are metered.
Every tool is org-scoped to your authenticated session. Org context comes from your token or API key, never from a tool argument, so an agent can’t read or change another organization’s data. Reference-data tools (offices, jurisdictions, classifications, rules) are global public data, not org-scoped, but still require a scope like other reads.

Trademarks

Owners & entities

Attorneys & firms

Proceedings

Reference data

Global, public reference data. Not org-scoped, but still requires a read scope. Office, jurisdiction, event-type and status-code tools are logged but free. Classification, goods and services, and design code lookups cost 1 credit per call; the deadline and opposition rule catalogues cost 10. Suggestions, drafting, and validation are priced separately; see Metering.

Account & usage

Utility tools for your own org’s account and consumption. Neither billed nor counted against quota.

Monitoring

Watches, alerts, and webhooks. Billed at zero request-level cost; watch capacity itself is capped by your plan.
Webhook secrets are never exposed through MCP, signa_webhooks_list and signa_webhooks_retrieve always redact them. Manage secrets via the REST API instead.

Scopes

Any valid API key or OAuth token can connect, whatever its scopes. initialize and tools/list work for every session, and tools/list returns every tool, including ones the session can’t call. Each tool checks its own scope when called, the same scope as its REST endpoint. An invalid, revoked or expired credential gets 401 before any tool runs. Most clients request trademarks:read by default, which covers every data and reference tool. Add billing:read if you want your agent to inspect usage and account details, and portfolios:manage only if you want it to read or change watches, alerts, and webhooks. If a tool needs a scope your session lacks, the call returns the forbidden error REST returns (status 403, naming the required scope) with the call’s request_id. It is not charged, and the rest of the session keeps working.

Metering

MCP tool calls are metered like REST requests: a tool call costs what its REST counterpart costs, debits the same pooled credit balance, and appears in your usage and request logs under the same endpoint type (search, read, monitoring, and so on). Search tools (search_trademarks, list_trademarks, list_owners, list_attorneys, list_firms, list_entities, get_entity_trademarks) cost 10 credits per call, one page each. Read tools cost 1 credit per record or page; batch_get_trademarks costs 1 credit per submitted ID (up to 100), including IDs that are not found. suggest_classifications costs 10 credits per call, suggest_goods_services 100, and validate_goods_services 50. Classification, goods and services, and design code lookups cost 1 credit; the deadline and opposition rule catalogues cost 10. Office, jurisdiction, event-type and status-code tools are logged but free. Account, usage, and pricing tools are neither billed nor counted. Every tool result reports the actual debit as _meta.credits_charged. Out-of-credit calls return a clear error naming the limit that was hit and when it resets, instead of running the tool. The initialize and tools/list handshake calls are never metered. Prices are published by Get Credit Pricing.

Errors

A tool that fails returns isError: true and one text item holding the same JSON error body the REST API returns, plus the MCP request’s request_id:
Branch on error.type and error.retryable, not on detail wording. Field-level problems list errors[] entries with field, code, and message, as in Errors. The types an agent sees most often: Server-side failures carry a reference_id next to type; include it, or the request_id, if you report a problem. Error bodies never contain database or search-engine messages. A request the MCP transport cannot read (a body that is not valid JSON or not a JSON-RPC 2.0 message, or a batch over the cap) fails before any tool runs. It returns a JSON-RPC error with the HTTP status and error.code (-32700 or -32600), a fixed message, and the request id in error.data.request_id. A JSON-RPC request whose method parameters are malformed (for example tools/call with a non-string name) gets the same treatment with HTTP 200 and its JSON-RPC code. Scope, quota, and credit refusals use the REST types too (unauthorized, forbidden, quota_exceeded, insufficient_credits, daily_credit_cap_exceeded, plan_gated, credits_unavailable). A failed call is never charged: _meta.credits_charged is 0. Pagination cursors are bound to the request that produced them. On list_proceedings (and GET /v1/proceedings), reusing a cursor with different filters or a different sort returns cursor_invalid, and an empty cursor string is rejected rather than read as “first page”. Omit cursor to start from the first page.

Rate limits

MCP requests share a dedicated rate-limit tier of 1,000 requests per minute, separate from your plan’s per-endpoint-type limits. See Rate limits for the full header semantics. If you hit the limit, the response includes a Retry-After header. One POST may carry a JSON-RPC batch of up to 10 messages; a larger batch is rejected with JSON-RPC error -32600 before any tool runs. Search tools with mark_text_contains, mark_text_ends_with or a wildcard-leading mark_text_pattern also draw on your organization’s search concurrency, shared with REST: one slot per such value.

Security

  • Org isolation. Org context is resolved from your token or API key on every request, never from a tool argument. An agent cannot read or modify another organization’s data, even if prompted to.
  • Least privilege. Scopes are enforced per tool. For read-only use, issue an API key without portfolios:manage so the watch, alert, and webhook write tools are unavailable.
  • Review tool calls. Most MCP clients let you approve tool calls before they run. Keep approval on for any agent with portfolios:manage, and treat tool results as data an untrusted prompt could try to act on.

Troubleshooting

Your MCP client is not sending the access token. Re-authenticate by removing and re-adding the MCP connection.
Your Signa account has not completed onboarding. Log in at app.signa.so and create an organization first.
Your token has expired. Most MCP clients handle refresh automatically. If the error persists, remove and re-add the connection to re-authenticate.
You are sending more than 1,000 MCP requests per minute. Wait for the Retry-After period or reduce request frequency.