a2ally™ Sign up

Developers

Quickstart: connect your agent to a2ally

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.a2ally.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.a2ally.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 a2ally https://www.a2ally.com/mcp

Claude (claude.ai and Claude Desktop)

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

Grok (grok.com)

grok.com/connectors > New Connector > Custom
URL: https://www.a2ally.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.a2ally.com/mcp?toolset=checks", server_label="a2ally")])
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": {
    "a2ally": {
      "url": "https://www.a2ally.com/mcp"
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "a2ally": {
      "type": "http",
      "url": "https://www.a2ally.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": "a2ally",
            "server_url": "https://www.a2ally.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.a2ally.com/mcp"}, name="a2ally") 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({"a2ally": {"url": "https://www.a2ally.com/mcp", "transport": "streamable_http"}})
tools = await client.get_tools()

CrewAI (crewai-tools MCPServerAdapter)

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

REST (no SDK)

curl -s https://www.a2ally.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.a2ally.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.a2ally.com/v1/receipts/verify -H 'content-type: application/json' -d @Inter.ttf.rights.json
# spec: https://www.a2ally.com/standards/rights-receipt

Website: gate incoming agents (free)

curl -s https://www.a2ally.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.a2ally.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.a2ally.com/mcp, stateless, JSON responses.

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

Connect your agent freeSign upSupport the library

Get the a2ally Weekly

The a2ally Weekly: the week on the ledger in numbers, every Monday. Read it on the web or by feed, or by email once you confirm your address. Every email has a one-click unsubscribe. Your address is never published or shared.

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.a2ally.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export A2ALLY_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.a2ally.com/v1/licenses/check -H "Authorization: Bearer $A2ALLY_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'