Invoket
The checks your agent runs before it acts: verify a bank account, a phone number, a law in force, the weather or a vehicle — computed from official sources, with provenance in every response. You only pay for answers.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Live 402 challenge
Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.
{
"error": "PAYMENT-SIGNATURE header is required. Free trial on request: send the header `X-402-Trial: 1` on this call and on the signed retry to have a free-trial option added to accepts[].",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
"amount": "10000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 60
}
],
"resource": {
"url": "https://api.invoket.com/legal/deadline",
"tags": [
"compliance",
"verification",
"fraud-prevention",
"regulatory-data",
"weather"
],
"iconUrl": "https://invoket.com/apple-touch-icon.png",
"mimeType": "application/json",
"description": "Before your agent commits to a filing date, a notice period or a contractual term: the exact due date of a time limit under an explicitly chosen computation regime — calendar days, calendar days with rollover, business days (Mon-Sat), working days (Mon-Fri), clear days (jours francs), months or years — with every weekend and public holiday it skipped, each one named, the end-of-month and next-working-day rules it applied, and the step-by-step reasoning. Holiday calendars for 10 countries: France from the official State dataset, the nine others from a community reference dataset, and every answer says which authority it used. The regime is required and never inferred from the legal matter.",
"serviceName": "Invoket"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"schema": {
"type": "object",
"required": [
"duration",
"regime",
"start"
],
"properties": {
"start": {
"type": "string",
"description": "Date of the act that starts the term, strict ISO calendar format YYYY-MM-DD (zero-padded: 2026-05-06, not 2026-5-6)"
},
"regime": {
"type": "string",
"description": "Computation regime, REQUIRED and never inferred from the legal matter — one of seven closed values. 'calendar_days': every day counts, no rollover (2026-05-06 + 5 = 2026-05-11). 'calendar_days_with_rollover': same count, due date pushed to the next working day when it falls on a weekend or public holiday. 'business_days': Monday to Saturday, public holidays excluded. 'working_days': Monday to Friday, public holidays excluded (2026-05-06 + 5 = 2026-05-15). 'clear_days' (jours francs): neither the day of the act nor the due day counts, then rollover. 'months': same day-of-month, end-of-month rule then rollover (2026-01-31 + 1 month = 2026-02-28, a Saturday, rolled over to 2026-03-02). 'years': the same rules in years. Every regime except 'calendar_days' consults a holiday calendar and therefore requires 'country'"
},
"country": {
"type": "string",
"description": "Optional only for the 'calendar_days' regime: ISO 3166-1 alpha-2 code of the holiday calendar to use, required by every regime except 'calendar_days'. Covered: FR (official calendar published by the French State), plus BE, DE, ES, IE, IT, LU, NL, PL and PT (community reference dataset). Any other code is refused with 400 COUNTRY_NOT_COVERED listing the covered ones — a deadline is never computed on a guessed calendar. An optional 'subdivision' selects a regional calendar: FR-ALSACE-MOSELLE, FR-BL, FR-GF, FR-GP, FR-MF, FR-MQ, FR-NC, FR-PF, FR-PM, FR-RE, FR-WF, FR-YT"
},
"duration": {
"type": "string",
"description": "Length of the term, a positive integer. Its unit follows from the regime (days, months or years) and is bounded: 3650 days, 120 months, 10 years"
}
}
},
"headers": {
"accept": "application/json"
},
"queryParams": {
"start": "2026-05-06",
"regime": "working_days",
"country": "FR",
"duration": "5"
}
},
"output": {
"type": "json",
"schema": {
"type": "object",
"required": [
"data",
"provenance"
],
"properties": {
"data": {
"type": "object",
"required": [
"calendar_consulted",
"due_date",
"duration",
"legal_basis",
"limits",
"regime",
"rollover_applied",
"skipped_days",
"start_date",
"start_date_effective",
"steps",
"unit"
],
"properties": {
"unit": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "string"
},
"description": "The computation step by step, in order, so the due date can be reproduced by hand. A step cites an article ONLY where the service has computation rules on record — today France alone (articles 641 and 642 of the Code de procédure civile). For any other country, and when no country is given, the same steps are served WITHOUT any citation, exactly as 'legal_basis' is then empty and explained by 'legal_basis_note': the regime you chose was applied to the requested holiday calendar as such. A missing citation says nothing about the dates, which are computed identically either way — it only means the service does not attach that computation to a national rule it carries"
},
"limits": {
"type": "array",
"items": {
"type": "string"
}
},
"regime": {
"type": "string"
},
"calendar": {
"type": "object",
"required": [
"authority",
"country",
"window"
],
"properties": {
"as_of": {
"type": "string"
},
"window": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
}
},
"description": "Period the loaded calendar actually covers, both bounds INCLUSIVE and derived from the calendar years actually loaded, never declared: whole years, from 1 January of the first covered year to 31 December of the last one, so an ordinary late-December day with no holiday in it is covered like any other. A year with no holiday loaded is not covered and stops the window there. A start or due date outside the window returns 404 OUT_OF_COVERAGE_WINDOW (not billed): days whose holiday status is unknown are never counted"
},
"country": {
"type": "string"
},
"authority": {
"type": "string",
"description": "Authority of the holiday calendar actually used: 'official' — published by the State, today France only (api.gouv.fr / Etalab) — or 'community_dataset' — an open reference dataset (Nager.Date) with no official standing. Carried on every answer: a community dataset never silently becomes published law"
},
"subdivision": {
"type": "string"
}
}
},
"due_date": {
"type": "string"
},
"duration": {
"type": "integer"
},
"start_date": {
"type": "string"
},
"legal_basis": {
"type": "array",
"items": {
"type": "object",
"required": [
"article",
"available_in_corpus",
"code",
"jurisdiction",
"rule"
],
"properties": {
"code": {
"type": "string"
},
"rule": {
"type": "string"
},
"article": {
"type": "string"
},
"jurisdiction": {
"type": "string"
},
"available_in_corpus": {
"type": "boolean",
"description": "Whether /legal/article can serve the text of this cited article today. The citation is exact either way; false only says the ingested corpus does not carry that code yet, and 'legal_basis_note' says so"
}
}
}
},
"days_counted": {
"type": "integer",
"description": "Number of days that actually counted toward the term. Absent for the months and years regimes, where nothing is counted in days"
},
"skipped_days": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"kind",
"name"
],
"properties": {
"date": {
"type": "string"
},
"kind": {
"type": "string",
"description": "Why this day was skipped: 'weekend' or 'public_holiday'. Public holidays carry their published label in 'name' (English) and 'name_local'"
},
"name": {
"type": "string"
},
"name_local": {
"type": "string"
}
}
}
},
"rollover_reason": {
"type": "string",
"description": "Day that caused the due date to be postponed (weekend or named public holiday), present only when 'rollover_applied' is true"
},
"legal_basis_note": {
"type": "string"
},
"rollover_applied": {
"type": "boolean",
"description": "Whether the due date was postponed to the next working day (article 642 of the French Code de procédure civile), with 'rollover_reason' naming the day that caused it. Applies to the rollover, clear-days, months and years regimes — never to plain 'calendar_days'"
},
"calendar_consulted": {
"type": "boolean"
},
"start_date_effective": {
"type": "string",
"description": "First day actually counted, after the start-day rule (article 641 of the French Code de procédure civile: the day of the act is not counted). Equal to 'start' for the months and years regimes, whose day-of-month is the anchor of the computation"
}
}
},
"provenance": {
"type": "object",
"required": [
"fetched_at",
"freshness",
"source"
],
"properties": {
"source": {
"type": "string"
},
"freshness": {
"type": "object",
"required": [
"as_of",
"kind"
],
"properties": {
"kind": {
"type": "string"
},
"as_of": {
"type": "string"
}
}
},
"fetched_at": {
"type": "string"
}
}
}
}
},
"example": {
"data": {
"unit": "days",
"steps": [
"day of the act 2026-05-06 is not counted (art. 641 CPC): counting starts on the next day",
"5 working days (Monday to Friday, public holidays excluded) counted: 2026-05-07 to 2026-05-15, 4 day(s) skipped",
"regime `working_days` applies no rollover: due date stands at 2026-05-15"
],
"limits": [
"The computation regime is chosen by the caller and never inferred from the legal matter: this endpoint dates a term, it does not advise which term or which regime applies.",
"Computation is in civil days, without time of day: hourly time limits, court closing hours, judicial vacations and non-working days set by contract or collective agreement are out of scope.",
"Holiday calendars carry their own authority: `official` is the calendar published by the State, `community_dataset` is an open dataset used as a reference and has no official standing."
],
"regime": "working_days",
"calendar": {
"as_of": "2026-07-28",
"window": {
"to": "2029-12-31",
"from": "2015-01-01"
},
"country": "FR",
"authority": "official"
},
"due_date": "2026-05-15",
"duration": 5,
"start_date": "2026-05-06",
"legal_basis": [
{
"code": "code-de-procedure-civile",
"rule": "the day of the act is not counted; a term expressed in months or years expires on the day bearing the same day-of-month",
"article": "641",
"jurisdiction": "FR",
"available_in_corpus": false
},
{
"code": "code-de-procedure-civile",
"rule": "a term expiring on a Saturday, a Sunday, a public holiday or a non-working day is extended to the next working day",
"article": "642",
"jurisdiction": "FR",
"available_in_corpus": false
}
],
"days_counted": 5,
"skipped_days": [
{
"date": "2026-05-08",
"kind": "public_holiday",
"name": "Victory in Europe Day",
"name_local": "8 mai"
},
{
"date": "2026-05-09",
"kind": "weekend",
"name": "Sat"
},
{
"date": "2026-05-10",
"kind": "weekend",
"name": "Sun"
},
{
"date": "2026-05-14",
"kind": "public_holiday",
"name": "Ascension Day",
"name_local": "Ascension"
}
],
"legal_basis_note": "text `code-de-procedure-civile` is not part of the ingested corpus today: the citation is exact, but `/legal/article` cannot serve its text yet",
"rollover_applied": false,
"calendar_consulted": true,
"start_date_effective": "2026-05-07"
},
"provenance": {
"source": "official-holiday-calendars",
"freshness": {
"kind": "snapshot",
"as_of": "2026-07-28T00:00:00Z"
},
"fetched_at": "2026-07-28T09:30:00Z"
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"GET",
"HEAD",
"DELETE"
],
"type": "string"
},
"schema": {
"type": "object"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"queryParams": {
"type": "object",
"required": [
"duration",
"regime",
"start"
],
"properties": {
"start": {
"type": "string",
"description": "Date of the act that starts the term, strict ISO calendar format YYYY-MM-DD (zero-padded: 2026-05-06, not 2026-5-6)"
},
"regime": {
"type": "string",
"description": "Computation regime, REQUIRED and never inferred from the legal matter — one of seven closed values. 'calendar_days': every day counts, no rollover (2026-05-06 + 5 = 2026-05-11). 'calendar_days_with_rollover': same count, due date pushed to the next working day when it falls on a weekend or public holiday. 'business_days': Monday to Saturday, public holidays excluded. 'working_days': Monday to Friday, public holidays excluded (2026-05-06 + 5 = 2026-05-15). 'clear_days' (jours francs): neither the day of the act nor the due day counts, then rollover. 'months': same day-of-month, end-of-month rule then rollover (2026-01-31 + 1 month = 2026-02-28, a Saturday, rolled over to 2026-03-02). 'years': the same rules in years. Every regime except 'calendar_days' consults a holiday calendar and therefore requires 'country'"
},
"country": {
"type": "string",
"description": "Optional only for the 'calendar_days' regime: ISO 3166-1 alpha-2 code of the holiday calendar to use, required by every regime except 'calendar_days'. Covered: FR (official calendar published by the French State), plus BE, DE, ES, IE, IT, LU, NL, PL and PT (community reference dataset). Any other code is refused with 400 COUNTRY_NOT_COVERED listing the covered ones — a deadline is never computed on a guessed calendar. An optional 'subdivision' selects a regional calendar: FR-ALSACE-MOSELLE, FR-BL, FR-GF, FR-GP, FR-MF, FR-MQ, FR-NC, FR-PF, FR-PM, FR-RE, FR-WF, FR-YT"
},
"duration": {
"type": "string",
"description": "Length of the term, a positive integer. Its unit follows from the regime (days, months or years) and is bounded: 3650 days, 120 months, 10 years"
}
}
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
},
"x402Version": 2
}Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.01 USDC on Base to 0x4465…128ee. The signed payment is good for 1 minute.
- Paid to
- 0x4465…128ee
- USD Coin contract
- 0x8335…02913
- Payment window
- 1 minute
- As published
- 10000 smallest units
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- Ae1uow…PmMN6
- Token contract
- EPjFWd…TDt1v
- Payment window
- 1 minute
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
"amount": "10000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 60
},
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"domain": "invoket.com",
"feePayer": "GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"
},
"payTo": "Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6",
"amount": "10000",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 60
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"headers": {
"accept": "application/json"
},
"queryParams": {
"start": "2026-05-06",
"regime": "working_days",
"country": "FR",
"duration": "5"
}
},
"output": {
"type": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"GET",
"HEAD",
"DELETE"
],
"type": "string"
},
"schema": {
"type": "object"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"queryParams": {
"type": "object",
"required": [
"duration",
"regime",
"start"
],
"properties": {
"start": {
"type": "string"
},
"regime": {
"type": "string"
},
"country": {
"type": "string"
},
"duration": {
"type": "string"
}
}
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-08-30 12:36Z
- Last indexed by Roundhouse
- 2026-09-08 19:10Z
- Last enriched (probe, favicon, geo)
- 2026-09-21 20:45Z
- x402 version
- 2
- Max timeout
- 60s
- Liveness probe
- HTTP 402
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 11 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service Invoket and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=Invoket' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://api.invoket.com/legal/deadline, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.