curl --request POST \
--url https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"organization_id": "<string>"
}
'import requests
url = "https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh"
payload = { "organization_id": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({organization_id: '<string>'})
};
fetch('https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'organization_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh"
payload := strings.NewReader("{\n \"organization_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"organization_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"organization_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"online": true,
"tools_count": 123,
"response_time_ms": 123,
"inferred_type": "<string>",
"type_promoted": true,
"oauth_required": true,
"checked_at": "<string>",
"compliance": {
"ran": true,
"run_id": "<string>",
"test_session_id": "<string>",
"requested_compliance_target": "<string>",
"adcp_version": "<string>",
"badge_eligible": true,
"badge_eligible_adcp_versions": [
"<string>"
],
"overall_status": "<string>",
"storyboards_passing": 123,
"storyboards_total": 123,
"observations_count": 123,
"notices_count": 123,
"error": "<string>"
},
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"retry_after": 123
}{
"error": "<string>"
}Refresh agent snapshot
Re-probe the agent and update its registry health (online, tools_count, response_time_ms), capability snapshot (inferred type, discovered tools), and compliance verdict (storyboard pass/fail counts). Use after fixing your agent so the registry shows fresh data without waiting for the periodic heartbeat (~1h).
Compliance re-run: when the caller owns the agent or is an AAO admin and the capability probe succeeds, the full storyboard suite can run for several minutes on capability-rich agents with a fresh test session, and agent_storyboard_status is updated. Owner-triggered runs use triggered_by: 'owner_test'; admin-triggered support runs use triggered_by: 'manual'. Badge fan-out reissues verification badges off the new run. If the compliance call fails (timeout, OAuth wall, internal error), the capability/health portion still returns successfully — compliance.ran is false with an error string.
Auth: owner of the agent, AAO admin, or static ADMIN_API_KEY.
Rate limits: 60 seconds per agent URL, 30 requests per user per hour.
curl --request POST \
--url https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"organization_id": "<string>"
}
'import requests
url = "https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh"
payload = { "organization_id": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({organization_id: '<string>'})
};
fetch('https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'organization_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh"
payload := strings.NewReader("{\n \"organization_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"organization_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://agenticadvertising.org/api/registry/agents/{encodedUrl}/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"organization_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"online": true,
"tools_count": 123,
"response_time_ms": 123,
"inferred_type": "<string>",
"type_promoted": true,
"oauth_required": true,
"checked_at": "<string>",
"compliance": {
"ran": true,
"run_id": "<string>",
"test_session_id": "<string>",
"requested_compliance_target": "<string>",
"adcp_version": "<string>",
"badge_eligible": true,
"badge_eligible_adcp_versions": [
"<string>"
],
"overall_status": "<string>",
"storyboards_passing": 123,
"storyboards_total": 123,
"observations_count": 123,
"notices_count": 123,
"error": "<string>"
},
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"retry_after": 123
}{
"error": "<string>"
}Authorizations
Bearer token in the Authorization header. Two token types are accepted:
- Organization API key (
sk_...) issued via the dashboard. Org-scoped, long-lived, for server-to-server use. - User JWT obtained via the OAuth 2.1 authorization code flow with PKCE. User-scoped, short-lived. Discover the authorization server at
/.well-known/oauth-authorization-serverand the protected-resource metadata at/.well-known/oauth-protected-resource/api.
Path Parameters
URL-encoded agent URL
"https%3A%2F%2Fvastlint.org%2Fmcp"
Body
Selected organization ID. The caller must own the agent in this organization before its credentials are used.
Response
Snapshot refreshed
Type inferred from discovered tools (sales, creative, signals, governance, etc.) or 'unknown'
True when registry type was upgraded from unknown to inferred_type
Compliance re-run summary. The capability/health portion of the response is independent of this block — a failed compliance run still returns the rest of the snapshot.
Show child attributes
Show child attributes