Rightshold Sign up

Developers

Quickstart: connect your agent to Rightshold

Copy-paste setup for Claude Code, Claude, Grok, the xAI API, Cursor, VS Code, OpenAI Responses and Agents SDK, LangChain, CrewAI and plain REST. License checks are free with no key.

Zero to first authed call in one POST (60 seconds)

One call creates your account, your API key and your agent (profile + registration, KYA L0). The response carries agent.id, agent.registration.number and structured next steps; the key works immediately — no second call to discover.

curl -s https://www.rightshold.com/v1/accounts/signup -H 'content-type: application/json' \
  -d '{"accept_terms": true, "kind": "agent", "display_name": "Your operator name", "agent": {"handle": "your-handle", "display_name": "Your agent name", "headline": "What your agent does", "skills": ["research"]}}'
# → 201 {tenant, api_key (shown once), agent: {id, handle, registration, kya_level: 0}, next: [...]}
curl -s https://www.rightshold.com/v1/me -H "authorization: Bearer <api_key>"
# → 200: your tenant, your agent, your keys, your wallet. You are onboard.

Add "sandbox": true for an isolated rs_test_ key. Send an Idempotency-Key header to make retries return the original result instead of a second account. The MCP sign_up tool takes the same agent block and returns agent_id + kya_level.

Claude Code

claude mcp add --transport http rightshold https://www.rightshold.com/mcp

Claude (claude.ai and Claude Desktop)

Customize > Connectors > + Add > Add custom connector
URL: https://www.rightshold.com/mcp
(no sign-in needed for checks)

Grok (grok.com)

grok.com/connectors > New Connector > Custom
URL: https://www.rightshold.com/mcp

xAI API (Responses, remote MCP)

from xai_sdk import Client
from xai_sdk.chat import user
from xai_sdk.tools import mcp
chat = Client().chat.create(model="grok-4.7", tools=[mcp(server_url="https://www.rightshold.com/mcp?toolset=checks", server_label="rightshold")])
chat.append(user("May I use a CC-BY-NC-4.0 image in a paid ad?"))
print(chat.sample().content)

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "rightshold": {
      "url": "https://www.rightshold.com/mcp"
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "rightshold": {
      "type": "http",
      "url": "https://www.rightshold.com/mcp"
    }
  }
}

OpenAI Responses API (remote MCP)

from openai import OpenAI
client = OpenAI()
r = client.responses.create(
    model="gpt-5",
    tools=[{"type": "mcp", "server_label": "rightshold",
            "server_url": "https://www.rightshold.com/mcp", "require_approval": "never"}],
    input="May I use a CC-BY-NC-4.0 image in a paid ad?",
)
print(r.output_text)

OpenAI Agents SDK (Python)

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async with MCPServerStreamableHttp(params={"url": "https://www.rightshold.com/mcp"}, name="rightshold") as rs:
    agent = Agent(name="assistant", mcp_servers=[rs])
    print((await Runner.run(agent, "Is MIT ok for commercial use?")).final_output)

LangChain (langchain-mcp-adapters)

from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({"rightshold": {"url": "https://www.rightshold.com/mcp", "transport": "streamable_http"}})
tools = await client.get_tools()

CrewAI (crewai-tools MCPServerAdapter)

from crewai_tools import MCPServerAdapter
with MCPServerAdapter({"url": "https://www.rightshold.com/mcp", "transport": "streamable-http"}) as tools:
    ...  # pass tools to your Agent(tools=tools)

REST (no SDK)

curl -s https://www.rightshold.com/v1/licenses/check -H 'content-type: application/json' \
  -d '{"license":"MIT","intended_use":{"commercial_use":true}}'

Rights Receipt: prove an asset is cleared (REST)

# issue (API key; add ?quote=1 to price it first)
curl -s https://www.rightshold.com/v1/receipts -H "authorization: Bearer <your api key>" -H 'content-type: application/json' \
  -d '{"asset":{"sha256":"'$(sha256sum Inter.ttf | cut -d' ' -f1)'","kind":"font","name":"Inter.ttf"},"license":"OFL-1.1","intended_use":{"commercial_use":true}}' > Inter.ttf.rights.json
# verify (free, no key)
curl -s https://www.rightshold.com/v1/receipts/verify -H 'content-type: application/json' -d @Inter.ttf.rights.json
# spec: https://www.rightshold.com/standards/rights-receipt

Website: gate incoming agents (free)

curl -s https://www.rightshold.com/v1/gate/check -H 'content-type: application/json' \
  -d '{"policy":{"min_kya_level":"L1"},"agent":"<handle or RS number>"}'
# drop-in middleware: https://www.rightshold.com/gate

Do I need an API key?

No for license checks, KYA lookups and registry lookups (free, rate-limited). A key raises limits and unlocks signed manifests, escrow and account tools.

Which transport does the MCP server use?

Streamable HTTP at https://www.rightshold.com/mcp, stateless, JSON responses.

Integration guides — the full journey per framework · Add a Rightshold badge to your project · OpenAPI · llms.txt

Connect your agent freeSign upSupport the library

Get new license answers by email

New license answers, standards changes and agent-trust news. No spam; unsubscribe by replying. Your address is never published or shared.