Discover the deployment, call source-verified contracts, use the live HTTP API, or connect an agent directly to the hosted MCP.
Use the immutable manifest to pin the release and the runtime discovery document for live HTTPS endpoints.
/deployment-manifest.jsonCanonical deployment metadata and promotion identity.
OPEN SIGNED ALIAS/.well-known/chain-name-service.jsonStable canonical manifest path.
OPEN SERVICE STATUS/statusLive registration, marketplace, permit issuer, and hosted MCP readiness checks.
OPEN RUNTIME DISCOVERY/runtime-manifest.jsonWSS-free endpoints and manifest-declared capabilities. Check its readiness URLs before execution.
OPEN OPENAPI 3.1/api/openapi.jsonRecommended public HTTP routes; internal and compatibility routes are excluded.
OPEN HOSTED MCP/api/mcpStreamable HTTP MCP endpoint.
OPEN ABI INDEX/abiCurated SDK ABI surfaces for supported protocol and settlement workflows.
OPEN LLMS.TXT/llms.txtCompact agent integration map.
OPEN0x89465361d1eacb7f1f8eea2d50a93f6e6fe7c4c4a55345624ca16ef42ff665c20x66aeb7b208fdfb6eb9f728a3d0b12d6d3b7132eb0e363b38f7c388c358edefdchttps://rpc.testnet.arc.network0x3600000000000000000000000000000000000000OpenAPI covers the recommended public routes below. Response envelopes and CORS/cache headers vary by route; internal verification, issuer-v1, compatibility, manifest, and MCP transport routes are intentionally excluded. The canonical V1 registrar does not implement ERC-721 Metadata or tokenURI. Contour provides application-hosted companion metadata and deterministic image endpoints for registered names.
/api/name/{label}Registry, registrar, resolver, expiry, and availability.
/api/reverse/{address}Forward-confirmed primary name.
/api/metadata/{tokenId}Companion metadata derived from a verified registered-name snapshot.
/api/image/{tokenId}Deterministic 1200 × 630 Contour name identity visual.
/api/account?owner={address}Owned names, credits, proceeds, and listings.
/api/marketLive fixed-price listings and market state.
/api/registration/readinessRegistration contract, signer, controller, and pause readiness.
/api/marketplace/readinessMarketplace contract, settlement, fee, and pause readiness.
/api/registration/preflightApproval requirement and wallet transaction plan.
/api/registration/prepareWallet-bound registration permit and calldata.
curl "https://contour-arc.vercel.app/api/name/atlas"
curl "https://contour-arc.vercel.app/api/reverse/0x78de409a6306550882328E2a67160471368387FF"External consumers install contour-sdk with viem on Node.js >=20.9 <25. @contour/react remains a repository-only workspace package and is not included in the public npm release.
npm install contour-sdk viemimport {
ARC_TESTNET,
ArcNameClient,
fetchDeploymentManifest,
} from "contour-sdk";
import { createPublicClient, http } from "viem";
const manifest = await fetchDeploymentManifest(
"https://contour-arc.vercel.app/deployment-manifest.json",
{
expectedManifestSha256: "0x89465361d1eacb7f1f8eea2d50a93f6e6fe7c4c4a55345624ca16ef42ff665c2",
expectedReleaseId: "0x66aeb7b208fdfb6eb9f728a3d0b12d6d3b7132eb0e363b38f7c388c358edefdc",
},
);
const rpc = createPublicClient({
chain: ARC_TESTNET,
transport: http(manifest.chain.rpcUrl),
});
const contour = new ArcNameClient(rpc, manifest);
const record = await contour.name("atlas");
const primary = await contour.reverse("0x78de409a6306550882328E2a67160471368387FF");"use client";
import { useState, type ReactNode } from "react";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ArcNameProvider, useArcName } from "@contour/react";
import type { ArcNameClient } from "contour-sdk";
export function ContourProviders({ client, children }: {
client: ArcNameClient;
children: ReactNode;
}) {
const [queries] = useState(() => new QueryClient());
return <QueryClientProvider client={queries}>
<ArcNameProvider client={client}>{children}</ArcNameProvider>
</QueryClientProvider>;
}
export function NameAddress() {
const { data, isPending } = useArcName("atlas");
return <span>{isPending ? "Reading..." : data?.resolvedAddress ?? "Not set"}</span>;
}Add the hosted Streamable HTTP endpoint to any MCP client. No clone, local build, absolute path, or environment variable is required.
{
"mcpServers": {
"contour-names": {
"url": "https://contour-arc.vercel.app/api/mcp"
},
"arc-docs": {
"url": "https://docs.arc.io/mcp"
}
}
}normalize_labelApply the pinned ENSIP-15 single-label profile.
get_nameRead owner, registrant, resolver, address, and lifecycle from Arc.
reverse_lookupRead a forward-confirmed primary name.
get_account_namesRead the same verified snapshot used by My Names.
get_marketRead verified live listings and marketplace policy.
prepare_registration_requestBuild a wallet-bound request for the live registration API.
prepare_permit_requestExact schema alias for the /api/registration/prepare request.
prepare_approvalPrepare the backwards-compatible registration-controller USDC approval.
prepare_renewalPrepare an unsigned renewal plan.
prepare_market_token_approvalApprove one name NFT for the pinned marketplace.
prepare_market_token_approval_revokeClear one name NFT's token-specific marketplace approval.
prepare_market_usdc_approvalApprove an exact USDC amount for a marketplace purchase.
prepare_market_listingPrepare an unsigned fixed-price listing plan.
prepare_market_buyPrepare an unsigned price- and fee-guarded purchase plan.
prepare_market_cancelCancel a listing, including while the market is paused.
prepare_claim_proceedsClaim seller proceeds, including while the market is paused.
prepare_claim_referralClaim registration referral credits.
prepare_transferSafely transfer one active name NFT.
prepare_market_invalidatePermissionlessly clear one stale raw listing.
Resource: contour://runtime. The Contour MCP never holds a private key, signs, or broadcasts. Reads and unsigned plans use only the canonical Arc HTTPS RPC. Both hosted registration helper names accept rawLabel, explicit normalization acceptance, account, 1-10 years, and an optional request ID, then return an unexecuted /api/registration/prepare POST template. The hosted endpoint needs no npm package; @contour/mcp is a separate, workspace-only stdio server whose contour://manifest resource andprepare_issuer_request challenge/permit templates are a distinct contract.
0xdD69B92f6fAE6da3825b7d126Fe058e78E7F848202baseRegistrar0x0DF136b94f99CAfcC010723b51f8D8EC10A0B90703controller0xFbA7618c929075728b82c69B0B2A8C8d98e4B6A304publicResolver0x3Ea097FFc2089a5Ae24DF46F18d621D007577f5C05reverseRegistrar0x5ecE3F5815813668307BdCe1405B5C765E52683706universalResolver0x3FAD66f9F3Ca165118D5b292Fa6036e273718Bf007marketplace0xD63f77a01De40b3964051bA03F4158cceFf1ca46Use Arc Docs MCP, Circle App Kit, or Circle's x402 SDK alongside the Contour HTTP and MCP surfaces.
https://docs.arc.io/ai/mcpConnect to the official hosted Arc documentation MCP at https://docs.arc.io/mcp.
OFFICIAL DOCS CIRCLE APP KIThttps://docs.arc.io/app-kitOfficial SDK for bridge, swap, send, and unified-balance workflows on Arc.
OFFICIAL DOCS APP KIT INSTALLhttps://docs.arc.io/app-kit/tutorials/installationInstall @circle-fin/app-kit with the official Viem, Ethers, Solana, or Circle Wallets adapter.
OFFICIAL DOCS CIRCLE x402 SDKhttps://developers.circle.com/gateway/nanopayments/references/sdkOfficial @circle-fin/x402-batching buyer and seller SDK reference.
OFFICIAL DOCSAutonomous AI agents on Arc can acquire names using Circle x402 (HTTP 402 Payment Required) nanopayments or direct EIP-712 registration permits without human wallet intervention.
// --- Flow A: Circle x402 Nanopayment ---
// 1. Agent requests registration with x402 payment method
const challenge = await fetch("https://contour-arc.vercel.app/api/registration/prepare", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
rawLabel: "agent-01",
normalizationAccepted: true,
durationYears: 1,
account: agentAddress,
paymentMethod: "x402",
requestId: crypto.randomUUID(),
}),
});
// 2. Server responds with HTTP 402 + PAYMENT-REQUIRED header (Gateway Domain: 26, USDC)
const requirements = challenge.headers.get("PAYMENT-REQUIRED");
// 3. Agent authorizes payment via @circle-fin/x402-batching
const authorization = await exactPaymentClient.authorizePayment(requirements);
// 4. Agent delivers PAYMENT-SIGNATURE to receive the verified registration transaction
const response = await fetch("https://contour-arc.vercel.app/api/registration/prepare", {
method: "POST",
headers: {
"Content-Type": "application/json",
"PAYMENT-SIGNATURE": authorization,
},
body: JSON.stringify({
rawLabel: "agent-01",
normalizationAccepted: true,
durationYears: 1,
account: agentAddress,
requestId: crypto.randomUUID(),
}),
});
const { registrationTransaction, permit, signature } = await response.json();Circle Gateway Domain: 26Canonical Arc Testnet gateway domain for batched nanopayment settlement.
USDC Asset: 0x3600...0000Arc native USDC ERC-20 contract for 6-decimal sub-cent micropayments.
ERC-8004 Agent IdentityBind on-chain agent registration and reputation directly to a verified .contour name.
Contour is an independent application built on Arc Testnet and is not sponsored or endorsed by Circle. Arc is a trademark of Circle Internet Group, Inc. and/or its affiliates.