Discovery
DevTune accepts the
anonymous and service_auth identity types. The MCP server and the REST API keep their own discovery documents for MCP sign-in and devtune login.
Register
registration_id, an identity_assertion for a setup.draft token, a claim_token, and claim_token_expires. An unclaimed registration expires 7 days after it registers, and the next hourly cleanup deletes it with its draft, claim attempts and email.
claim_token and a claim block with the code for the person, in the same shape as claim_attempt below. No assertion is issued until the claim completes.
Each IP address can register 5 times an hour for each type. claim_token is returned once.
Claim
Start a claim for an anonymous registration, or a new code for either type:claim_attempt:
409 claimed_or_in_flight while DevTune finishes it. Only the signed-in DevTune user with that email can complete the claim, and five wrong codes lock the attempt.
The person opens verification_uri, signs in or signs up, and enters user_code. See What the person sees.
Poll for the result:
The claim token can be exchanged once. Pre-claim access tokens stop working when the claim completes.
Access tokens
Exchange an assertion for an access token whenever the last one expires (after an hour):invalid_grant means the registration expired, the assertion was replaced by the claim or reached its one-year expiry, or the API key was revoked; register again.
Revoke one access token with POST https://devtune.ai/oauth2/revoke and token=<access_token>. It always returns 200.
Scopes
The setup draft
GET and PUT https://devtune.ai/api/v2/agent/setup-draft read and replace the draft whole. Over MCP, the same token sees devtune_get_setup_draft, devtune_save_setup_draft, devtune_get_public_agent_picks_catalogue and devtune_get_public_search_platform_catalogue.
setup and job take the bodies PUT /projects/{projectId}/agent-picks/setup and PUT /projects/{projectId}/agent-picks/job accept, with ids from GET /api/v2/agent/catalogue/agent-picks. Under both, visibility.competitors is the one competitor list both products share. A draft cannot choose the AI platforms to probe. Plan limits are applied when the person claims it.
What the person sees
The claim link opens a page in DevTune that asks the person to sign in first, then:- Code. They enter the 6-digit code. Five wrong codes lock the claim; start another to get a new code.
- Team. They select the team the project goes in. Only teams whose settings they manage are listed. A team is shown as unavailable, with the reason, when agent connections aren’t on for it, its plan doesn’t include API access, it doesn’t have Agent Picks for an Agent Picks draft, or its prompt allowance has no room for 5 more prompts. Projects belong to teams, so a person with no team creates one here and comes back to the claim.
- Name and domain. They confirm the product name and the domain from the draft, or enter them. DevTune always creates a new project; a name another project has gets a numbered address.
- Review. DevTune fills what the draft left empty: it writes the brand context from the domain, and suggests prompts when the draft has fewer than 5. The person edits the brand context, drops competitors, and selects 5 to 10 prompts within the team’s prompt allowance. Agents the team’s plan doesn’t include are dropped from the Agent Picks setup. Under
both, Agent Picks tests the competitors on the list whose domains match its tools, so a competitor dropped here is dropped from both. - Connect agent. DevTune creates the project as the new-project setup does. A team that hasn’t had a trial starts its no-card trial; a team with a plan keeps it. DevTune runs the first AI Search probe and requests the Agent Picks starter test, then opens the project. Your next poll returns the access token.